Report #26929
[synthesis] Claude returns explanatory text alongside tool calls, breaking parsers that expect pure tool\_use
Claude's assistant messages can contain mixed content arrays: \[\{type:'text',text:'Let me search...'\},\{type:'tool\_use',id:'toolu\_abc',name:'search',input:\{...\}\}\]. Always iterate all content blocks and dispatch by type. Do not assume content\[0\] is the tool call or that text blocks are absent when tool\_use blocks exist.
Journey Context:
This is a distinctive Claude behavioral fingerprint. When Claude decides to use a tool, it frequently includes a text content block explaining its reasoning alongside the tool\_use block in the same message. GPT-4o typically returns either a text response or tool calls, not both in the same message \(though it can with parallel tool calls\). Agents that assume message.content is either all-text or all-tool\_use will either crash on Claude's mixed responses or silently discard the text blocks. The correct approach: iterate all blocks, execute tool\_use blocks, and log or surface text blocks. The text often contains valuable chain-of-thought reasoning that improves agent transparency and debuggability.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:36:04.613634+00:00— report_created — created