AI Model Retirement Lint for hardcoded LLM model IDs

Finds the model IDs in your code that vendors have already switched off, or have dated to switch off, with the replacement and the date.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hub
ext install ReadyStack.ai-model-retirement-lint
npx @readystack/ai-model-retirement-lint <file>
npx @readystack/ai-model-retirement-lint --mcp

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 33 rules AI Model Retirement Lint checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Scans every file in the repository, emits CI output that fails the build before a dead model ID can merge, and applies the vendor's replacement in place.

One payment, one licence key for this tool. The key is shown right after payment.

OpenAI removes 12 model IDs from the API in one sweep on 2026-10-23; Anthropic gives 60 days notice before a retirement.

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

The model IDs your assistant pinned have retirement dates. Your test suite does not.

Three of the eight model IDs in this llm.config.js already return an error - for the backend engineer who owns the repository the day a vendor's API stops answering.

line 3  [warn]  Shuts down 2026-10-23 on the OpenAI API.                        -> gpt-5.6-sol
line 4  [warn]  Shuts down 2026-10-23 on the OpenAI API.                        -> gpt-5.6-terra
line 5  [warn]  Shuts down 2026-10-23 on the OpenAI API.                        -> gpt-5.6-terra
line 6  [error] RETIRED 2025-10-28 on the Claude API - this request fails now.  -> claude-sonnet-4-6
line 7  [error] RETIRED 2026-04-20 on the Claude API - this request fails now.  -> claude-haiku-4-5-20251001
line 8  [warn]  Shuts down 2026-10-16 on the Gemini API.
line 9  [error] RETIRED 2026-08-26 on the OpenAI API - this request fails now.  -> gpt-transcribe
line 10 [warn]  Shuts down 2026-10-23 on the OpenAI API.                        -> gpt-image-2

That is the whole output, on one file, in the editor. The file that produced it is ordinary:

// llm.config.js - committed by an AI coding assistant
export const MODELS = {
  chat:      "gpt-4-turbo",
  cheap:     "gpt-3.5-turbo-0125",
  reasoning: "o3-mini-2025-01-31",
  claude:    "claude-3-5-sonnet-20241022",
  fast:      "claude-3-haiku-20240307",
  gemini:    "gemini-2.5-flash",
  voice:     "whisper-1",
  images:    "gpt-image-1",
};

Eight lines, eight findings. Three of them fail right now: claude-3-5-sonnet-20241022 was retired on 2025-10-28, claude-3-haiku-20240307 on 2026-04-20, and whisper-1 on 2026-08-26. The other five have dates that have not arrived yet. gemini-2.5-flash shuts down on 2026-10-16. The remaining four are part of the single OpenAI sweep on 2026-10-23 that removes 12 model IDs at once.

A retired model ID is not a syntax error. It is a valid string, it type-checks, every unit test written around it goes green - and it keeps going green until the vendor's API answers 404 instead of a completion, in production, on a date somebody else picked.

Why the assistant that wrote it cannot warn you

This is the part that makes the failure durable. The model that autocompleted claude-3-5-sonnet-20241022 into that config was trained before Anthropic published the retirement notice. Ask it whether the ID is current and it will tell you yes, confidently, because in the world it learned, it was. Its own model ID is frequently on the same list.

So the usual safety nets are all pointed the wrong way. The compiler sees a string. The linter sees a string. The test suite asserts against a mock. The assistant confirms it from the same training year that produced the mistake. Nothing in the loop holds a calendar.

What holds the calendar

AI Model Retirement Lint ships 33 rules, each one carrying a vendor's published date and the vendor's own recommended replacement. It runs over the file you have open and reports line by line, exactly as above.

Three severities separate what is already broken from what is scheduled. error means the call fails today. warn means a vendor has published a shutdown date that has not arrived. info means the vendor has named an earliest possible retirement date - useful when you are deciding what to pin for the next year.

Check the open file free

Checking the file you have open is free and complete: all 33 rules, every date, every replacement, nothing hidden or watermarked. There is also a command that prints the entire dated table so you can check an ID before you type it.

The licence key covers a different job rather than a larger portion of the same one - walking every file in the repository, emitting CI output that fails a build before a dead ID can merge, and rewriting a pinned ID to the vendor's replacement. That is 29 US dollars once.

Every date above was read from the vendors' own deprecation pages on 2026-09-09.

15 seconds — what it actually does

Questions people ask

What does AI Model Retirement Lint actually do?

It reads the file you have open and flags every LLM model ID pinned in it that a vendor has already retired or has published a shutdown date for. Each finding gives the line number, the exact date, and the replacement model the vendor itself recommends. It ships 33 rules covering OpenAI, Anthropic and Gemini.

Who is this for?

Engineers who ship OpenAI, Anthropic or Gemini calls with model IDs written into source, config or environment files. It is aimed at the person who owns the repository when a model ID goes dark in production - typically a backend or platform engineer on a team that added AI features during the last two years.

Why can I not just ask a chatbot whether my model ID is current?

Because the chatbot's training data predates the retirement notice. The assistant that autocompleted claude-3-5-sonnet-20241022 into your config will confirm that ID is correct, since both come from the same period. A dated table checked against the vendor's own deprecation page does not have that blind spot.

What is free and what needs a licence key?

Checking the open file is free and complete: all 33 rules run, every finding shows its date and replacement, and nothing is hidden or watermarked. The licence key covers a different job - scanning every file in the repository, failing a CI build, and rewriting pinned IDs to the vendor's replacement.

What does this cost compared with finding out the hard way?

The extension is 29 US dollars once,. The alternative is discovering a retired model ID when production starts returning errors, which is an unplanned incident plus the migration you were going to have to do anyway, done under time pressure rather than before the published date.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. OpenAI Model Deprecation Lint - retired model IDs in code checks the file you open against 33 rules from a rule set dated 2026-09-20, and points at the exact line with the fix. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →