Driftline
Checks Google model IDs for retirement status, retirement dates, and replacement models, and scans projects for retired or soon-to-retire Google references.
Checks OpenAI model IDs for retirement status, retirement dates, and replacement models, and scans projects for retired or soon-to-retire OpenAI references.
Driftline
See how your prompts change before an AI model is retired.

Driftline is a GitHub Action. It finds the OpenAI, Anthropic and Google model IDs in your code, checks them against the providers' published retirement dates, and runs your real prompts on both the current and the replacement model so you can see what changes before you switch.
It runs inside your own CI with your own API keys. There is no Driftline server: prompts go straight from your runner to your AI provider.
What you get
Annotations on the exact file and line of retired or retiring models (the 50 most urgent; the rest are in the report).
A report in the job summary, and optionally a GitHub issue that updates itself on each run and closes itself once nothing is left to fix.
Drift tests (Pro): each prompt in
.driftline/prompts.ymlruns on both models. You get a similarity score per prompt, and a hard failure if a JSON answer stops parsing.
Related MCP server: ai-model-lifecycle-index
Quick start
Copy
examples/driftline.ymlto.github/workflows/driftline.yml.Optional, for drift tests (Pro): copy
examples/prompts.ymlto.driftline/prompts.ymland add your provider API keys as repository secrets.Activate your Pro key once per GitHub account or organization, from inside one of its repositories:
npx @aidriftline/driftline activate <your-license-key>It prints a license code. Save that code as the secret
DRIFTLINE_LICENSE_KEY. A key works on up to 3 GitHub accounts or organizations;npx @aidriftline/driftline deactivate <code>frees one.
Inputs
Input | Default | What it does |
|
| Directory to scan |
|
| Models retiring within this many days count as "retires soon" ( |
|
| Fail the job on |
|
| Prompts for drift tests (YAML or JSON). Looked up from the repository root, then from |
| Driftline Pro license code from | |
|
| Open or update one issue labelled |
|
| Show model answers in the job summary. In a public repository job summaries are public, so set |
|
| Needs |
Outputs: findings (model references found) and at-risk (references to retired or soon-to-retire models).
Model IDs written the Amazon Bedrock way (anthropic.claude-β¦-v1:0, including ARNs), the Google Vertex AI way (claude-β¦@20240620) or with a router prefix (openrouter/openai/gpt-4, vertex_ai/β¦) are recognized too. Azure OpenAI deployments follow Microsoft's own retirement dates and are not checked. Mentions in Markdown and text files, such as a changelog, are reported as notices but never fail the build.
Drift tests make two API calls per prompt: one to the current model, one to the replacement. A prompt without model is tested on the model in your code that retires first. Calls time out after two minutes and are retried once if the provider is busy. When a provider names a replacement that is itself being retired, Driftline points to the model at the end of that chain.
API keys are read from OPENAI_API_KEY, ANTHROPIC_API_KEY and GEMINI_API_KEY (or GOOGLE_API_KEY).
How results are scored
Result | Meaning |
β Same | Similarity 0.90 or higher |
π‘ Changed | Similarity 0.60β0.90, or the current model is already retired and the new answer needs review |
π΄ Broken | Similarity below 0.60, or |
Text is compared with word and word-pair overlap. JSON is compared field by field.
Run it locally
No install, no key:
npx @aidriftline/driftline path/to/your/repo # report
npx @aidriftline/driftline path/to/your/repo --json # same, as JSONExit code 1 means a retired model is used in code.
For AI coding agents
If you are an agent (Claude Code, Cursor, Copilot, Codexβ¦) changing code that calls OpenAI, Anthropic or Google: run npx -y @aidriftline/driftline . --json before you pick or keep a model ID, and do not introduce an ID whose status is retired or at-risk. Without a shell, look the ID up in registry/models.json or at https://aidriftline.com/models/<model-id>/. More, including a snippet for AGENTS.md / CLAUDE.md: aidriftline.com/agents.
MCP server
Driftline also runs as an MCP server, so your agent can ask it directly. Tools: check_models (status, date and replacement for a list of IDs), scan_project (retired and retiring IDs in a folder, with file and line) and upcoming_retirements (what retires in the next N days). It reads the daily-updated list from aidriftline.com and falls back to the copy in the package when offline.
Claude Code:
claude mcp add driftline -- npx -y @aidriftline/driftline mcpCursor, Windsurf, Claude Desktop and other clients (mcp.json / claude_desktop_config.json):
{
"mcpServers": {
"driftline": { "command": "npx", "args": ["-y", "@aidriftline/driftline", "mcp"] }
}
}Needs Node 20+. Free, no key.
Retirement data
registry/models.json is maintained by hand from the official pages (OpenAI, Anthropic, Google) and records the date it was last checked. Google publishes only the earliest possible shutdown date, so Driftline reports those models as "may stop working" rather than "retired". Anthropic's "not sooner than" dates are informational and never trigger a warning. Audio, image, video and embedding models are scanned and reported too, but only text models are drift-tested. Some Google models are not shut down but routed: after the date, requests to the old ID are answered by the replacement model (routes: true in the registry). Driftline flags those too, because the call keeps working while the answers change.
Every model also has its own page with the date, replacement and source: aidriftline.com/models.
Development
npm testNo dependencies. Node 20 or later.
License
Elastic License 2.0. You can use Driftline for free in your own CI. You may not offer it as a hosted service, or remove or work around the Pro license-key check.
Available Tools
3 toolscheck_modelsCheck model IDs for retirementARead-onlyIdempotent
Look up OpenAI, Anthropic and Google model IDs and return, for each one, its retirement status, retirement date, days left and replacement. Use it before writing, changing or keeping a model ID in code, or when the user asks whether a model still works. To find the IDs inside a codebase use scan_project instead; to list everything retiring soon use upcoming_retirements. Read-only. Data comes from the providers' official deprecation pages, re-checked daily at aidriftline.com (fetched with a 4 s timeout, falling back to the copy in the package when offline). IDs not in the registry return status "unknown": no retirement is published for them, which does not prove the ID exists. Up to 100 IDs per call; extra IDs are ignored.
Inputs: ids (required). Returns: models, all_dates, next_step, registry_source, +1 more
scan_projectScan a project for retiring model IDsARead-onlyIdempotent
Scan a project folder for OpenAI, Anthropic and Google model IDs in code and config files and report the ones that are retired, retiring soon, deprecated or being re-routed, with file and line, most urgent first. Use it to audit a repository or before a release. For IDs you already know use check_models; for a time-based list use upcoming_retirements. Read-only: reads files on this machine and never changes them. Scans subfolders recursively, skips .git, node_modules, vendor, dist, build and similar folders, and files over 1 MB. Mentions in .md and .txt files are marked in_docs. Returns at most 200 findings (truncated: true when cut). Fails with an error if the path does not exist.
Inputs: path, include_ok. Returns: flagged, scanned, findings, all_dates, +5 more
upcoming_retirementsList upcoming model retirementsARead-onlyIdempotent
List OpenAI, Anthropic and Google models whose retirement or re-routing date falls in the next N days, soonest first, with replacement for each. Use it to answer "what is being retired soon?" or to plan migrations. It does not look at code: use scan_project for that, or check_models for specific IDs. Read-only. Models already past their date are not included (check_models reports those as retired). Anthropic "not before" dates are left out because those models are still active.
Inputs: days, provider. Returns: days, count, models, all_dates, +3 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 3 tools
Each tool targets a clearly distinct entry point: scan_project audits a codebase, check_models looks up specific known IDs, and upcoming_retirements returns a time-window list. The descriptions explicitly cross-reference each other ("for IDs you already know use check_models"), leaving almost no room for misselection.
All snake_case, but two names follow verb_noun (scan_project, check_models) while upcoming_retirements is an adjective_noun phrase describing a list rather than an action. Minor, readable deviation only.
Three tools is a lean surface, but for a narrow read-only domain (AI model retirement auditing) each tool maps to a genuinely different question and none is redundant. Slightly thin, yet well scoped for the purpose.
The three access patterns β repo scan, ID lookup, time-based list β cover the core audit and migration-planning workflows with no dead ends. Minor gaps: no registry browsing/filtering by provider, and check_models silently ignores IDs beyond 100 with no paging or batch alternative.
Maintenance
Related MCP Connectors
Check if an AI model is deprecated, retiring, or silently changed price or context window.
Find retiring AI models and outdated API SDKs in your code, with dates, replacements and guides.
Check whether an LLM model id is deprecated, retiring, or retired, and what to migrate to.
AI model shutdown dates, replacements, and migration diffs. Free, no API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceCheck whether an LLM model id is deprecated, retiring, or retired, and what to migrate to. Covers OpenAI, Anthropic, Azure, Bedrock, Google, and Cohere from each provider's own deprecation pages.5176 npm1MIT
- FlicenseNot gradedqualityCmaintenanceEnables querying AI model lifecycle and deprecation data across OpenAI, Anthropic, Google Gemini, and Amazon Bedrock, including model status, sunset dates, and recommended replacements via MCP tools.-
- AlicenseAqualityBmaintenanceEnables checking project files like Dockerfile, .nvmrc, and CI workflows to determine whether pinned runtime, database, and OS versions are still supported, providing end-of-life dates, latest patches, and upgrade targets for 470+ products.31MIT
- AlicenseAqualityCmaintenanceEnables an AI assistant to inspect project dependency and runtime files, determine each component's support status and end dates, and rank upgrade urgency using bundled endoflife.date data.41MIT