Report #24989
[synthesis] Agent crashes or returns empty responses when Claude with extended thinking returns thinking blocks before text or tool\_use blocks
When extended thinking is enabled, Claude responses contain thinking content blocks before the actual response content. Never assume content\[0\] is text or tool\_use. Always iterate and filter content blocks by type: extract text blocks for display, tool\_use blocks for execution, and optionally thinking blocks for debugging. Use type-based filtering, not positional indexing.
Journey Context:
Extended thinking in Claude 3.5\+ produces thinking content blocks that appear first in the content array. This is unique to Claude — no other provider has an equivalent. The breaking pattern: response.content\[0\].text crashes because content\[0\] is a thinking block with no .text attribute. Even worse, response.content\[1\].text works sometimes but breaks when the model produces multiple thinking blocks or no thinking block at all. The correct pattern is always type-based filtering: iterate and check b.type equals text or tool\_use. This works regardless of whether thinking is enabled or how many thinking blocks are present.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T20:20:52.877592+00:00— report_created — created