Skip to content

Build Not yet confirmed elsewhere1 publisher 2 min read Published

Anthropic's Sonnet 4.5 replacement returns 400s on non-default temperature and on prefill

Anthropic stops serving claude-sonnet-4-5-20250929 on November 30, 2026, 61 days after announcing it. Its replacement rejects non-default temperature and prefill with 400s, a dev.to migration write-up says.

The Engineer · Build desk

How we use AI Send a correction

Illustration accompanying Anthropic's Sonnet 4.5 replacement returns 400s on non-default temperature and on prefill
Generated illustration
Retirement notice runs one day over the minimum Notice given for the model's retirement, the deprecation table's stated minimum for public models, and the retirement announcements that table lists.

The model's retirement comes 61 days after its announcement, one day over the stated minimum of 60 days' notice for publicly released models. Anthropic's deprecation table lists nine retirement announcements between January 2025 and September 2026.

Retirement notice runs one day over the minimum
FigureValueNoteClaim
Notice from announcement to retirement61 daysreports vary: 60–6119
Stated minimum notice60 days16
Retirements announced in Anthropic's table9 announcementsJanuary 2025 to September 20268

What happened

  • Responses from the replacement can open with thinking blocks, so any code that reads content[0] as the answer breaks.
  • The same text comes back as about 30% more tokens on the replacement, according to the post's reading of the migration guide.
  • Anthropic's deprecation table lists nine retirement announcements between January 2025 and September 2026.
  • The official Anthropic PHP SDK is in beta at major version 0, so the client library under the model can change too.
  • The post proposes four pieces: a TextClassifier interface on the domain side, an adapter for Anthropic, a fake that always gives the same answers, and a single contract test that both adapters must pass.

Why it matters

  • cost Output caps and token budgets sized on Sonnet 4.5 need re-measuring, because nothing errors to say the same text now costs more tokens.
  • constraint Per-call temperature settings and JSON-forcing prefills are now request errors, so every call site that carries them has to change before the cutoff.
  • decision Teams with scattered messages->create calls choose between patching each site by November 30 and moving the calls behind one port first.
  • precedent Retirements arrive often enough that a model-string edit is a recurring maintenance task with a deadline, and one adapter keeps each round to a single edit.

Moving to claude-sonnet-5-5, the recommended replacement [3], breaks code in three different places. The 400s fail at the API, immediately and loudly [4][5]. The thinking-block change fails inside your own parser, wherever code takes content[0] as the answer [6]. The token growth fails nowhere. It shows up only as a bigger count on the same text [7].

The post's hypothetical Laravel or Symfony app shows why that matters. A controller, two queued jobs, a console command and a service class each set their own temperature: 0 and their own { prefill to force JSON [20]. That is five migrations before the deadline, and the post adds that you do them all again for the next model [20].

The deadline is 61 days after the announcement [18]. Anthropic's deprecation table, according to the post, states a minimum of 60 days' notice for publicly released models [16]. This notice ran one day over that floor [19].

The post's fix keeps all of this out of the domain. The ticket-routing use case depends on a TextClassifier interface that takes a string and returns a Category enum, and on nothing from vendor/ [17]. The port holds no model name, no prompt and no temperature [13]. The new rules land in the Anthropic adapter: no sampling parameters, no prefill, thinking off up front, structured outputs through output_config.format, and the text block found by type [14]. We read the last two as direct replacements for the old habits. Structured outputs do the job the JSON prefill did, and the type lookup replaces content[0] [20][14][6].

The domain side is well made. The routing match covers every Category case, so adding a case makes PHPStan report the unhandled arm, and at runtime PHP throws UnhandledMatchError instead of quietly misrouting the ticket [15].

The layer underneath moves as well. The PHP SDK's docs say plainly that "APIs might change at any time" [9], and version 0.57.0 shipped on October 9, 2026 [10]. Laravel's first-party AI SDK reached 1.0 with breaking changes, renaming promptTokens and completionTokens to inputTokens and outputTokens [11]. In our view the adapter is the right place to absorb both kinds of change, because it is the one class that already names a vendor.

Two limits on the evidence. Every Sonnet 5.5 behavior above comes from one dev.to post describing the migration guide, so check the guide itself before changing production code. And the post does not say what workload produced the 30% figure. It transfers to your token counts only if your outputs resemble that workload's. Replay a sample of your own traffic to find out.

What to watch

  • Whether Anthropic's own Sonnet 5.5 migration guide matches the post's list of 400s and thinking-block behavior; a narrower rule would shrink the migration.
  • Token counts on a replay of your own traffic against claude-sonnet-5-5, which will show whether the 30% figure holds for your outputs.
  • The Anthropic PHP SDK moving past version 0, since a 1.0 release would likely bring renames the adapter has to absorb.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence40
Adoption
Insufficient
Hype gap+10
Incentives45
Confidence50
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    claude-sonnet-4-5-20250929 stops answering on November 30, 2026, and after the cutoff every request to it fails.

    Reported Supported Source: dev.to post on the Sonnet 4.5 retirementView cited source
  2. [2]

    Anthropic announced the retirement of claude-sonnet-4-5-20250929 on September 30.

    Reported Supported Source: dev.to post on the Sonnet 4.5 retirementView cited source
  3. [3]

    The recommended replacement for claude-sonnet-4-5-20250929 is claude-sonnet-5-5.

    Reported Supported Source: dev.to post on the Sonnet 4.5 retirementView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 14, 2026

    Claude Sonnet 4.5 Retires Nov 30: Put Your PHP App's LLM Behind a Port

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Loading related stories