Claude Opus 5.5 shipped on September 22, 2026 and Claude Sonnet 5.5 on September 28. If you take code that runs on Opus 5 or Sonnet 5 and change only the model string, one of these five settings will return an HTTP 400. All five are in Anthropic's official migration guides; I reproduced the first one against the live API on October 6 and pasted the exact responses below.
A static scanner that finds these in your code (file:line) is open source: claude5-migration-kit.
python scan.py path/to/your/app --target opus-5-5
python scan.py path/to/your/app --target sonnet-5-5
1. thinking: {"type": "disabled"} returns 400
Opus 5.5 cannot turn thinking off. On Opus 5 you could send disabled at high effort or below. On Opus 5.5, both disabled and enabled + budget_tokens are rejected at every effort level:
"thinking.type.disabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
Omit thinking (same as adaptive) and lower output_config.effort where you used to disable thinking.
Sonnet 5.5 replaces disabled with between_tools. It is the lowest thinking setting: no up-front thinking, only the short notes between tool calls.
To turn thinking off on this model, send "thinking": {"type": "between_tools"} instead of {"type": "disabled"}. The model does not think before responding. The short updates it writes between tool calls come back as thinking blocks.
# Sonnet 5
client.messages.create(model="claude-sonnet-5", max_tokens=16000,
thinking={"type": "disabled"}, output_config={"effort": "xhigh"}, messages=[...])
# Sonnet 5.5
client.messages.create(model="claude-sonnet-5-5", max_tokens=16000,
thinking={"type": "between_tools"}, output_config={"effort": "high"}, messages=[...])
between_tools works only at high effort or below (400 with xhigh / max), takes no other field (display, budget_tokens and block_binding are 400), and cannot be combined with per-message effort changes. In a request without tools it answers without thinking at all, so move multi-step reasoning tasks back to adaptive.
Both responses above are verbatim from the API (max_tokens: 64, no charge for a 400).
2. Forced tool_choice returns 400
{"type": "any"} and {"type": "tool", "name": ...} are rejected on both models, including on the token-counting endpoint:
tool_choice: type "tool" and "any" are not supported for this model.
Use tool_choice: {"type": "auto"}, mark the tool strict: true so the input matches the schema, and say in the prompt when to call it. Strict tools are capped at 20 per request and need additionalProperties: false on every object. If you only wanted JSON, use structured outputs (output_config.format) instead of a tool. On Amazon Bedrock, Opus 5.5 and Sonnet 5.5 have no structured outputs (strict included): send auto, name the tool in the prompt, and validate the input yourself.
3. computer_20251124 returns 400 on the Claude API and Google Cloud
Declare computer use as the computer_toolset_20260801 toolset (no beta header). Sonnet 5.5 also rejects computer_20250124 on every platform. Amazon Bedrock keeps computer_20251124. The fine-grained-tool-streaming-2025-05-14 header is a 400 next to a toolset entry; set eager_input_streaming: true on the tools that need it.
4. Editing conversation history returns 400 (or drops the thinking)
The preserved-thinking check that Fable 5.1 introduced now applies to both models: thinking blocks are bound to the model and to the conversation prefix. Editing system, tools or earlier turns and then sending the thinking blocks back is a 400 on accounts created on or after August 31, 2026 (enforced by default), or a dropped block otherwise.
- Keep history append-only. Change instructions with a mid-conversation
{"role": "system", ...}message. - Change tools with
tool_addition/tool_removal; with theinline-tools-2026-09-15beta you can include full definitions. - To shrink history, use on-demand compaction (
compact-2026-09-04): you receive a signed summary block and send it first on the next request. - Sonnet 5.5 thinking blocks are also account-bound: sent from another organization they are silently dropped.
5. Sonnet 5.5 rejects Opus 4.x / Sonnet 5 as advisors
With a Sonnet 5.5 executor, the advisor must be Opus 5, Opus 5.5, Sonnet 5.5, Fable 5 / 5.1 or Mythos 5 / 5.1. Opus 4.8 / 4.7 / 4.6, Sonnet 5, Sonnet 4.6 and Haiku 5.5 return 400. Advice comes back encrypted as advisor_redacted_result.
Changes that don't fail, but matter
-
Opus 5.5 defaults to
effort: medium(Opus 5:high). Carry over a request withouteffortand it runs one level lower. Anthropic reports that 5.5 atmediummatches or beats Opus 5 athigh; start there and sweep. -
Sonnet 5.5 effort levels are recalibrated. Start coding agents at
medium, general work athigh,max_tokens128K with streaming. -
Text between tool calls now arrives in
thinkingblocks, empty at the defaultdisplay. A UI that streams progress notes goes quiet with no error. Usedisplay: "updates"(beta headerthinking-display-updates-2026-08-18). -
More refusal categories. Opus 5.5 adds
bio; Sonnet 5.5 hascyber,bio,frontier_llm,reasoning_extraction,general_harms. Server-side fallback only retriescyberandfrontier_llmon Sonnet 5. Since September 24, refusals before any output inbio/frontier_llm/reasoning_extractionare billed. - Prompt cache minimum is 512 tokens (Sonnet 5: 1,024). Sonnet 5.5 cache reads dropped to $0.10/MTok on October 7 (0.05x).
- Priority Tier is not supported on Opus 5.5.
- Sonnet 4.5 retires on November 30, 2026. Replacement: Sonnet 5.5.
Summary
| # | Symptom | Fix |
|---|---|---|
| 1 |
disabled → 400 |
Opus 5.5: omit + lower effort. Sonnet 5.5: between_tools (≤ high) |
| 2 |
tool_choice: any → 400 |
auto + strict + name the tool in the prompt |
| 3 |
computer_20251124 → 400 |
computer_toolset_20260801 |
| 4 | edited history → 400 | append-only; system messages, tool_addition, compaction |
| 5 | advisor → 400 | Opus 5 / 5.5, Sonnet 5.5, Fable |
The seven things that already broke when moving from 4.x to Opus 5 / Sonnet 5 (temperature, budget_tokens, prefill, max_tokens eaten by thinking, content[0] on refusals, empty thinking text, the ~30% tokenizer increase) still apply.
The full guide, with per-model checklists, the prompt re-tuning table across 4.7 → 4.8 → Opus 5 → Fable 5.1 → 5.5, prompt caching and history design, and verification scripts, is a 70-page PDF: Claude 5 Migration Guide ($19). Written with AI assistance; every API behavior was checked against the live API or the official docs before publication.
Official sources: Opus 5.5 migration guide · Sonnet 5.5 migration guide
Top comments (0)