Why we're building SunsetLint (and when you should just use a free feed)
October 9, 2026 · Updated November 9, 2026
On 30 September 2026, Anthropic announced that Claude Sonnet 4.5 will retire on 30 November 2026. That's 61 days' notice. If your team uses Sonnet 4.5, the clock is already running.
The announcement itself is clear. It names the model, gives the date and recommends a replacement. What it can't tell you is where Sonnet 4.5 lives in your code. Is it only in the main API service? In the nightly summarization job? In the evaluation notebook someone wrote in the spring? In a Terraform variable? In the fallback path that only runs when the primary model times out?
That question, "where is it?", is what SunsetLint is being built to answer.
The problem, in numbers we can source
We like to be careful about claims, so here is what we know from providers' own pages.
- Retirements are frequent. Between October 2025 and November 2026, Anthropic retired, or scheduled the retirement of, ten model IDs: two Sonnet 3.5 IDs, Opus 3, Sonnet 3.7, Haiku 3.5, Haiku 3, Sonnet 4, Opus 4, Opus 4.1, and now Sonnet 4.5.
- Notice is getting shorter. Anthropic's 2025 announcements gave about four to six months. Each 2026 announcement gave about 60 to 62 days, which is the minimum in its policy.
- It isn't only model IDs. Claude 4.7 and later models reject
temperature,top_pandtop_kwith HTTP 400, and version 1.0 of Anthropic's Python SDK removed them. A request can break when you change the model, even if the new ID is right. - It isn't only Anthropic. OpenAI announced the Assistants API deprecation on 26 August 2025 and sunset it on 26 August 2026. GPT-4.5-preview had about three months' notice; o1-preview and o1-mini had three to six.
- Platforms differ. Amazon Bedrock and Google Vertex AI set their own retirement dates for the models they host, which can differ from the model maker's.
None of this is a crisis. It's maintenance. But it's maintenance with a hard deadline, and the deadlines are getting closer together.
What providers already do
Providers aren't hiding anything. OpenAI says impacted customers are notified by email and in its documentation. Anthropic emails customers with active deployments and offers a usage export, so you can see which models your organization actually called.
Those are good tools, and you should use them. They have two limits.
First, the email goes to the account owner. In many companies that's a founder, a finance contact or whoever set up billing. The engineers who know where the model is used aren't on the list.
Second, a usage export shows what ran, not what's written. Code that runs rarely, such as fallbacks, quarterly scripts or a staging configuration, may not appear in the period you export. Those are exactly the paths that break quietly after the shutdown date.
What package bots do
Renovate and Dependabot keep your dependencies current. They're good at it, and we use them. But a model ID is a string in your code, not a package version. A sunset endpoint is a URL. A rejected parameter is a keyword argument. None of these are things a package bot checks.
What we're building
SunsetLint is a GitHub App, in early access. The design is deliberately small:
- You install it on your GitHub organization and choose repositories.
- It reads the code (read-only access; it can't change anything) and matches it against a set of rules.
- Each rule is an identifier pattern with the provider's shutdown date, the recommended replacement and a link to the provider's notice. A person verifies each rule against that source before it ships.
- It opens one rolling issue per repository: file, line, identifier, shutdown date, replacement, source.
- On the planned Pro plan, it also checks pull requests, so a retired ID copied from an old snippet doesn't come back.
Matching is plain rules: literal strings and patterns. We don't send your code to an AI model. We store findings (path, line, rule ID, the matched public identifier), not code.
What we won't claim
We won't claim to find every reference. No rule set can. If a model name is assembled at runtime from two variables, a text match won't see it. Instead, each report will say which rules it used and when they were last verified, and each rule links to its source, so you can judge for yourself.
We also won't add a rule until we've checked the date on the provider's own page. That's why our first rules focus on Anthropic and OpenAI, and why you won't find guessed Bedrock or Stripe dates on our site.
When you should not use SunsetLint
This matters more to us than a sign-up.
If a feed is all you need, use deprecations.info. It's free, it covers more AI providers than our first rules do, and it publishes example code, including a script that opens a GitHub issue when a model you use is being deprecated. For a single repository you know well, a feed plus that script is a perfectly good setup.
If you have one or two repositories, use grep. We wrote up the method in how to find deprecated model IDs in a codebase. It takes ten minutes, and it includes a CI step so retired IDs can't come back.
SunsetLint is for the case those don't cover well: many repositories, model IDs spread across services, notebooks and infrastructure, and a team that wants the answer to show up in GitHub, where the work happens, with a date and a source next to each line.
If you're facing the Sonnet 4.5 deadline now
You don't need us for this one. Here's the short version:
- Read Anthropic's notice for the exact IDs and the replacement.
- Search your repositories with a tolerant pattern such as
sonnet[-_. ]?4[-_.]5, including config, infrastructure and notebooks. - Compare the hits with Anthropic's usage export.
- Check whether your replacement rejects any parameters you send.
- Remove the old ID from fallbacks too, before 30 November.
Our Sonnet 4.5 note has the details, and the 60-day runbook turns them into a plan.
What's next
We're opening the App to early-access organizations first, with rules for the Anthropic and OpenAI retirements we have verified. If you'd like an invite, join early access. If you think we've got something wrong, a date, a claim, a comparison, tell us. We'd rather fix it than defend it.