Claude Sonnet 5.5 makes thinking: disabled a 400, one of five breaking changes
Forced tool use, disabled thinking and the older computer use tool all return errors on claude-sonnet-5-5, and a retry on Sonnet 5 has to undo the new thinking mode.
Anthropic released Claude Sonnet 5.5 on Monday, September 28. The announcement leads with speed and cost: the model "runs 30%+ faster, and costs up to 30% less for most work" than Sonnet 5. The list price has not moved ($2 per million input tokens, $10 per million output tokens, $0.20 for cache reads), so the saving rests on volume: Anthropic says Sonnet 5.5 "typically needs far fewer tokens to do the same work."
For anyone with code already calling Sonnet 5, the more useful document is the developer page on what changed. Its first sentence: "Five breaking changes affect code already running on Claude Sonnet 5."
The five requests that now fail
Each of these returns a 400 on claude-sonnet-5-5:
thinking: {"type": "disabled"}. The replacement is{"type": "between_tools"}, which the docs call "the lowest thinking setting on this model." It is accepted atlow,mediumandhigheffort only; atxhighormaxit is itself a 400. It takes no other field, and manualbudget_tokensare rejected too.- Forced tool use. A
tool_choiceofanyor a namedtoolreturns:
tool_choice: type "tool" and "any" are not supported for this model.
Anthropic's suggested substitute is auto plus strict tool use, or structured outputs, and saying in the prompt when the tool applies.
- The
computer_20251124tool on the Claude API and Google Cloud, where only thecomputer_toolset_20260801toolset is accepted. Amazon Bedrock still takes the older tool. - Some advisor pairings. Claude Opus 4.8, Opus 4.7 and Sonnet 5 work as advisors to a Sonnet 5 executor but return a 400 with a Sonnet 5.5 executor.
- Edited history. The API checks whether the system prompt, the tools or any earlier message changed since a Sonnet 5.5 thinking block was produced. For accounts created on or after August 31, 2026, 00:00 UTC, replaying a block after such a change is a 400 by default; older accounts opt in.
The change that fails silently
A sixth change breaks no request, which makes it the easiest to miss. Between tool calls, notes "longer than a sentence or two" now come back as thinking blocks instead of text. At the default display: "omitted" their text is empty, "so an application that streams those notes to its users goes quiet between tool calls, with no error." Setting a display value, or using between_tools, brings the text back.
Cyber safeguards reach Sonnet
The announcement says that because Sonnet 5.5's "cybersecurity capabilities are comparable to Opus 5’s, it’s the first Sonnet model to launch with cyber safeguards and fallbacks like those we’ve developed for our most capable models."
Users can still find and fix bugs in their code as part of routine software development, but higher-risk cybersecurity tasks will visibly fall back to Sonnet 5.
Anthropic, "Introducing Claude Sonnet 5.5"
On the API nothing falls back unless you ask. A declined request returns HTTP 200 with stop_reason: "refusal" and a stop_details category: cyber, bio, frontier_llm, reasoning_extraction or general_harms. Server-side fallback (fallbacks: "default" with the server-side-fallback-2026-07-01 beta header) retries cyber and frontier_llm declines on Sonnet 5 and lets the other three stand. It works on the Claude API only; the refusals page says the parameter "is not available on Amazon Bedrock, Google Cloud, or Microsoft Foundry," where Anthropic points to its SDK middleware instead.
Billing follows the category. A refusal that arrives before any output is billed when the category is bio, frontier_llm or reasoning_extraction, categories where Anthropic says it "measures low volumes of false positives, as of September 2026." A cyber refusal before output is not billed, but it still counts against rate limits.
Where the two collide
The breaking change and the fallback meet in one field. Sonnet 5.5 rejects disabled, and Sonnet 5 does not accept between_tools. The refusals documentation spells it out for anyone retrying by hand: "only Claude Sonnet 5.5 accepts that value, so omit thinking or set a value the fallback model accepts."
Server-side fallback under the 2026-07-01 header does the rewrite for you: the Sonnet 5 attempt "runs with thinking: {"type": "disabled"} and display: "omitted"." A home-grown retry loop that re-sends the same body with model swapped to claude-sonnet-5 gets a 400 instead of an answer, on exactly the requests it was written to rescue.
Primary sources: Introducing Claude Sonnet 5.5, What's new in Claude Sonnet 5.5, Refusals and fallback, read 2026-09-29.