Opus 4.8: backgrounded task completions (subagents AND Bash) crash with 400 "thinking blocks cannot be modified"
What happened
When dispatching backgrounded subagents (e.g. the Explore agent, or Agent tool with run_in_background: true), the subagent immediately crashes on its first turn with:
400 API Error: "thinking" or "redacted_thinking" blocks in the last assistant
message cannot be modified. These blocks must remain as they were in the
original response.
Both a backgrounded Explore agent and a backgrounded general Agent failed with the identical error. The subagents never executed any tool calls — they died on the first model turn. Retrying produces the same error every time (deterministic, not transient).
This appears tied to the Opus 4.8 release — extended-thinking signed blocks must be replayed byte-for-byte, and the subagent-dispatch/replay path seems to be mutating them (or re-ordering/re-encoding), causing the API to hard-reject.
Expected
Backgrounded subagents run normally; signed thinking/redacted_thinking blocks are preserved verbatim across the dispatch/replay boundary.
Repro
- Model: Opus 4.8 (
claude-opus-4-8), extended thinking on. - Ask the main agent to dispatch a backgrounded subagent (e.g. "find file X" via
Explore, or anyAgentcall withrun_in_background: true). - Subagent fails immediately with the 400 above.
Impact
Backgrounded subagent dispatch is fully broken under Opus 4.8 — any workflow that fans work out to background Explore/Agent helpers fails. Inline (non-backgrounded) tool calls in the main session are unaffected and work as a temporary workaround.
Environment
- Claude Code: 2.1.154
- Model: Opus 4.8 (claude-opus-4-8), 1M context
- Platform: macOS (Darwin 25.5.0)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