From f8138262fa7cc5e6c2f8f5af8baff2efcd4888e1 Mon Sep 17 00:00:00 2001 From: Pyush Sinha Date: Thu, 8 Jan 2026 11:48:03 -0800 Subject: [PATCH] fix(cli): disableYoloMode shouldn't enforce default approval mode against args (#16155) --- packages/cli/src/config/config.test.ts | 39 ++++++++++++++++++++++++++ packages/cli/src/config/config.ts | 1 - 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index 465ed90bca..d3040aabf0 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -2413,6 +2413,45 @@ describe('Policy Engine Integration in loadCliConfig', () => { }); }); +describe('loadCliConfig disableYoloMode', () => { + beforeEach(() => { + vi.resetAllMocks(); + vi.mocked(os.homedir).mockReturnValue('/mock/home/user'); + vi.stubEnv('GEMINI_API_KEY', 'test-api-key'); + vi.spyOn(ExtensionManager.prototype, 'getExtensions').mockReturnValue([]); + vi.mocked(isWorkspaceTrusted).mockReturnValue({ + isTrusted: true, + source: undefined, + }); + }); + + afterEach(() => { + vi.unstubAllEnvs(); + vi.restoreAllMocks(); + }); + + it('should allow auto_edit mode even if yolo mode is disabled', async () => { + process.argv = ['node', 'script.js', '--approval-mode=auto_edit']; + const argv = await parseArguments({} as Settings); + const settings: Settings = { + security: { disableYoloMode: true }, + }; + const config = await loadCliConfig(settings, 'test-session', argv); + expect(config.getApprovalMode()).toBe(ApprovalMode.AUTO_EDIT); + }); + + it('should throw if YOLO mode is attempted when disableYoloMode is true', async () => { + process.argv = ['node', 'script.js', '--yolo']; + const argv = await parseArguments({} as Settings); + const settings: Settings = { + security: { disableYoloMode: true }, + }; + await expect(loadCliConfig(settings, 'test-session', argv)).rejects.toThrow( + 'Cannot start in YOLO mode since it is disabled by your admin', + ); + }); +}); + describe('loadCliConfig secureModeEnabled', () => { beforeEach(() => { vi.resetAllMocks(); diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 7ca8d2934d..bc185ffdf8 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -520,7 +520,6 @@ export async function loadCliConfig( 'Cannot start in YOLO mode since it is disabled by your admin', ); } - approvalMode = ApprovalMode.DEFAULT; } else if (approvalMode === ApprovalMode.YOLO) { debugLogger.warn( 'YOLO mode is enabled. All tool calls will be automatically approved.',