deniz.in

Markets

Weather

Loading weather

· via dev.to (home feed)

Claude Sonnet 4.5 retires Nov 30, and moving to Sonnet 5.5 breaks existing calls

Anthropic cuts off Claude Sonnet 4.5 on November 30, 2026. A dev.to post details how the Sonnet 5.5 migration breaks temperature settings, prefills and response parsing — and how to contain model churn.

Claude Sonnet 4.5 retires Nov 30, and moving to Sonnet 5.5 breaks existing calls

Anthropic will retire Claude Sonnet 4.5 (model id claude-sonnet-4-5-20250929) on November 30, 2026. According to a dev.to post by Gabriel Anhaia, the company announced the retirement on September 30, and once the cutoff passes every request sent to the retired model will fail. The recommended successor is claude-sonnet-5-5, and switching to it involves considerably more than editing a model string.

The swap is not one line

The post walks through what actually breaks, citing Anthropic's Sonnet 5.5 migration guide. Requests that set a non-default temperature now come back with a 400 error. Assistant prefills, a common trick for forcing JSON output, are likewise rejected. Responses can begin with thinking blocks, and on Sonnet 5.5 thinking is enabled by default when the field is omitted, so code that blindly reads the first content element will break. Identical input text also consumes roughly 30% more tokens on the new model, which affects both cost and token budgets.

Anhaia's framing for PHP developers is to search a Laravel or Symfony application for its model calls: the result might be a controller, two queued jobs, a console command and a service class, each carrying its own temperature setting and its own prefill workaround. That multiplies into several separate migrations to finish before the deadline, and the same exercise repeats for whichever model retires next.

Churn is the baseline, not the exception

The retirement is not an isolated event. Per the post, Anthropic's deprecation table lists nine retirement announcements between January 2025 and September 2026, with a stated minimum of 60 days' notice for publicly released models.

The surrounding tooling shifts just as often. The official Anthropic PHP SDK is in beta on a 0.x major version (0.57.0 shipped on October 9, 2026) and its documentation warns that the APIs may change at any time. The community openai-php/client is also pre-1.0, at v0.21.0 as of September 17, 2026. Framework abstractions churn too: Laravel's first-party AI SDK reached 1.0 with breaking renames, moving promptTokens and completionTokens to inputTokens and outputTokens, while Symfony AI was still described as approaching its 1.0 release in June.

The comparison the post draws is that a database driver might change every few years, whereas the LLM stack changes every few months — making it the dependency where an architectural boundary pays off fastest.

Isolate the model behind a port

The proposed fix is a hexagonal layout. The domain defines a small interface, such as a TextClassifier that maps ticket text onto a Category enum, containing no model names, prompts, temperatures or token limits. Use cases depend only on that interface. Every vendor-specific detail lives in an Anthropic adapter written to Sonnet 5.5's rules: no sampling parameters, no prefill, thinking set to the lowest available level (per the post, a fully disabled setting now returns a 400), structured output requested through output_config.format, and the text block located by type using PHP 8.4's array_find rather than by index. The JSON schema is generated from the enum's cases so the two cannot drift, and a match expression over the cases turns an unhandled category into a loud failure instead of a misrouted ticket.

Two implementations then satisfy the port: the real adapter and a deterministic fake, both pinned by a single contract test. The next retirement becomes one adapter rewrite rather than an application-wide hunt.

Why it matters

Model deprecations are now a recurring operational event for anyone shipping LLM-backed software, not a rare one-off migration. Hosted models come with a retirement cadence measured in months, pre-1.0 SDKs and shifting framework abstractions, and the November 30 cutoff leaves a fixed, short runway. The post's PHP-specific port-and-adapter pattern is one author's approach, but the underlying lesson is general: treat the model provider as a volatile infrastructure detail, keep it behind a narrow interface your tests can verify, and make the eventual swap a contained change instead of a codebase-wide scramble.

  • #anthropic
  • #claude
  • #php
  • #deprecation
  • #hexagonal-architecture
  • #llm

Related posts