From 105fc20450c9e3961dcc6cd96c66015acc8b4d41 Mon Sep 17 00:00:00 2001 From: Simon Sickle <51972200+simonsickle@users.noreply.github.com> Date: Sat, 8 Nov 2025 15:34:47 -0500 Subject: [PATCH] Fix Claude Code provider to default to Auto mode (#5638) Make Claude Code provider consistent with rest of codebase by using .unwrap_or(GooseMode::Auto) when GOOSE_MODE is not set. Previously, when GOOSE_MODE was not configured, Claude CLI was invoked without permission flags, causing it to ask for permission on every file edit. --- crates/goose/src/providers/claude_code.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/crates/goose/src/providers/claude_code.rs b/crates/goose/src/providers/claude_code.rs index 6dc0c0960217..7ed9963377a6 100644 --- a/crates/goose/src/providers/claude_code.rs +++ b/crates/goose/src/providers/claude_code.rs @@ -112,14 +112,16 @@ impl ClaudeCodeProvider { /// Parse the JSON response from claude CLI fn apply_permission_flags(cmd: &mut Command) -> Result<(), ProviderError> { let config = Config::global(); - match config.get_goose_mode() { - Ok(GooseMode::Auto) => { + let goose_mode = config.get_goose_mode().unwrap_or(GooseMode::Auto); + + match goose_mode { + GooseMode::Auto => { cmd.arg("--dangerously-skip-permissions"); } - Ok(GooseMode::SmartApprove) => { + GooseMode::SmartApprove => { cmd.arg("--permission-mode").arg("acceptEdits"); } - Ok(GooseMode::Approve) => { + GooseMode::Approve => { return Err(ProviderError::RequestFailed( "\n\n\n### NOTE\n\n\n \ Claude Code CLI provider does not support Approve mode.\n \ @@ -128,12 +130,9 @@ impl ClaudeCodeProvider { .to_string(), )); } - Ok(GooseMode::Chat) => { + GooseMode::Chat => { // Chat mode doesn't need permission flags } - Err(_) => { - // Default behavior if mode is not set - } } Ok(()) }