Claude Sonnet 4.5 retires on 30 November 2026: the 400 errors on Sonnet 5.5 and the fix

This model does not support assistant message prefill. The conversation must end with a user message.
tool_choice: type "tool" and "any" are not supported for this model.
"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
# 400 errors from claude-sonnet-5-5, quoted from Anthropic's migration guide on 6 November 2026, not captured by us

Short answer: claude-sonnet-4-5-20250929 retires on 30 November 2026 on the Claude API, Foundry and Google Cloud (Bedrock: 8 April 2027). Its replacement, claude-sonnet-5-5, returns 400 for assistant prefill, forced tool choice, thinking budgets, sampling parameters and disabled thinking, so changing the ID alone can break your app.

Checked on 6 November 2026 against Anthropic's deprecations page and Sonnet 5.5 migration guide, and Microsoft's, Google's and Amazon's lifecycle pages.

Why it happens

Anthropic's deprecations page lists claude-sonnet-4-5-20250929 as Deprecated (notice of 30 September 2026), with retirement on 30 November 2026 and claude-sonnet-5-5 as the replacement, and says requests to retired models fail. Which platforms: Anthropic says its dates apply to the Claude API, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed) and Microsoft Foundry, and Microsoft's own schedule agrees (claude-sonnet-4-5, version 1, 2026-11-30). Partners set their own dates: Google's page for Google-managed Claude also says 30 November 2026, and Amazon Bedrock's model card says Legacy, end of life 8 April 2027. How we verified it (a dated vendor change): the dates and error messages are quoted from those pages, read on 6 November 2026. We have no Anthropic API key here, so we sent no requests: the errors and the steps are quoted from Anthropic's guide, not tested. Anthropic doesn't publish the message a retired model returns, so none is shown; we add it here after 30 November.

You may also see

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.
# claude-sonnet-5-5 with thinking disabled (Anthropic's guide)
adaptive thinking is not supported on this model
# the reverse mistake: adaptive thinking sent while the model ID is still claude-sonnet-4-5 (Anthropic's errors page)
ResourceNotFoundException: This model version has reached the end of its life.
# Amazon Bedrock, after its own end-of-life date of 8 April 2027 (Bedrock's model card)

Fix

  1. Find every use. In code and config, run git grep -n "claude-sonnet-4-5", which also catches the Google Cloud ID (claude-sonnet-4-5@20250929) and the Bedrock ID (anthropic.claude-sonnet-4-5-20250929-v1:0). For usage you can't see in code: Claude Console โ†’ Usage โ†’ Export gives a CSV by API key and model. In n8n, Anthropic Chat Model 1.3 defaults to this model; the free scanner reads exported workflows.
  2. Change the model ID to claude-sonnet-5-5 (on Amazon Bedrock: anthropic.claude-sonnet-5-5), in the same change as the steps below. Anthropic's guide also gives a Claude Code command for this: /claude-api migrate this project to claude-sonnet-5-5.
  3. Remove temperature, top_p and top_k. Anthropic's guide says sampling parameters return an error and doesn't print the message. API version 2026-10-21 returns a 400 for them on every model, and Anthropic says its latest SDK sends that version by default.
  4. Replace prefill, by what it was for. Output format: structured outputs (output_config.format), or tools with enum fields for classification. Preambles: ask for a direct answer in the system prompt. Continuations and context reminders: move them to the user message. Unwanted refusals: clear instructions in the user message are usually enough.
  5. Replace forced tool choice with auto and a strict tool:
    # before, on Sonnet 4.5
    "tool_choice": {"type": "tool", "name": "get_weather"}
    
    # after, on Sonnet 5.5: strict on the tool, auto here, and the prompt says when to use it
    "tools": [{"name": "get_weather", "input_schema": {...}, "strict": true}],
    "tool_choice": {"type": "auto"}
    Strict tools need additionalProperties: false on every object, and a request can have at most 20. The model can now answer without calling the tool, so say in the prompt when to use it. The token counting endpoint rejects forced tool choice too.
  6. Replace thinking budgets with an effort level:
    # before, on Sonnet 4.5
    "thinking": {"type": "enabled", "budget_tokens": 10000}
    
    # after, on Sonnet 5.5
    "thinking": {"type": "adaptive"},
    "output_config": {"effort": "high"}
    There's no fixed mapping from a budget to an effort level, so test two or three levels. Sonnet 5.5 thinks by default, and Sonnet 4.5 didn't. To keep up-front thinking off, send {"type": "between_tools"} at high effort or below; {"type": "disabled"} returns a 400.
  7. Fix how you read the response. It can start with a thinking block, so code that reads content[0].text breaks: read blocks by type, pass thinking blocks back unchanged in tool loops, and revisit max_tokens, which now covers thinking plus text. Also move output_format to output_config.format, remove interleaved-thinking-2025-05-14 and any context-window beta header, replace fine-grained-tool-streaming-2025-05-14 with eager_input_streaming: true on the tool, and parse tool input with a JSON parser.
  8. Pipeline built on forced tools and can't change it by the 30th? A smaller first step is an earlier Sonnet, which Anthropic says still accepts them:
    ModelForced tool choicePrefillThinking budgetsRetires (Anthropic)
    claude-sonnet-5-5400400400not sooner than 28 Sep 2027
    claude-sonnet-5works400400not sooner than 30 Jun 2027
    claude-sonnet-4-6works400works, deprecatednot sooner than 17 Feb 2027 (Foundry's table: 10 Feb 2027)
  9. Test with real requests before 30 November, and recount tokens: Anthropic says the same text produces about 30 percent more tokens on Sonnet 5.5 than on Sonnet 4.5.
Still on claude-sonnet-4-5, or already getting these 400 errors? I change the model ID in your code or exported n8n and Make workflows, replace prefill, forced tool choice and thinking budgets, and send a pull request (or the patched files, if you send a zip) within 48 hours. I run your tests with the model calls stubbed, because I don't ask for your API key. You run the last check with your key.

Get it fixed: $49

Pay by card, no account needed. Still failing after you merge: full refund within 30 days.

How it works: 1. Pay on Gumroad; the checkout asks for the repository. 2. Invite my GitHub user, Donrulezz, to that repository only (private is fine), or email a zip with the failing log to hello@deadlinefix.com. 3. You get a pull request with a list of every change; you review, merge and deploy. I never ask for cloud passwords or production keys.

Who does the work: me, Ashish, the owner of this site, based in India. My public code and tools are on GitHub: github.com/Donrulezz.

Rather do it yourself? The free AI model retirement scanner finds the model ID in code, config and n8n workflows.

Watch out

Sources

Did this fix it?

What's still not working?

Describe what happens and paste any error message. We read every report and fix the page.

Other errors breaking soon

All "breaking soon" fixes