diff --git a/src/plugin-config.test.ts b/src/plugin-config.test.ts index c0dde045b..125062e6e 100644 --- a/src/plugin-config.test.ts +++ b/src/plugin-config.test.ts @@ -115,6 +115,23 @@ describe("mergeConfigs", () => { expect(result.disabled_hooks).toContain("session-recovery"); expect(result.disabled_hooks?.length).toBe(3); }); + + it("should union disabled_tools from base and override without duplicates", () => { + const base: OhMyOpenCodeConfig = { + disabled_tools: ["todowrite", "interactive_bash"], + }; + + const override: OhMyOpenCodeConfig = { + disabled_tools: ["interactive_bash", "look_at"], + }; + + const result = mergeConfigs(base, override); + + expect(result.disabled_tools).toContain("todowrite"); + expect(result.disabled_tools).toContain("interactive_bash"); + expect(result.disabled_tools).toContain("look_at"); + expect(result.disabled_tools?.length).toBe(3); + }); }); }); diff --git a/src/plugin-config.ts b/src/plugin-config.ts index e1d8afb0d..c9f93f10f 100644 --- a/src/plugin-config.ts +++ b/src/plugin-config.ts @@ -146,6 +146,12 @@ export function mergeConfigs( ...(override.disabled_skills ?? []), ]), ], + disabled_tools: [ + ...new Set([ + ...(base.disabled_tools ?? []), + ...(override.disabled_tools ?? []), + ]), + ], claude_code: deepMerge(base.claude_code, override.claude_code), }; }