From ff705ec286f33e7adad351207b92d6249b2ac01a Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Wed, 10 Sep 2025 12:28:29 -0600 Subject: [PATCH] fix(settings): use union merge for excludeTools (#7842) --- packages/cli/src/config/settings.test.ts | 7 +++++-- packages/cli/src/config/settingsSchema.ts | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/config/settings.test.ts b/packages/cli/src/config/settings.test.ts index ac8882922c..b9f605f263 100644 --- a/packages/cli/src/config/settings.test.ts +++ b/packages/cli/src/config/settings.test.ts @@ -428,8 +428,11 @@ describe('Settings Loading and Merging', () => { '/workspace/dir', ]); - // Verify excludeTools are overwritten by workspace - expect(settings.merged.tools?.exclude).toEqual(['workspace-tool']); + // Verify excludeTools are concatenated and de-duped + expect(settings.merged.tools?.exclude).toEqual([ + 'user-tool', + 'workspace-tool', + ]); // Verify excludedProjectEnvVars are concatenated and de-duped expect(settings.merged.advanced?.excludedEnvVars).toEqual( diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 4d2258b213..be8996fa61 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -662,6 +662,7 @@ const SETTINGS_SCHEMA = { default: undefined as string[] | undefined, description: 'Tool names to exclude from discovery.', showInDialog: false, + mergeStrategy: MergeStrategy.UNION, }, discoveryCommand: { type: 'string',