diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index 6d2e397a68d9..f318aaaa9538 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -242,6 +242,21 @@ export async function main(argv: string[]): Promise { }); } + // Handle --transient option + if (args['transient']) { + const tempParentDir = randomPath(tmpdir(), 'vscode'); + const tempUserDataDir = join(tempParentDir, 'data'); + const tempExtensionsDir = join(tempParentDir, 'extensions'); + + addArg(argv, '--user-data-dir', tempUserDataDir); + addArg(argv, '--extensions-dir', tempExtensionsDir); + addArg(argv, '--disable-updates'); + + if (args.verbose) { + console.log(`Warning: state is temporarily stored in: "${tempParentDir}"`); + } + } + const hasReadStdinArg = args._.some(arg => arg === '-') || args.chat?._.some(arg => arg === '-'); if (hasReadStdinArg) { // remove the "-" argument when we read from stdin diff --git a/src/vs/platform/environment/common/argv.ts b/src/vs/platform/environment/common/argv.ts index 2ffbb9773bcd..b097b84feed4 100644 --- a/src/vs/platform/environment/common/argv.ts +++ b/src/vs/platform/environment/common/argv.ts @@ -107,6 +107,7 @@ export interface NativeParsedArgs { 'install-source'?: string; 'add-mcp'?: string[]; 'disable-updates'?: boolean; + 'transient'?: boolean; 'use-inmemory-secretstorage'?: boolean; 'password-store'?: string; 'disable-workspace-trust'?: boolean; diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index 342718df668b..91cce390ae14 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -168,6 +168,7 @@ export const OPTIONS: OptionDescriptions> = { 'skip-welcome': { type: 'boolean' }, 'disable-telemetry': { type: 'boolean' }, 'disable-updates': { type: 'boolean' }, + 'transient': { type: 'boolean' }, 'use-inmemory-secretstorage': { type: 'boolean', deprecates: ['disable-keytar'] }, 'password-store': { type: 'string' }, 'disable-workspace-trust': { type: 'boolean' },