AI DevelopmentPlaybook6 min readPublished September 28, 2026

claude-sonnet-5-5 · five settings that return 400 · between_tools · a model-ID swap is not enough

Migrating to Claude Sonnet 5.5: Every Breaking Change

Claude Sonnet 5.5 rejects thinking disabled, forced tool choice and three more settings. The exact errors and fixes, grouped by the model you run today.

DA
Digital Applied Team
Research and practical guidance
Model releasedSeptember 28, 2026
Docs checkedSeptember 28, 2026

Claude Sonnet 5.5, released on September 28, 2026, costs the same as Sonnet 5, so many teams will try it by changing one line: the model ID. On a typical Sonnet 5 integration that change alone can return errors. Anthropic’s migration guide lists five request settings that Sonnet 5.5 rejects with a 400 error, a new way to turn thinking off, and several changes that fail silently.

This guide collects them in the order you will meet them, with Anthropic’s exact error text, and then groups the work by the model you are moving from. Everything here comes from Anthropic’s migration guide and What’s new page as published on launch day, plus the preserved-thinking documentation linked below; the OpenRouter alias check is our own observation.

Key takeaways
  1. 01
    thinking: {"type": "disabled"} now errors. The replacement, between_tools, only works up to high effort.At xhigh or max it returns a 400, and effort cannot change mid-conversation while it is set.
  2. 02
    Forced tool choice is gone. Use auto with strict tools and say when to call them.The same rejection applies on the token-counting endpoint. On Amazon Bedrock, strict tools are not available, so validate tool input in code.
  3. 03
    Thinking blocks are bound to the model, the conversation and the account.Edit earlier history on a newer account and the request fails; move a conversation to another account and the reasoning is dropped.
  4. 04
    Some changes do not error at all, so test the output, not just the status code.Notes between tool calls move into thinking blocks, effort levels are recalibrated, and a router alias may already point at Sonnet 5.5.

01 — The errorsThe five settings that return a 400 error

Anthropic names five request settings that Sonnet 5.5 refuses. Each one returns an invalid_request_error with HTTP status 400, so the request fails before the model runs. The error strings below are Anthropic’s; an ellipsis marks where we shortened one.

Source: Anthropic, Migrating to Claude Sonnet 5.5, September 28, 2026. The sampling-parameter error text is not printed in the guide.
SettingError returnedFix
thinking: {"type": "disabled"}"thinking.type.disabled" is not supported for this model. Use "thinking.type.between_tools" for the lowest thinking setting …Send {"type": "between_tools"} at low, medium or high effort
tool_choice {"type": "any"} or {"type": "tool"}tool_choice: type "tool" and "any" are not supported for this model.Use auto with strict: true, and say in the prompt when the tool applies
thinking: {"type": "enabled", "budget_tokens": N}"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" …Remove the budget; set output_config.effort and test two or three levels
Non-default temperature, top_p or top_k400 invalid_request_errorRemove the parameters
A prefilled final assistant turnThis model does not support assistant message prefill. The conversation must end with a user message.Structured outputs for format; system-prompt or user-turn instructions for the rest

Which of the five you hit depends on your starting model. Sonnet 5 already rejected thinking budgets, sampling parameters and prefill, so a Sonnet 5 integration meets only the first two rows. Code written for Sonnet 4.5 or Haiku 4.5 can meet all five.

For forced tool choice, Anthropic’s replacement is tool_choice: {"type": "auto"} with the tool marked strict: true, so that any call the model makes matches the schema. Because the model may now answer without calling the tool, the prompt has to say when the tool applies. A request can carry at most 20 strict tools, and strict mode needs additionalProperties: false on every object. On Amazon Bedrock, structured outputs and strict tools are not available for Sonnet 5.5, so send auto alone and validate the tool input in your own code.

02 — Thinking offTurning thinking off now means between_tools

On Sonnet 5.5 a request with no thinking field runs with adaptive thinking, as it did on Sonnet 5. Teams that switched thinking off on Sonnet 5 to save tokens or latency need the new setting, thinking: {"type": "between_tools"}. Anthropic describes it as the lowest thinking setting: the model does no up-front thinking, and short progress notes between tool calls still come back as thinking blocks with their summary text. Without tools, the response is text only.

