Build1 distinct publisher3 min readPublished
Any harness that refreshes the date in its system prompt or slips a status line into the transcript between turns now gets a 400 instead of a completion, which makes append-only history the fix rather than a retry loop.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The check runs before the model emits a token, so a 400 here is deterministic rather than flaky [1]. A retry loop will reproduce it faithfully for as long as you care to fund it. The token counting endpoint applies the same verification [2], which makes it the cheap place to reproduce a mismatch. Read the error path before anything else: `messages.5.content.0` names the first thinking block that no longer matches, and the message can additionally name the first changed message, which is the diagnostic worth logging [3].
What the signature covers is wider than the word "history" suggests. It records the model that produced the block, the top-level system prompt, the `tools` array, every message in front of it, and a link to the previous thinking block, and the API compares that prefix byte for byte when the transcript comes back [4]. Updating the current date in a system prompt is therefore an edit [5]. So is adding or removing a tool mid-session [6], injecting a per-turn reminder or a remaining-token line that you strip on the next request [7], and serving an image by a URL that later returns different bytes, since the binding is to the bytes and not the URL string; a rotated signed URL that returns identical bytes still validates [8].
Deletion is asymmetric. A leading run of thinking blocks can be dropped, oldest first, while a block in the middle cannot be removed if you want to keep the ones after it [9]. That falls out of the chaining: each block commits to everything ahead of it, so shortening the front of the chain is expressible and cutting into its middle is not [25].
The parameters outside the signed surface are still yours: `max_tokens`, `output_config` including `effort`, `tool_choice`, `metadata`, and adding, moving or removing `cache_control` [10]. New instructions go into appended `role: "system"` messages instead of edits to the old system prompt [11], and expired turn-scoped messages stay in place rather than being pruned [12]. Server-side compaction and context editing stay valid even when they delete thinking blocks, because the API validates the conversation as you sent it, before the server rewrites it, and after compaction the check starts from the compaction block [13]. Client-side compaction that keeps recent turns verbatim behind a summary is precisely the pattern that fails [24].
The error text names two remedies, and both cost you the reasoning you were preserving: remove the offending block, or set `thinking.block_binding.prefix_mismatch_behavior` to `drop_block` with the value `thinking-binding-controls-2026-08-01` in the `anthropic-beta` header [19][26]. Finding out whether your account enforces takes one request with edited history and no beta header; a 400 that names that header means enforcement is on [14]. If the message lacks the clause about being bound to a different conversation, `prefix_mismatch_behavior` does not apply, and the signature itself is altered or cannot be decrypted [18].
One caution on provenance. These four write-ups are the same guide in four languages, each citing Anthropic's preserved thinking documentation and the What's new in Claude Fable 5.1 page, where the check is described as the third of three breaking changes and the only one that can degrade a harness quietly [15]. Read it as one account of the docs, not four confirmations. Three conditions decide whether the number transfers to you: the account was created on or after 31 August 2026 [16]; your code assembles the `messages` array itself rather than going through Claude Code or the Agent SDK [17][21]; and you replay thinking blocks instead of stripping them out [19].
Ranked by verification strength, evidence, and original report placement.
The rejection is a 400 invalid_request_error generated before the model produces any output, and resending the same request body fails in the same way.
The token counting endpoint applies the same block-binding verification.
The path messages.5.content.0 points at the first thinking block that no longer matches the history sent, and the error message may additionally name the first changed message, which is the most useful diagnostic hint.
Each Fable 5.1 thinking block carries a signature recording the model that produced it and the exact conversation prefix before it (top-level system prompt, tools array, and every preceding message), and each block is chained to the previous thinking block; when history is resent the API checks that the prefix is byte-for-byte identical to the one that produced the block.
The check is documented in the preserved thinking section and in What's new in Claude Fable 5.1; it is the third of three breaking changes in Fable 5.1 and the only one that can silently degrade a custom harness, with the other two covered by the migration guide.
Rebuilding system or tools between requests, for example updating the current date in the system prompt, invalidates subsequent thinking blocks.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
6 articles · September 1, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
leadership
Anthropic moves misuse monitoring into cloud storage its customers control1 distinct publisher
leadership
Anthropic cuts Fable 5.1 prices by 25% and launches two-tier safeguard system with Mythos 5.11 distinct publisher
build
Fable 5.1 skips its watermark on any token that has to be exactly right1 distinct publisher
security
Anthropic routes frontier-model misuse alerts into the customer's own SOC queue1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Six languages, one document
The technical detail is precise and internally consistent — the error string, the beta header value, the input_transformations payload and the two mismatch reasons match verbatim across all six dev.to versions. But that consistency is what you would expect from translations of a single guide, and the guide's own authority is Anthropic's preserved-thinking documentation and launch post, neither of which we hold directly. Nothing here has been checked against the API by a second party.
Dates on paper, no field reports
What we can date is real: a default-on check tied to account creation after 31 August 2026, a named beta header, a Foundry surface that shipped without the controls, and a per-million cache-read price. What is missing is anyone using any of it. No harness maintainer describes hitting the 400, no framework has published a fix, and the enforcement split by account vintage means the population actually affected today is unquantified in this reporting.
Undersold, then repeated six times
Nothing here is inflated; the register is flat and the fix is unglamorous. If anything the story is quieter than its consequences: the sentence with the widest blast radius — that future models will enforce this for every account, not just post-August ones — passes in a single line, and the volume of coverage is one guide restated, not six outlets deciding this matters.
The guide ends at a download button
Six near-identical posts filed within eleven minutes under six different dev.to author accounts is a syndication pattern, not six people independently deciding to write. And the Japanese version shows where it points: the debugging routine becomes a two-request Apidog test, followed by an invitation to download Apidog. The technical content stands on its own, but it is carrying a tool pitch, and the publisher earns from developer traffic either way.
Believable, unverified
We would bet on the mechanics — signature binds prefix bytes, head-only block removal, server-side compaction exempt — because they are specific, self-consistent and mutually reinforcing in a way invented detail rarely is. We would not yet bet on the edges: the signed-URL guarantee is stated two ways, the enforcement date rests on one relayed reading of the documentation, and no one outside this single guide has confirmed any of it.