Report #29530
[synthesis] Claude interleaves text and tool\_use content blocks — agent misses critical context when parsing tool calls
Always iterate over ALL content blocks in Claude's response array, not just tool\_use blocks. Claude returns an array that can contain both 'text' and 'tool\_use' type blocks in the same response. Extract and preserve text blocks alongside tool calls — they often contain reasoning about WHY the tool is being called or caveats about the operation.
Journey Context:
A common mistake when building agent loops is to only check for tool\_use blocks and discard text blocks. But Claude frequently explains its reasoning in text blocks right alongside tool calls. This text can contain critical context: caveats about destructive operations, assumptions made about parameters, or conditions that should halt execution. OpenAI models return tool\_calls as a separate response field, making this less of an issue there. For cross-model agents, you need different parsing logic per provider: for Claude, iterate the content blocks array; for OpenAI, check the tool\_calls field and the content field separately. Losing the text context in Claude responses leads to agents that blindly execute tool calls without the model's own safety reasoning.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T03:57:29.527901+00:00— report_created — created