Skip to content

Evaluation and modelsMethodology

Replacing Claude Sonnet 4.5 before Nov 30: a test method

Anthropic lists claude-sonnet-5-5 as the replacement for Sonnet 4.5, but a listed replacement is not a tested one. This is a one-month method: build a test set from your traffic, score success, price it per successful task, check cache behavior, and cut over in stages.

By INFRO Editorial

Published

10 min read

A single amber path on a dark ground forking into two glass branches of slightly different brightness

In short

Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) retires November 30, 2026, with claude-sonnet-5-5 as the recommended replacement 1. Test two or three candidate configurations on a sample of your own requests, compare cost per successful task and cache read share rather than list rates, and finish the cutover about ten days before the date.

Key takeaways

  • Sonnet 4.5 retires on Anthropic-operated platforms on November 30, 2026; Bedrock and Google-managed Vertex set their own dates, so read your cloud's page too.
  • Test model-plus-configuration pairs, not model names: Sonnet 5.5 with default adaptive thinking and Sonnet 5.5 with the lowest thinking setting can differ a lot in output tokens.
  • Rate the candidates by cost per successful task from recorded usage, because a newer tokenizer, thinking tokens and a different cache-read rate all move the real number.
  • Measure cache behavior on its own with production request spacing; a model switch starts every prefix cold.
  • Finish the cutover by about November 20 and keep the old configuration as a rollback only until the retirement date.

What actually ends on November 30

Anthropic lists claude-sonnet-4-5-20250929 as deprecated since September 30, 2026, with a retirement date of November 30, 2026 and claude-sonnet-5-5 as the recommended replacement.1 After the retirement date, requests to the model fail.1 Today is October 27, so you have 34 days, and the real deadline is earlier: the last stage of a safe rollout is a week of watching.

The date is not the same everywhere. Anthropic's dates apply to its own platforms: the Claude API, Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed) and Microsoft Foundry. Amazon Bedrock and Claude Models on Google Cloud (Google managed) set their own schedules, so status and dates can differ.1 Microsoft's Foundry schedule shows claude-sonnet-4-5 retiring 2026-11-30 with claude-sonnet-5-5 as the replacement.2 For Bedrock, Anthropic points to Amazon's model lifecycle page rather than stating a date.3 Write down the date your own platform gives. If it is earlier than November 30, every date below moves earlier with it.

The replacement column is a default, not a verdict. Microsoft says the replacement is its recommended one and, where supported, the target for automatic upgrades at retirement, and that you do not need to wait for a replacement to be listed before evaluating another compatible model.2 An automatic upgrade you never tested is exactly the failure this method is meant to prevent.

Choose model-and-configuration candidates

Do not test "Sonnet 5.5". Test pairs of model and request configuration, because the configuration changes cost and behavior. On Sonnet 5.5 a request with no thinking field runs adaptive thinking; on Sonnet 4.5 the same request ran without thinking, and thinking tokens are billed as output tokens.4 The lowest setting, thinking: {"type": "between_tools"}, works at low, medium and high effort.4 So Sonnet 5.5 is at least two candidates.

Anthropic's list rates for the realistic options, with the earliest retirement date it gives for each:51

CandidateInput / output per MTokCache read per MTokEarliest retirement (Anthropic)
Sonnet 4.5 (baseline)$3 / $15$0.30November 30, 2026
Sonnet 4.6$3 / $15$0.30not sooner than February 17, 2027
Sonnet 5$2 / $10$0.20not sooner than June 30, 2027
Sonnet 5.5$2 / $10$0.10not sooner than September 28, 2027
Haiku 5.5 (prompts up to 100K tokens)$0.10 / $0.50$0.01not sooner than October 7, 2027
List rates as published by Anthropic on the day of reading. Your contract rates replace them.

Sonnet 4.6 costs the same per token as 4.5 and buys you about eleven weeks, so it is a stopgap, not a destination. Sonnet 5.5 has the same prices as Sonnet 5 except for cache reads, at half the Sonnet 5 rate.4 Haiku 5.5 is worth a slot only if some of your Sonnet 4.5 traffic is classification, extraction or routing; Anthropic positions it for those.5 Its rates change above 100,000-token prompts, so price it per request, not per model. Keep the field to three or four pairs. More than that and you will not finish scoring.

