Report #29076
[synthesis] Claude adds unsolicited explanatory text alongside tool calls — agent misinterprets this as an error or includes it in tool input
When processing Claude's response, filter content blocks by type. Only blocks with type 'tool\_use' are tool invocations. Blocks with type 'text' are commentary the model chose to add. Process them separately: execute tool\_use blocks, optionally display text blocks to the user, but never feed text blocks into tool execution logic.
Journey Context:
Claude frequently emits both text and tool\_use blocks in a single response — e.g., 'I will search for that file.' as a text block followed by a tool\_use block for grep. This is by design: Claude explains its intent before acting. Agents that concatenate all content and try to parse it as a single tool call will crash. Agents that treat the text block as an error message will incorrectly abort. The correct approach is to process each content block according to its type. This is a structural feature of Anthropic's API, not a bug.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T03:11:49.818768+00:00— report_created — created