diff --git a/packages/cli/src/ui/commands/approvalModeCommand.test.ts b/packages/cli/src/ui/commands/approvalModeCommand.test.ts index 2cbae6319..c036bceda 100644 --- a/packages/cli/src/ui/commands/approvalModeCommand.test.ts +++ b/packages/cli/src/ui/commands/approvalModeCommand.test.ts @@ -146,6 +146,25 @@ describe('approvalModeCommand', () => { }); }); + describe('untrusted folder handling', () => { + it('should return error when setApprovalMode throws (e.g., untrusted folder)', async () => { + const errorMessage = + 'Cannot enable privileged approval modes in an untrusted folder.'; + mockSetApprovalMode.mockImplementation(() => { + throw new Error(errorMessage); + }); + + const result = (await approvalModeCommand.action?.( + mockContext, + 'yolo', + )) as MessageActionReturn; + + expect(result.type).toBe('message'); + expect(result.messageType).toBe('error'); + expect(result.content).toBe(errorMessage); + }); + }); + it('should not have subcommands', () => { expect(approvalModeCommand.subCommands).toBeUndefined(); }); diff --git a/packages/cli/src/ui/commands/approvalModeCommand.ts b/packages/cli/src/ui/commands/approvalModeCommand.ts index c53a4184d..f41e4b1cf 100644 --- a/packages/cli/src/ui/commands/approvalModeCommand.ts +++ b/packages/cli/src/ui/commands/approvalModeCommand.ts @@ -63,7 +63,15 @@ export const approvalModeCommand: SlashCommand = { // Set the mode for current session only (not persisted) const { config } = context.services; if (config) { - config.setApprovalMode(mode); + try { + config.setApprovalMode(mode); + } catch (e) { + return { + type: 'message', + messageType: 'error', + content: (e as Error).message, + }; + } } return {