Four rules for between_tools
  • Accepted at low, medium and high effort; xhigh or max returns a 400.
  • Effort cannot change mid-conversation; a per-message effort that differs returns a 400.
  • It takes no other field: display, budget_tokens or block_binding with it returns a 400.
  • Older Python and TypeScript SDKs fail type checking on it; update the SDK or send the value as raw JSON.

One detail matters for teams that ran Sonnet 5 with thinking off at a high effort level. Anthropic’s own before-and-after example moves a Sonnet 5 request from disabled at xhigh to between_tools at high, because xhigh is no longer allowed with thinking off. If a workload genuinely needs xhigh or max, it has to accept adaptive thinking. With Anthropic’s server-side fallback turned on, a between_tools request that falls back to Sonnet 5 runs there with thinking disabled.

03 — Thinking blocksThinking blocks are tied to the model, the conversation and the account

1
Model
Silent drop

Sonnet 5.5 reads thinking blocks from Sonnet 5, Opus 4.8, Haiku 4.5 and earlier models, but not from Opus 5, Opus 5.5, Fable or Mythos. No other model reads Sonnet 5.5's blocks. Unreadable blocks are dropped, the request returns 200, and dropped blocks are not billed.

Model routers
2
Conversation
400 error on newer accounts

Each block is signed over the conversation before it. For accounts created on or after August 31, 2026, 00:00 UTC, replaying a block after changing the system prompt, the tools or an earlier message returns a 400.

Context editing
3
Account
Silent drop

Sonnet 5.5 thinking blocks work only in the account that produced them, or a linked account. Sent from another account, they are dropped and the model answers without that reasoning.

Multi-account setups

The fix for the second rule is to keep conversations append-only. Change instructions or tools with mid-conversation system messages instead of editing earlier turns. With adaptive thinking, the beta header thinking-binding-controls-2026-08-01 plus thinking.block_binding.prefix_mismatch_behavior: "drop_block" lets a request drop failing blocks instead of erroring, and reports each drop in an input_transformations array. With between_tools, sending block_binding returns a 400, so keep the history append-only. Anthropic’s preserved-thinking documentation warns that dropping hides the error without fixing the edit, and that the model may spend extra tokens re-creating lost reasoning.

The account rule is new with Sonnet 5.5 and is part of Anthropic’s defence against distillation. Most developers will not notice it. The case that does notice is a conversation that moves between accounts, including switching accounts mid-session in Claude Code: the session continues, but without its earlier reasoning.

04 — AgentsComputer use, the advisor tool and refusals

Computer use needs the toolset. On the Claude API and Google Cloud, Sonnet 5.5 accepts computer use only through computer_toolset_20260801. The older computer_20251124 tool, sent by Sonnet 5 and 4.6 integrations, returns a 400 there but still works on Amazon Bedrock. The even older computer_20250124 is rejected on every platform. Remove the fine-grained-tool-streaming-2025-05-14 beta header when you move, because it errors alongside a toolset entry; set eager_input_streaming: true on each tool instead.

The advisor tool accepts fewer advisors. A Sonnet 5.5 executor needs Opus 5, Opus 5.5, Sonnet 5.5, Fable 5 or 5.1, or Mythos 5 or 5.1 as its advisor. Opus 4.8, 4.7 and 4.6, Sonnet 5 and Sonnet 4.6 return a 400, and the advice now comes back encrypted.

More refusal categories. Sonnet 5.5 can decline under five named categories: cyber, bio, frontier_llm, reasoning_extraction and general_harms. A decline arrives as stop_reason: "refusal", not as an HTTP error, so code that only checks the status code will miss it. The server-side fallback beta (fallbacks: "default", Claude API only) retries cyber and frontier-LLM declines on Sonnet 5 and does not retry the other three.

05 — By modelWhat to change, by the model you run today

The guide’s checklist works cumulatively: start at the top and stop at your model. The table condenses it. Anthropic also ships a Claude Code command, /claude-api migrate, that applies the model-ID swap and the parameter changes across a codebase and then lists what to verify by hand. Teams on Claude Managed Agents only need to change the model name.

