Eleven model snapshots retire on October 23. Find them in your repo before your users do A developer released modelshift, an open-source CLI tool that scans a repository for retiring model IDs, reports their file and line locations with recommended replacements, and can apply fixes or open pull requests. Running it across four unrelated open-source repositories surfaced 131 distinct retiring or retired model IDs referenced 1,649 times across 296 files. The tool also includes a replay command that compares JSON validity, refusals, tool calls, latency and text similarity between an old and new model, and exits with code 1 when a retirement falls within the configured window so it can serve as a CI check. OpenAI shuts down eleven model snapshots on 2026-10-23, among them gpt-4-turbo , gpt-4o-2024-05-13 , o3-mini and o4-mini . The GPT-5 and o3 snapshots follow on 2026-12-11. Anthropic and Google retire models on their own schedules too. Most codebases find out when requests start returning 404. I wrote modelshift to answer two questions from the terminal. Which model IDs in my repo are going away, and does the replacement still behave the same? npx github:Arthur031221/modelshift scan examples/sample-app The scan walks the repository and lists each model ID with its file and line, its provider, its lifecycle status and the recommended replacement. The status comes from a bundled registry built from the providers' deprecation pages. The exit code is 1 when something retires within the window, so it also works as a CI check. I ran it over four popular, unrelated open-source repositories. It found 131 distinct model IDs that are retiring or already retired, referenced 1,649 times across 296 files. modelshift fix examples/sample-app fix prints a diff that swaps each ID for its replacement and drops parameters the new model rejects. Claude Opus 4.7 and later, for example, return a 400 when a request sets temperature , top p or top k . Add --write to apply the change, or --pr to open a pull request. Swapping the string is the easy part. The hard part is knowing whether the new model still returns valid JSON, still calls your tools with the same arguments, refuses more often, or takes twice as long. modelshift replay --from qwen3:1.7b --to qwen3:4b --prompts demo/prompts.jsonl --no-think replay runs your prompts on both models and compares JSON validity, refusals, tool calls, length, latency and text similarity, then writes an HTML report. It works against any OpenAI-compatible endpoint, including a local Ollama server, so you can try it without API keys. In the bundled example, a weather tool call that the small model made was missing from the larger model's answer, which is the kind of change a string swap would never show. It needs Node 20 or newer and is not on npm yet, so run it with npx from GitHub. The registry is maintained by hand from provider pages, so a wrong date is the most likely bug. If you find one, please open an issue. The code is at https://github.com/Arthur031221/modelshift https://github.com/Arthur031221/modelshift under the MIT license.