From 172dd91a19a120c2504ecafa916aa4c45b517a77 Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Sun, 21 Dec 2025 18:55:49 -0700 Subject: [PATCH] fix: gate edit_file by diffEnabled --- src/core/assistant-message/presentAssistantMessage.ts | 11 ++++++++++- src/core/tools/__tests__/validateToolUse.spec.ts | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/core/assistant-message/presentAssistantMessage.ts b/src/core/assistant-message/presentAssistantMessage.ts index 33c769995a..037f14ccce 100644 --- a/src/core/assistant-message/presentAssistantMessage.ts +++ b/src/core/assistant-message/presentAssistantMessage.ts @@ -751,7 +751,16 @@ export async function presentAssistantMessage(cline: Task) { block.name as ToolName, mode ?? defaultModeSlug, customModes ?? [], - { apply_diff: cline.diffEnabled }, + { + // diffEnabled should gate ALL edit operations (both XML legacy apply_diff and native edit_file) + apply_diff: cline.diffEnabled, + edit_file: cline.diffEnabled, + edit_file_roo: cline.diffEnabled, + edit_file_anthropic: cline.diffEnabled, + edit_file_grok: cline.diffEnabled, + edit_file_gemini: cline.diffEnabled, + edit_file_codex: cline.diffEnabled, + }, block.params, stateExperiments, includedTools, diff --git a/src/core/tools/__tests__/validateToolUse.spec.ts b/src/core/tools/__tests__/validateToolUse.spec.ts index 87729e0731..7ec1886320 100644 --- a/src/core/tools/__tests__/validateToolUse.spec.ts +++ b/src/core/tools/__tests__/validateToolUse.spec.ts @@ -167,6 +167,11 @@ describe("mode-validator", () => { // Even in code mode which allows all tools, disabled requirement should take precedence expect(isToolAllowedForMode("write_to_file", codeMode, [], requirements)).toBe(false) }) + + it("can gate native unified edit tool (edit_file)", () => { + const requirements = { edit_file: false } + expect(isToolAllowedForMode("edit_file", codeMode, [], requirements)).toBe(false) + }) }) })