From 40d0a4b99575c2a1024cb19a755e1c112157d32c Mon Sep 17 00:00:00 2001 From: xintaofei Date: Fri, 3 Apr 2026 22:54:48 +0800 Subject: [PATCH] fix: disable "auto" config option for Claude Code to prevent errors Claude Code errors when setting config options to "auto". Strip "auto" values from config options returned to frontend and skip set requests with "auto" value for Claude Code agent. Co-Authored-By: Claude Opus 4.6 (1M context) --- src-tauri/src/acp/connection.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src-tauri/src/acp/connection.rs b/src-tauri/src/acp/connection.rs index 5f1af15..146216d 100644 --- a/src-tauri/src/acp/connection.rs +++ b/src-tauri/src/acp/connection.rs @@ -477,6 +477,24 @@ fn ensure_codex_mode_option(options: &mut Vec) { }); } +/// Claude Code does not support the "auto" value for config options. +/// Strip any option whose value is "auto" from the flat and grouped lists, +/// and update `current_value` to the first remaining option when it was "auto". +fn strip_auto_config_values(options: &mut Vec) { + for opt in options.iter_mut() { + let SessionConfigKindInfo::Select(ref mut select) = opt.kind; + select.options.retain(|o| o.value != "auto"); + for group in &mut select.groups { + group.options.retain(|o| o.value != "auto"); + } + if select.current_value == "auto" { + if let Some(first) = select.options.first() { + select.current_value = first.value.clone(); + } + } + } +} + fn emit_session_config_options_values( connection_id: &str, emitter: &EventEmitter, @@ -487,6 +505,9 @@ fn emit_session_config_options_values( if agent_type == AgentType::Codex { ensure_codex_mode_option(&mut mapped); } + if agent_type == AgentType::ClaudeCode { + strip_auto_config_values(&mut mapped); + } crate::web::event_bridge::emit_event( emitter, "acp://event", @@ -1072,6 +1093,9 @@ async fn set_session_config_option( config_id: String, value_id: String, ) -> Result<(), sacp::Error> { + if agent_type == AgentType::ClaudeCode && value_id == "auto" { + return Ok(()); + } let req = SetSessionConfigOptionRequest::new(session_id.clone(), config_id, value_id); let untyped_req = UntypedMessage::new("session/set_config_option", req).map_err(|e| { sacp::util::internal_error(format!("Failed to build config option request: {e}"))