Skip to content
Engineering8 min read

Claude Sonnet 4.5 Retires Nov 30: Migration Checklist

Md Badsha
Platform Engineer
7 Oct 2026
On this page
Claude Sonnet 4.5 Retires Nov 30: Migration Checklist

If your code still calls claude-sonnet-4-5, it has an expiry date: November 30, 2026. On that day Anthropic retires the model, and requests to it start failing. The recommended replacement, Claude Sonnet 5.5, is cheaper per token — but a straight model-id swap will break your integration in at least half a dozen ways. This checklist gets you from 4.5 to 5.5 without a production incident.

The dates that matter#

Anthropic moved claude-sonnet-4-5-20250929 to deprecated on September 30, 2026, with retirement set for November 30, 2026. The named replacement is claude-sonnet-5-5, which went generally available on September 28, 2026. That is roughly two months of notice — consistent with Anthropic's usual 60-day deprecation policy.

One date caveat: these are Anthropic's own-platform dates. Amazon Bedrock and Google Cloud set their own retirement schedules, so if you call Sonnet 4.5 through either of those, check their model tables separately. And don't plan to finish on November 29 — providers routinely reduce capacity for deprecated models before the hard date, so treat early November as your real deadline.

What changes in price#

The good news first: the migration is a price cut, not a hike.

Claude Sonnet 4.5Claude Sonnet 5.5 (Anthropic list)Sonnet 5.5 on Tokens
Input / 1M tokens$3.00$2.00$2.20
Output / 1M tokens$15.00$10.00$11.00
StatusRetires Nov 30, 2026CurrentIn the catalog

Per-token prices drop by a third. But the bill story is more complicated, because Sonnet 5.5 changes how many tokens you burn per request — read the next section before you celebrate.

The breaking changes (what returns a 400)#

Sonnet 5.5 rejects request patterns that Sonnet 4.5 accepted. These are hard errors, not deprecations — your code gets a 400 and the request fails.

  • Thinking budgets are gone. thinking: {"type": "enabled", "budget_tokens": N} is rejected. Use thinking: {"type": "adaptive"} with an effort level (low, medium, high) instead. Set the effort explicitly — the recalibrated levels won't match your old budget's behavior.
  • thinking: {"type": "disabled"} is rejected. The replacement for "don't think" is {"type": "between_tools"}, which only allows thinking between tool calls. Note it isn't accepted at xhigh/max effort.
  • Sampling parameters are locked. Non-default temperature, top_p, and top_k return a 400. Remove them from your requests.
  • Prefill is gone. A conversation can no longer end with an assistant message. If your code forced JSON by prefilling an opening brace, switch to structured outputs or a tool with fixed fields.
  • Forced tool use is gone. tool_choice: {"type": "any"} or {"type": "tool"} returns a 400. auto and none still work — for schema-valid input, keep auto and mark the tool strict: true.
  • Old computer-use tool rejected. The computer_20251124 tool returns a 400; use computer_toolset_20260801 instead.

The silent changes (no error, different behavior)#

These won't crash your code, but they'll surprise you — and your bill.

  • Thinking is on by default. On Sonnet 4.5, no thinking field meant no thinking. On 5.5, a request with no thinking field runs adaptive thinking — and that thinking bills as output tokens. If your workload was tuned for zero thinking cost, set it explicitly.
  • ~30% more tokens per text. The same text produces roughly 30% more tokens than on Sonnet 4.5, so the per-token price cut is partly offset. Measure, don't assume.
  • Response shape changed. A response may now begin with a thinking block, and notes between tool calls can arrive inside thinking blocks with empty visible text. Code that reads content[0].text blindly is brittle — iterate the blocks and check types.
  • Thinking blocks are bound to the conversation. Tool-use loops must send thinking blocks back unchanged; editing the system prompt, tools, or an earlier message before a signed block can return a 400 on newer accounts.
  • Caching got cheaper to start. The minimum cacheable prompt drops from 1,024 to 512 tokens — long agent sessions replaying context get cheaper per turn.

The migration checklist#

