From c9e1265de0febf52615877bbdf1b953a05781de8 Mon Sep 17 00:00:00 2001 From: Andrew Garrett Date: Sat, 30 Aug 2025 01:59:20 +1000 Subject: [PATCH] Fix backwards-compatibility for allowedTools -> tools.allowed (#7384) --- packages/cli/src/config/settings.test.ts | 21 +++++++++++++++++++++ packages/cli/src/config/settings.ts | 1 + 2 files changed, 22 insertions(+) diff --git a/packages/cli/src/config/settings.test.ts b/packages/cli/src/config/settings.test.ts index 09655499e5..3e8ea58abe 100644 --- a/packages/cli/src/config/settings.test.ts +++ b/packages/cli/src/config/settings.test.ts @@ -543,6 +543,27 @@ describe('Settings Loading and Merging', () => { }); }); + it('should rewrite allowedTools to tools.allowed during migration', () => { + (mockFsExistsSync as Mock).mockImplementation( + (p: fs.PathLike) => p === USER_SETTINGS_PATH, + ); + const legacySettingsContent = { + allowedTools: ['fs', 'shell'], + }; + (fs.readFileSync as Mock).mockImplementation( + (p: fs.PathOrFileDescriptor) => { + if (p === USER_SETTINGS_PATH) + return JSON.stringify(legacySettingsContent); + return '{}'; + }, + ); + + const settings = loadSettings(MOCK_WORKSPACE_DIR); + + expect(settings.merged.tools?.allowed).toEqual(['fs', 'shell']); + expect((settings.merged as TestSettings)['allowedTools']).toBeUndefined(); + }); + it('should correctly merge and migrate legacy array properties from multiple scopes', () => { (mockFsExistsSync as Mock).mockReturnValue(true); const legacyUserSettings = { diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts index 6cf79312dc..1fde0c0f8b 100644 --- a/packages/cli/src/config/settings.ts +++ b/packages/cli/src/config/settings.ts @@ -64,6 +64,7 @@ const MIGRATION_MAP: Record = { fileFiltering: 'context.fileFiltering', sandbox: 'tools.sandbox', shouldUseNodePtyShell: 'tools.usePty', + allowedTools: 'tools.allowed', coreTools: 'tools.core', excludeTools: 'tools.exclude', toolDiscoveryCommand: 'tools.discoveryCommand',