One trap for the cost column: Claude 4.7 and later models use a newer tokenizer that produces roughly 30% more tokens for the same text, while Sonnet 4.6 and earlier use the previous one.5 A lower rate per token does not mean a lower bill until you have counted tokens on your own text.

Make the requests runnable before you compare anything

The first failures you will see are not quality differences; they are 400 errors. Sonnet 5.5 rejects temperature, top_p and top_k, assistant prefill, forced tool choice (tool_choice of type any or tool), thinking budgets and thinking: {"type": "disabled"}.4 Coming from Sonnet 4.5 you also move output_format to output_config.format, set output_config.effort explicitly and parse tool call input with a standard JSON parser.4 Responses can begin with thinking blocks, so code that reads content[0].text breaks; read blocks by type, and raise max_tokens because it covers thinking plus text.4

Do this in a branch, with the candidate configuration as data, not as scattered if statements:

candidates.py
CANDIDATES = {
    "baseline-45": {"model": "claude-sonnet-4-5-20250929"},
    "s55-default": {
        "model": "claude-sonnet-5-5",
        "output_config": {"effort": "medium"},
        "max_tokens": 8192,            # covers thinking + text
    },
    "s55-lowthink": {
        "model": "claude-sonnet-5-5",
        "thinking": {"type": "between_tools"},
        "output_config": {"effort": "medium"},
        "max_tokens": 4096,
    },
}

If you call through the SDK on Bedrock, pin the SDK version of the baseline run. Anthropic notes that the latest SDK sends API version 2026-10-21 by default, including through Bedrock, and that the ARN-versioned models on Bedrock, which include Sonnet 4.5, do not support it and can return a 400.3 An unpinned upgrade in your test harness can break the baseline you are measuring against. See the API version notes for what else changes.

Build the test set from your own traffic

Pull the sample from real requests, not from a benchmark. Anthropic suggests exporting usage from the Console as CSV, broken down by API key and model, to find where Sonnet 4.5 is still used.1 Use that to list every key and feature that touches the model; then sample requests per feature.

  • Stratify by feature, not by volume. A feature with 2% of traffic and strict JSON output deserves 40 cases even if the high-volume chat feature gets 40 too.
  • Include the ugly tail: the longest prompts, requests that ended with max_tokens, tool-calling turns, retries, and anything that a human later corrected.
  • Freeze inputs, including tool results, so each candidate sees the same thing. For multi-turn flows, replay recorded conversations and let only the last turn vary.
  • Write the pass check before you run. Schema validity, required fields, a tool called with valid arguments, a regex or a reference answer, and, only where those fail to capture it, a rubric scored by a separate judge model. Judge cost counts in your harness budget, not in the per-task cost.

Prompt and payload logging is off by default in many setups. If you do not already retain prompts, record the sample under your logging policy, with redaction, and delete it after the migration.

Score cost per successful task, not per request

For each candidate, run every sampled task end to end, including retries and repair calls, and sum the billed usage. Cost per successful task is the total cost of all attempts divided by the number of tasks that passed. A model that is cheaper per token but fails more often, or that needs a second call to repair its output, can cost more per success.

cost_per_success.py
# USD per million tokens, list rates. Replace with your contract rates.
RATES = {
    "claude-sonnet-4-5-20250929": dict(inp=3.00, out=15.00, write5=3.75, read=0.30),
    "claude-sonnet-5-5":          dict(inp=2.00, out=10.00, write5=2.50, read=0.10),
}

def call_cost(model, u):
    r = RATES[model]
    return (u["input_tokens"] * r["inp"]
            + u["output_tokens"] * r["out"]   # thinking tokens are billed as output
            + u.get("cache_creation_input_tokens", 0) * r["write5"]
            + u.get("cache_read_input_tokens", 0) * r["read"]) / 1e6

def cost_per_success(tasks):
    # tasks: [{"model": ..., "usages": [every attempt's usage], "passed": bool}]
    total = sum(call_cost(t["model"], u) for t in tasks for u in t["usages"])
    passed = sum(t["passed"] for t in tasks)
    return total / passed if passed else float("inf")

Use the usage the provider returned, not a token counter, so thinking tokens and cache fields are included. For a deeper treatment of the metric see cost per successful task.

Test cache behavior as its own experiment

