What Broke: Thinking Block Corruption on Opus 4.8
Claude Code v2.1.154 , released May 28, 2026, made Opus 4.8 the default model — and immediately surfaced a silent payload bug. Thinking blocks were being mutated during retry or multi-turn sequences, causing the Anthropic API to reject the modified payload with HTTP 400 errors on the following turn. Sessions appeared to hang or crash with no actionable error message. v2.1.156 , released at approximately 01:42 UTC on May 29, 2026, is a single-surface hotfix that patches this exact mutation path and nothing else.
Quick Answer: If you're on Claude Code v2.1.154 or v2.1.155 with Opus 4.8 and extended thinking active, update now. v2.1.156 patches thinking block mutation during multi-turn sequences that caused silent payload corruption and unrecoverable HTTP 400 errors. Run npm install -g @anthropic-ai/claude-code@latest.
The failure mode was subtle: on turn N, a thinking block was modified before being echoed back in the next request — whitespace stripped, bytes compacted. The Anthropic API enforces that signed thinking blocks must be replayed byte-for-byte; any modification causes rejection. This meant the error always surfaced on turn N+1, making it indistinguishable from a logic error in the session itself. In agentic workflows with many turns, callers had no reliable way to attribute the 400 to an infrastructure issue rather than their own code.
Affected scope: any session on Opus 4.8 with extended thinking active (/effort high or higher). Opus 4.7, all Sonnet variants, and Haiku were not affected — the mutation was specific to the Opus 4.8 thinking block payload format during replay and compaction.
The verified Python snippet below — executed successfully (exit 0) — demonstrates exactly what the hotfix prevents. A frozen dataclass enforces that signed thinking blocks cannot be modified before replay:
from dataclasses import dataclass, replace
@dataclass(frozen=True)
class ThinkingBlock:
text: str
signature: str
def send_to_api(block: ThinkingBlock, original: ThinkingBlock) -> str:
if block.signature == original.signature and block.text != original.text:
raise ValueError(
"API 400: signed thinking blocks cannot be modified"
)
return "accepted"
original = ThinkingBlock(
text="hidden reasoning bytes from Opus 4.8\n",
signature="sig:abc123",
)
print("Claude Code v2.1.156 hotfix demo")
print("bad replay:", end=" ")
try:
send_to_api(replace(original, text=original.text.strip()), original)
except ValueError as exc:
print(exc)
print("fixed replay:", send_to_api(original, original))
print("explanation: preserve signed thinking blocks byte-for-byte during replay/compaction.")Captured output:
Claude Code v2.1.156 hotfix demo
bad replay: API 400: signed thinking blocks cannot be modified
fixed replay: accepted
explanation: preserve signed thinking blocks byte-for-byte during replay/compaction."Resolves a critical bug where thinking blocks were modified during multi-turn Opus 4.8 sessions with extended thinking enabled, causing API errors that broke agentic sessions mid-execution." — Claude Code CHANGELOG, v2.1.156
Prerequisites and How to Update to v2.1.156

The update is a single npm command. No configuration file changes are required — the fix is entirely within the client's thinking block replay logic. Confirm your current version first, then update and verify.
- Verify the hotfix is active:Open a fresh Opus 4.8 session (the default since v2.1.154), run
/effort highto activate extended thinking, and send a two-turn exchange — a question followed by a follow-up in the same session. Confirm no HTTP 400 errors appear in the session log. The second turn is the critical test: that is exactly where the corrupted payload was rejected pre-hotfix. - Confirm plugin behavior after v2.1.157:Because
@latestalso installs v2.1.157, run/reload-skillsand verify your.claude/skills/entries still resolve correctly. The plugin overhaul changed auto-load semantics — skills in that directory now load without marketplace registration or restart, which is a behavioral change if you previously relied on explicit enablement via/plugin.
Update via npm:
npm install -g @anthropic-ai/claude-code@latestRestart any active Claude Code sessions after the install completes. Using @latest resolves to the newest available release — as of May 29, 2026 this also pulls v2.1.157 (same-day plugin system overhaul). No config changes needed alongside the update.
Check your installed version:
claude --versionIf the output is v2.1.154 or v2.1.155 and you use Opus 4.8 with extended thinking, update before your next multi-turn session.
Rough Edges to Expect After Updating

Three behavioral changes in the v2.1.154–157 cluster will catch you off guard if you don't read the changelog before your next session.
Lean system prompt is now default for Opus 4.8. If your prompts or tool configurations relied on the verbose context previously injected at session start, those assumptions break on v2.1.154+ . Haiku, Sonnet, and Opus 4.7 and earlier still use the verbose prompt — only Opus 4.8 sessions are affected. Audit any prompts that reference injected context before assuming something is broken.
The word "workflow" now silently triggers Dynamic Orchestration on Max, Team, and Enterprise plans. Anthropic warns this can spike token spend materially on large repositories . If you're not ready to use Dynamic Orchestration, disable the keyword trigger before writing prompts that mention "workflow" in passing: navigate to /config → "Workflow keyword trigger" and turn it off. This setting was added in v2.1.154 specifically because the silent trigger was flagged as a footgun during beta.
Fast mode pricing changed with Opus 4.8. Standard pricing is $5 per million input tokens and $25 per million output tokens . Fast mode runs at $10 per million input and $50 per million output at approximately 2.5× speed . Anthropic describes fast mode as 3× cheaper per unit than the previous fast-mode tier , but it is still double the standard input rate. For long agentic sessions where latency is not the constraint, standard mode is the cost-efficient default.
Pro plan users: Dynamic Orchestration is not available on Pro. Including "workflow" in a prompt will not trigger orchestration and will not produce an error — the word is treated as plain text. If you expect orchestration behavior and nothing happens, verify your plan tier before filing a bug report; silence is the documented behavior on Pro, not a session fault.
Dynamic Orchestration and the Plugin Overhaul: What to Explore

