· via dev.to (home feed)
Claude Fable 5.1 rejects edited conversation history, breaking agent harnesses
Claude Fable 5.1 is the first Claude model to reject edited conversation history with a 400 error when thinking block signatures no longer match. Agent harnesses must move to append-only designs or use the drop_block escape hatch.

A new 400 error with a precise address
Developers who moved agent harnesses to Claude Fable 5.1 have started hitting a 400 invalid_request_error stating that a thinking block "is bound to a different conversation." According to three guides published on dev.to, the failure happens before the model produces any output, and resubmitting the identical request body fails the same way. The error path, such as messages.5.content.0, points to the first thinking block that no longer matches, and the message may name the first message that was altered, which the guides call the most useful diagnostic clue. The token-counting endpoint runs the same validation.
The root cause is a new enforcement: Fable 5.1 is the first Claude model to reject the common pattern of editing conversation history between requests.
How the signature binding works
Each thinking block carries a signature recording the model that produced it, the exact conversation prefix that preceded it (the top-level system prompt, the tools array and every earlier message), and a chain to the previous thinking block. When the transcript is resubmitted, the API compares that prefix byte for byte against the original.
Anthropic's stated motivation is anti-distillation: new API accounts can no longer manually edit prior context while keeping Claude's thinking transcripts intact across a multi-turn conversation. The dev.to guides add a second, practical rationale: the same edits that break the check also restart the prompt cache. One guide notes cached reads cost roughly $0.25 per million tokens, so code that fails the check also forfeits the cheapest reads every turn.
Who is affected
The check is enforced by default for accounts created on or after August 31, 2026, across Claude API organizations, Amazon Bedrock, Google Cloud and Microsoft Foundry. Accounts created before that date only have mismatches logged, and are rejected only if the request itself sets thinking.block_binding.prefix_mismatch_behavior, including the value "error". Anthropic has said future models will enforce the check for all accounts.
Claude Code, claude.ai, Claude Managed Agents and the Claude Agent SDK are unaffected because those surfaces keep the prefix intact. Claude Mythos 5.1 does not run the check, though history edits still reset the cache. At risk is any code that assembles the messages array manually: custom agent loops, chat backends and frameworks wrapping the Messages API. The guides warn vendors of tools that run on users' own API keys that their account may predate the cutoff while their users' newer accounts are already subject to enforcement.
What breaks the binding
Blocks are invalidated by editing, reordering or removing earlier turns, including deleting old tool results; cutting turns from the middle of a transcript; client-side summarization that keeps only recent turns verbatim; and injecting ephemeral content that is removed on the next request, such as per-turn reminders, status lines or a changing remaining-token count. Rebuilding the system prompt or tools between requests also breaks binding, for example updating the current date in the prompt or adding a tool mid-session. Sending an image or document URL that serves different bytes later fails too, since the signature binds to the content bytes rather than the URL string. Thinking blocks may only be removed from the head of the run, oldest first; removing one from the middle invalidates everything after it.
Patterns that stay valid include append-only history, appending new role "system" messages instead of editing the old prompt, leaving expired turn-scoped system messages in place, changing parameters outside system, tools and messages (max_tokens, output_config, tool_choice, metadata), moving or removing cache_control markers, and server-side compaction or context editing. The check validates the conversation as the client sends it, before any server-side edits.
The drop_block escape hatch
Requests can opt in via the thinking-binding-controls-2026-08-01 value in the anthropic-beta header and set prefix_mismatch_behavior to "drop_block". The API then drops the first mismatched block and all thinking blocks after it, continues the request, and reports each drop in a top-level input_transformations array. The reason field distinguishes prefix_binding_mismatch, meaning the history changed, from model_binding_mismatch, meaning the conversation switched models via routing, retry or fallback, which the guides say is not necessarily a bug in history-handling code.
The setting applies only to the current request and must be resent for the rest of the session. Sending block_binding without the beta header returns an "Extra inputs are not permitted" error. Where a platform does not yet offer the controls, the fallback is to strip all thinking and redacted_thinking blocks from the history, keep the text and tool_use blocks, and retry once, a recovery the guides describe as a one-off rather than a design.
Why it matters
This is one of three breaking changes in Fable 5.1 and, per the dev.to guides, the only one that can silently degrade a harness: on older accounts the mismatch is merely logged, so bugs surface later when enforcement widens or when a user's newer account starts failing. Harnesses that invalidate history on every request lose the model's reasoning each turn and restart the prompt cache each turn, which Anthropic warns raises task cost. The practical shift is structural: append-only histories, fewer injected ephemeral reminders, and deliberate use of drop_block only as a diagnostic and a safety net at compaction boundaries rather than a permanent state.
- #anthropic
- #claude
- #api
- #ai-agents
- #prompt-caching