A cache is per model and per exact prefix, so switching models starts every prefix cold. Anthropic's cache covers the whole prompt in order: tools, then system, then messages, up to the block marked with cache_control.6 The default lifetime is five minutes, measured from the start of the request that writes or reads the entry, so a slow response eats into it.6

The economics differ by model. A five-minute write costs 1.25 times the base input price, a one-hour write 2 times, and a read 0.1 times, except Sonnet 5.5 and Opus 5.5 at 0.05 times.5 Caching pays after one read for the five-minute duration and after two reads for the one-hour duration.5 Because the Sonnet 5.5 read rate is lower while the prefix may be larger under the new tokenizer, your break-even number of reads per entry changes. Compare against prompt caching break-even if you are weighing the one-hour option.

Run the cache test separately from the quality run, with production spacing:

  1. Replay the same prefixes with the real gaps between requests (use the logged timestamps, not a tight loop; a tight loop reports a hit rate production never sees).
  2. For each candidate record cached share = cache reads ÷ (cache reads + cache writes + uncached input).
  3. Count writes per hundred requests. A model with a high write count and few reads is paying the write premium for nothing.
  4. Look at tools, system prompt and examples order. Anything volatile near the top, such as a timestamp or a user name, breaks the prefix.

If a gateway or router sits in front, remember failover: caches live with the upstream that served the request, and a failover to another connection resets the cache for that prefix.7 Include that case in the test if your traffic fails over.

What changes on Bedrock, Vertex and Azure

Bedrock. Sonnet 4.5 is anthropic.claude-sonnet-4-5-20250929-v1:0, and newer models must be called through an inference profile with a prefix such as us.; passing the base ID returns a 400.3 Sonnet 5.5 appears as anthropic.claude-sonnet-5-5 on the Messages-API endpoint, and access is set per model, so check Bedrock model access in your account before you plan on it.8 Sonnet 5 is listed as open to all Bedrock customers.8 Compare like with like: regional and multi-region endpoints on Bedrock and Google-managed Vertex carry a 10 percent premium over global endpoints, so a test on global routing does not predict a regional bill.5

Vertex. The Google-managed schedule is its own; read it before you commit dates. The same endpoint-type premium applies.5

Azure Foundry. The schedule lists Claude in two versions, one hosted on Anthropic infrastructure and one hosted on Azure.2 It has a claude-sonnet-4-5 row for version 1 with a 2026-11-30 retirement, and lists claude-sonnet-5 in both versions, but it has no row of its own for claude-sonnet-5-5, which it names only as the replacement.2 Confirm in your subscription and region that the target you are testing is deployable. Also note that the same table shows Haiku 4.5 on Foundry retiring 2026-11-15, so it is a poor place to park traffic.2

Cutover schedule, October 27 to November 30

Aim to be on 100% of the new configuration by November 20, with the old one still reachable until the retirement date.

Dates (2026)StepExit condition
Oct 27–30Inventory keys, features and platforms; record your platform's retirement date; freeze the test setEvery Sonnet 4.5 caller has an owner
Oct 31–Nov 6Fix 400s, run all candidates offline, score success and cost per successTwo finalists, one fallback
Nov 9–13Cache-spacing replay; shadow run on live inputs with answers discardedCache read share and cost per success hold on live inputs
Nov 165% canary on the lowest-risk featureNo rise in errors, length stops or retries
Nov 17–1925%, then 50%, one feature group per stepEach step holds a full day
Nov 20100% on the chosen configurationCache warm, spend within forecast
Nov 23–27Hold; Sonnet 4.5 remains the rollback until the endRemove the Sonnet 4.5 path in code
Nov 30RetirementNothing should call the old ID

If your organization has a holiday change freeze, treat its start as the new November 30. Split by feature, not by random request share, when a feature's behavior is tied to one model's formatting; for random splits see A/B testing LLM models.

Where a gateway helps, briefly

For traffic that goes through INFRO, the model-lifecycle feature records vendor retirement dates, warns organizations still sending a retiring model and, from the shutdown date, refuses it before any provider call, naming the replacement. Routing rules can send a metadata-matched share of requests to the candidate target, and model allowlists can stop a project from calling the old ID after cutover. Traffic changes watch request metadata for the regressions this migration produces: cached share of prompt tokens down at least 10 points, output tokens per request up at least 15%, and a rise in answers cut off by the length limit.9 They cannot judge answer quality, because they read no prompts or answers, so the scoring above stays yours.9 Per-request usage records and custom rates give you the cost data the script above needs on your own contract rates.