Source: Anthropic, Migrating to Claude Sonnet 5.5, migration checklist, September 28, 2026. Rows are cumulative.
Moving fromErrors to fixAlso check
Sonnet 5Thinking disabled; forced tool choice; computer_20251124 on the Claude API and Google Cloud; Sonnet 5 or Opus 4.8 as advisorNotes between tool calls move into thinking blocks; new refusal categories; re-run the effort sweep
Sonnet 4.6Everything above, plus thinking budgets and non-default sampling parametersThinking now runs when the field is omitted, and its text is omitted by default (set display to summarized to show it); about 30% more tokens for the same text; images can cost about 2.5 times the tokens
Sonnet 4.5Everything above, plus assistant prefill and computer_20250124 on every platformSet effort explicitly; parse tool input with a standard JSON parser; remove interleaved-thinking and context-window beta headers; move output_format to output_config.format
Sonnet 4 or 3.7 SonnetEverything aboveMove to text_editor_20250728 and code_execution_20260521; handle the refusal and model_context_window_exceeded stop reasons; expect trailing newlines in tool string parameters; remove two legacy beta headers
Haiku 4.5Everything for Sonnet 4.5 except the Sonnet 4 tool changesHigher price per token and more tokens per text; the caching minimum falls from 4,096 to 512 tokens

Two cost notes sit inside that table. Sonnet 5.5 uses Sonnet 5’s tokenizer, which produces about 30% more tokens than Sonnet 4.6, 4.5 or Haiku 4.5 for the same text, so a team moving from those models should recount tokens rather than compare old and new bills per token. Images are also processed at a higher resolution, and Anthropic’s example of a 2000 by 1500 pixel image costs about 2.5 times the tokens it did on Sonnet 4.6.

06 — Silent changesThe changes that do not return an error

  • Progress notes go quiet. Notes longer than a sentence or two that the model writes between tool calls now come back as thinking blocks, empty at the default display setting. An interface that streams them to users shows nothing. Set display to "summarized", or to "updates" with a beta header, or use between_tools.
  • Code that reads the first block breaks. A response can start with a thinking block, so read blocks by type, and pass thinking blocks back unchanged in tool loops.
  • Effort levels are recalibrated. The default on the API is high, and a named level does not produce the same amount of thinking as on Sonnet 5. Anthropic suggests medium for well-specified agentic coding and medium or low for chat. Our effort ladder reference compares the levels across vendors.
  • Aliases can move for you. At our check at 21:28 UTC on September 28, OpenRouter’s ~anthropic/claude-sonnet-latest pointed at Sonnet 5.5; on September 25 it pointed at Sonnet 5. Code calling that alias changed model with no deploy. The alias and retirement ledger tracks these moves.

One change helps: the minimum prompt that can be cached drops to 512 tokens from 1,024 on Sonnet 5, so shorter prompts can now be cached. Pricing, benchmarks and safeguards are covered in our Sonnet 5.5 launch post.

07 — ConclusionMost Sonnet 5 code needs two fixes and a new test pass

You run Sonnet 5 with thinking off
Swap disabled for between_tools, cap effort at high, and remove forced tool choice. Then check that progress notes still reach your interface.
Two errors, one silent change
You run Sonnet 4.6, 4.5 or Haiku 4.5
Remove budgets, sampling parameters and prefills, set effort explicitly, and recount tokens before comparing cost.
Up to five errors
Your router switches models mid-conversation
Expect Sonnet 5.5's reasoning to be dropped whenever a turn runs on another model or account, and keep histories append-only.
Silent drops
What to do this week

Pin the model ID, fix the two errors in a branch, and test streamed output and refusals before switching traffic

The errors are the easy part: they fail loudly and the messages name the fix. The quiet changes, such as empty progress notes, dropped reasoning and recalibrated effort, only show up when someone reads the output. Run your own evaluation set at two effort levels on Sonnet 5.5, and keep Sonnet 5 as the fallback until the numbers hold. Retirement dates for the older models are on our deprecation calendar.

Digital Applied

Move models without breaking production.

We audit integrations, fix breaking changes and build the evaluation sets that show a new model is ready before traffic moves.

Integration auditsMigration testingFallback design
Your next project

A migration with no surprises

  • →Every breaking setting found
  • →Streamed output tested
  • →A fallback that works
Questions and answers

The questions we get about migrating to Sonnet 5.5

Send thinking: {"type": "between_tools"} at low, medium or high effort. The old "disabled" value returns a 400 error, and between_tools also returns a 400 at xhigh or max effort.
Digital Applied newsletter

Deep dives on AI, marketing and development.

Practical guides and fresh insights by email. No recycled takes.

Related dispatches

Continue reading