From 707dc5fecc4f54e337a1183170f1f0a8a956af38 Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Mon, 16 Mar 2026 19:11:12 -0400 Subject: [PATCH] fix(claude-code): remove incorrect agent_visible filter on user message (#7931) Signed-off-by: Adrian Cole Co-authored-by: Adrian Cole --- crates/goose/src/providers/claude_code.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/goose/src/providers/claude_code.rs b/crates/goose/src/providers/claude_code.rs index 503c28e5c7..1af3f695fd 100644 --- a/crates/goose/src/providers/claude_code.rs +++ b/crates/goose/src/providers/claude_code.rs @@ -275,7 +275,7 @@ pub struct ClaudeCodeProvider { } impl ClaudeCodeProvider { - /// Build content blocks from the last user message only — the CLI maintains + /// Build content blocks from the last user message only. The CLI maintains /// conversation context internally per session_id. fn last_user_content_blocks(&self, messages: &[Message]) -> Vec { let msgs = match messages.iter().rev().find(|m| m.role == Role::User) { @@ -283,7 +283,7 @@ impl ClaudeCodeProvider { None => messages, }; let mut blocks: Vec = Vec::new(); - for message in msgs.iter().filter(|m| m.is_agent_visible()) { + for message in msgs { let prefix = match message.role { Role::User => "Human: ", Role::Assistant => "Assistant: ", @@ -1049,6 +1049,11 @@ mod tests { &[json!({"type":"text","text":"Human: [tool_result id=call_123] file1.txt\nfile2.txt"})] ; "tool_response" )] + #[test_case( + vec![Message::new(Role::User, 0, vec![MessageContent::text("hidden input")]).user_only()], + &[json!({"type":"text","text":"Human: hidden input"})] + ; "user_only_message_not_dropped" + )] fn test_last_user_content_blocks(messages: Vec, expected: &[Value]) { let provider = make_provider(); let blocks = provider.last_user_content_blocks(&messages);