Questions readers ask

Will Sonnet 4.5 keep answering after November 30 if I do nothing?
On Anthropic-operated platforms, no. Anthropic states that requests to models past the retirement date fail 1. On Bedrock and Google-managed Vertex the date is set by the cloud, so read its lifecycle page; do not assume it is later.
Is Haiku 4.5 a safe place to park traffic for a month?
Not on every platform. Microsoft's schedule lists claude-haiku-4-5 on Foundry with a retirement date of 2026-11-15, earlier than Sonnet 4.5's 2. Check your platform's date before treating it as a stopgap.

From the team that builds it

Where this shows up in INFRO

INFRO is a control plane in front of the provider accounts you already hold. The capabilities below are the parts of it this article touches, each with the documentation that defines its behaviour.

  • Model retirements

    Available with a plan

    INFRO records each vendor's model deprecations and shutdown dates, warns organizations still sending a retiring model, and from the shutdown date refuses it before any provider call, naming the replacement.

  • Traffic changes

    Available with a plan

    Changes in your traffic that come with no error: a model answered by a new snapshot, longer answers, a lost prompt cache, more fallbacks, answers cut off by the length limit, slower responses or a new error mix. Each finding names the likely cause and the estimated weekly change in provider cost. INFRO sees request metadata, not answers, so it does not judge answer quality.

    Read the documentation for Traffic changes
  • Usage and cost per request

    Available with a plan

    Every request records its model, latency, token or unit counts, and estimated provider cost, queryable by project and key.

    Read the documentation for Usage and cost per request
  • Routing rules

    Available with a plan

    If-rules on a route send matching requests to their own targets, by metadata, feature, end user, key, project, prompt size, streaming, images, tools or time of day. Failure rules decide per failure kind whether to retry, move on or stop.

    Read the documentation for Routing rules
  • Model allowlists

    Available with a plan

    Approve which models a project may call; anything else returns a policy error instead of a line item.

    Read the documentation for Model allowlists
  • Negotiated provider rates

    Available with a plan

    Enter the rates your contracts actually carry, per model and optionally per provider, so estimated cost uses them before the vendor's list rate. Included on every plan.

    Read the documentation for Negotiated provider rates

INFRO accounts are self-serve. Provider usage is billed to you by your providers; INFRO charges a software subscription and takes 0% of model spend. See plans.

Sources

Numbered in order of first citation. Each was opened and checked against the claim on the date shown.

  1. 1.Model deprecations (opens in a new tab) — Anthropic (Claude Platform Docs). Accessed Oct 27, 2026.
  2. 2.Model retirement schedule - Microsoft Foundry (opens in a new tab) — Microsoft Learn. Accessed Oct 27, 2026.
  3. 3.Claude on Amazon Bedrock (Opus 4.6 and earlier) (opens in a new tab) — Anthropic (Claude Platform Docs). Accessed Oct 27, 2026.
  4. 4.Claude Sonnet 5.5 migration guide (opens in a new tab) — Anthropic (Claude Platform Docs). Accessed Oct 27, 2026.
  5. 5.Pricing (opens in a new tab) — Anthropic (Claude Platform Docs). Accessed Oct 27, 2026.
  6. 6.Prompt caching (opens in a new tab) — Anthropic (Claude Platform Docs). Accessed Oct 27, 2026.
  7. 7.Prompt caching (opens in a new tab) — INFRO Docs. Accessed Oct 27, 2026.
  8. 8.Claude in Amazon Bedrock (Opus 4.7 and later) (opens in a new tab) — Anthropic (Claude Platform Docs). Accessed Oct 27, 2026.
  9. 9.Traffic changes (opens in a new tab) — INFRO Docs. Accessed Oct 27, 2026.

About this article

Read on 27 October 2026: Anthropic's model deprecations, pricing, prompt caching, Sonnet 5.5 migration guide and both Bedrock pages, Microsoft's Foundry retirement schedule (last updated 2026-09-23), and INFRO's prompt caching and traffic changes docs. Google Vertex's own retirement page was not read, so no Vertex-specific date is stated; quality of any candidate is left for your test, not asserted.

Last checked against its sources on . The next review is due by . No separate named reviewer is recorded for this article.

How articles are written, sourced and corrected is set out in the editorial standards.