From b0e3be97d1173ac16367a9e659e3aa4a9e844c73 Mon Sep 17 00:00:00 2001 From: cpacker Date: Mon, 1 Dec 2025 19:18:47 -0800 Subject: [PATCH] fix: patch autoapprovals for alt toolsets --- src/permissions/checker.ts | 15 +++++++++++--- src/permissions/mode.ts | 42 ++++++++++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/permissions/checker.ts b/src/permissions/checker.ts index 9f85693..c48fc19 100644 --- a/src/permissions/checker.ts +++ b/src/permissions/checker.ts @@ -311,17 +311,26 @@ function getDefaultDecision(toolName: string): PermissionDecision { "BashOutput", "ExitPlanMode", "LS", - // Codex toolset - tools that don't require approval + // Codex toolset (snake_case) - tools that don't require approval "read_file", "list_dir", "grep_files", "update_plan", - // Gemini toolset - tools that don't require approval (using server names) + // Codex toolset (PascalCase) - tools that don't require approval + "ReadFile", + "ListDir", + "GrepFiles", + "UpdatePlan", + // Gemini toolset (snake_case) - tools that don't require approval "list_directory", "search_file_content", "write_todos", "read_many_files", - // Note: read_file, glob already covered above (shared across toolsets) + // Gemini toolset (PascalCase) - tools that don't require approval + "ListDirectory", + "SearchFileContent", + "WriteTodos", + "ReadManyFiles", ]; if (autoAllowTools.includes(toolName)) { diff --git a/src/permissions/mode.ts b/src/permissions/mode.ts index 1902bd3..b37e4ff 100644 --- a/src/permissions/mode.ts +++ b/src/permissions/mode.ts @@ -116,16 +116,45 @@ class PermissionModeManager { return null; case "plan": { - // Read-only mode: allow analysis tools, deny modification tools + // Read-only mode: allow analysis tools, deny everything else const allowedInPlan = [ + // Anthropic toolset "Read", "Glob", "Grep", "NotebookRead", "TodoWrite", + // Codex toolset (snake_case) + "read_file", + "list_dir", + "grep_files", + "update_plan", + // Codex toolset (PascalCase) + "ReadFile", + "ListDir", + "GrepFiles", + "UpdatePlan", + // Gemini toolset (snake_case) + "list_directory", + "search_file_content", + "write_todos", + "read_many_files", + // Gemini toolset (PascalCase) + "ListDirectory", + "SearchFileContent", + "WriteTodos", + "ReadManyFiles", + ]; + const writeTools = [ + // Anthropic toolset + "Write", + "Edit", + "MultiEdit", + "NotebookEdit", + // Codex toolset + "apply_patch", + "ApplyPatch", ]; - const writeTools = ["Write", "Edit", "MultiEdit", "NotebookEdit"]; - const deniedInPlan = ["Bash", "WebFetch"]; if (allowedInPlan.includes(toolName)) { return "allow"; @@ -140,13 +169,10 @@ class PermissionModeManager { if (planFilePath && targetPath && targetPath === planFilePath) { return "allow"; } - return "deny"; } - if (deniedInPlan.includes(toolName)) { - return "deny"; - } - return null; + // Everything else denied in plan mode + return "deny"; } case "default":