Opus 4.8: backgrounded task completions (subagents AND Bash) crash with 400 "thinking blocks cannot be modified"

Resolved 💬 3 comments Opened May 28, 2026 by alanxchen85 Closed Jul 1, 2026

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

  1. Model: Opus 4.8 (claude-opus-4-8), extended thinking on.
  2. Ask the main agent to dispatch a backgrounded subagent (e.g. "find file X" via Explore, or any Agent call with run_in_background: true).
  3. 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)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