With v2.1.156 stabilizing Opus 4.8's extended thinking, the two major features from the surrounding cluster are worth a deliberate pilot: Dynamic Orchestration (v2.1.154) and the plugin auto-load system (v2.1.157).
Dynamic Orchestration: Include "workflow" in any prompt, or navigate directly to /workflows to start a run. Claude writes a JavaScript orchestration script and fans out background subagents — up to a hard cap of 1,000 per session . Monitor live agents at claude agents (keyboard shortcut: ←←). Run status is visible at /workflows. Anthropic explicitly recommends piloting on a single, scoped module before pointing a workflow at an entire repository — token consumption scales faster than intuition suggests once subagent fan-out begins . What per-subagent overhead costs are beyond the general consumption warning has not yet been published.
Plugin auto-load (v2.1.157): Drop a skill file into .claude/skills/ and it loads automatically — no marketplace registration, no restart. Skills can declare disallowed-tools in frontmatter to scope which model tools are available during that skill's execution. Scaffold a new plugin with:
claude plugin init my-plugin-nameThis places a scaffold directly into .claude/skills/. To require explicit opt-in, set defaultEnabled: false in plugin.json; enable with /plugin or claude plugin enable my-plugin-name. Run /reload-skills to rescan mid-session without restarting.
Opus 4.8 benchmark reference (from Anthropic's release publication — independent third-party replication is still limited as of May 31, 2026):
| Benchmark | Opus 4.8 Result | Notes |
|---|---|---|
| Online-Mind2Web (browser automation) | 84% | Beats Opus 4.7 and GPT-5.5; May 2026 |
| Legal Agent Benchmark (all-pass) | First to exceed 10% | First model to clear the bar; May 2026 |
| Code review flaw detection vs. Opus 4.7 | ~4× less likely to overlook flaws | Anthropic-sourced; third-party validation sparse as of 2026-05-31 |
Frequently Asked Questions
What was the thinking block bug introduced in v2.1.154?
Thinking blocks were being mutated — typically stripped or compacted — during retry or multi-turn sequences on Opus 4.8 sessions with extended thinking enabled. The Anthropic API requires signed thinking blocks to be replayed byte-for-byte; any modification triggers an HTTP 400 rejection. Because the mutation happened on turn N but the error surfaced on turn N+1, the session appeared to crash without a clear cause. v2.1.156 patches this specific mutation path in the client's replay and compaction logic. Details are in the v2.1.156 release notes.
Do I need v2.1.156 if I'm not using Opus 4.8?
No. The bug was scoped entirely to Opus 4.8 sessions with extended thinking active. Opus 4.7, all Sonnet variants, and Haiku were not affected. If you're on an older model or have extended thinking disabled, there is no urgent reason to update specifically for this hotfix — though keeping up with @latest is generally advisable to pick up the broader v2.1.154–157 cluster changes.
How do I confirm extended thinking is working correctly after updating?
Run claude --version to confirm you're on v2.1.156 or later. Open a fresh Opus 4.8 session, run /effort high to activate extended thinking, and send at least two turns in sequence. The second turn is the critical test — pre-hotfix, that is where the corrupted payload was rejected by the API. No HTTP 400 errors in the session log confirms the fix is active.
Which subscription tiers support Dynamic Orchestration?
Max, Team, and Enterprise plans only. Pro plan users do not have access to Dynamic Orchestration. On Pro, including "workflow" in a prompt will not trigger orchestration and will not produce an error — the word is simply treated as regular text with no side effects. If you see no orchestration behavior after using the "workflow" keyword, verify your plan tier before assuming a session bug.
What is the cost difference between standard Opus 4.8 and fast mode?
Standard pricing is $5 per million input tokens and $25 per million output tokens. Fast mode is $10 per million input and $50 per million output at approximately 2.5× speed. Anthropic describes fast mode as 3× cheaper per unit than the previous fast-mode pricing tier, but it remains double the standard input rate. For cost-sensitive agentic sessions where latency is not the bottleneck, standard mode is the better default. See Anthropic's Opus 4.8 release page for full pricing details.
Next Steps
The immediate action is straightforward: run npm install -g @anthropic-ai/claude-code@latest, confirm your version is v2.1.156 or later, and restart any active multi-turn Opus 4.8 sessions. That closes the thinking block corruption window entirely.
Beyond the hotfix, the two features worth a deliberate trial are Dynamic Orchestration and the plugin auto-load system. Start Orchestration on a single, bounded task — not a full codebase — and watch the session log for token consumption before scaling scope. The 1,000-subagent cap is documented, but how enforcement behaves at the limit (hard abort vs. graceful queue) is not yet publicly specified. For the plugin system, dropping a skill file into .claude/skills/ and running /reload-skills is low-risk and immediately useful if you've been building local tools. Full release details are at GitHub Releases and the CHANGELOG.
Last updated: 2026-05-31. Reflects Claude Code v2.1.156 as the current stable hotfix, with context drawn from the v2.1.154–v2.1.157 release cluster. Benchmark figures sourced from Anthropic's Opus 4.8 publication; independent third-party replication of the code review claim is still in progress as of this date.