Work through this in order; each step is small, and the whole thing is an afternoon.

  1. Inventory every 4.5 reference. Search for sonnet-4-5, claude-sonnet-4-5, and dated variants like claude-sonnet-4-5-20250929 across code, configs, evals, and fallback chains. Include the places you forgot: cron jobs, notebooks, and vendor dashboards.
  2. Swap the thinking parameters. Replace budget_tokens with adaptive + an explicit effort level, and disabled with between_tools. Start at medium effort — Anthropic's recommended starting point.
  3. Strip sampling parameters. Remove any non-default temperature, top_p, or top_k.
  4. Fix prefill and tool_choice. Replace assistant-message prefills with structured outputs; replace forced tool use with auto + strict.
  5. Harden response parsing. Iterate content blocks by type instead of reading content[0].text, and pass thinking blocks back unchanged in multi-turn loops.
  6. Re-run your evals. Effort levels are recalibrated — your old settings won't behave the same way. Compare quality, tokens used, and latency on a sample of real tasks before and after.
  7. Re-measure cost per task. The per-token price is lower, but ~30% more tokens per text and default-on thinking move the total. Compute cost per successful task, not per token.
  8. Canary, then cut over. Route a slice of traffic first and watch error rates — the 400s above show up immediately in logs. Keep the 4.5 route as a fallback until the canary is clean.

A minimal request that works on Sonnet 5.5#

python
from anthropic import Anthropic

client = Anthropic(api_key="tok_live_...", base_url="https://tokens.bd")

response = client.messages.create(
    model="anthropic/claude-sonnet-5-5",
    max_tokens=16000,
    thinking={"type": "between_tools"},   # replaces {"type": "disabled"}
    # effort: set explicitly via output_config; API default is high
    tool_choice={"type": "auto"},
    messages=[{"role": "user", "content": "Refactor this function."}],
)

for block in response.content:            # never read content[0].text blindly
    if block.type == "text":
        print(block.text)

The swap itself is one model id. Everything around it — thinking, sampling, tool choice, parsing — is the actual migration.

Test the migration on Tokens#

Tokens carries anthropic/claude-sonnet-5-5 in the model catalog at $2.20/$11.00 per million input/output tokens, on the Anthropic-compatible endpoint — so the migration above is literally a base URL and model-id change, no new SDK. Give the canary its own API key with a monthly spend cap and usage alerts, so an unexpected thinking-token spike warns you instead of billing you. If you pay in taka, top up with invoice like any other model — no international card involved. The docs cover setup for Claude Code, which points its sonnet alias at Sonnet 5.5 from v2.1.284 onward.

Migration FAQ#

What happens to Sonnet 4.5 requests after November 30, 2026? They fail. Retirement means the model stops serving on Anthropic's platform — plan as if the endpoint disappears, because it does.

Is Sonnet 5.5 actually cheaper for my workload? Per token, yes — a third less. Per task, it depends: the same text costs ~30% more tokens, and adaptive thinking now runs (and bills) by default. Re-run the math in our reasoning effort guide with your own thinking-token share.

Can I just change the model id and nothing else? No. At minimum, audit thinking parameters, sampling parameters, prefill usage, and forced tool choice — each returns a 400 on Sonnet 5.5. The checklist above covers the full set.

Do I need to change anything if I only use Claude Code? Mostly no — Claude Code v2.1.284 and later points its sonnet alias at Sonnet 5.5 with medium effort by default. But re-run your own evals: effort levels are recalibrated, so the same workload may behave differently.

What about Sonnet 4.5 on Bedrock or Google Cloud? Different clocks. Both set their own retirement schedules, independent of Anthropic's November 30 date. Check their model tables directly rather than assuming you're covered.

Prices and dates checked 8 October 2026. Anthropic's deprecations page is the authority for retirement dates; the model catalog for prices on Tokens.

Sources: Anthropic model lifecycle via endoflife.ai · Sonnet 5.5 breaking changes, digitalmatters · Sonnet 5.5 vs Opus 5.5 benchmarks and migration notes · Tokens model catalog

Was this page helpful?

Still stuck? Open a support ticket

Use the coding models you already know, through one API

One key for OpenAI- and Anthropic-compatible tools. Pay in BDT or USD, and keep the coding agent you already use.

Create an account

Follow us for more articles