foretop

foretop ebb — LLM deprecation scanner

Find every model that is about to retire.

Provider changelogs tell you a model is going away. Ebb tells you exactly where it is used, who owns it and how long is left — without uploading your code.

Available now · Apache-2.0

Keep scan history in Foretop Hub — free for 3 repositories

ebb · langchain-ai/langchain @ e92c8a0 · real output
$ uvx foretop-ebb scan . ✕ break code-davinci-001 — 1273d overdue (2023-03-23) → gpt-4o libs/partners/openai/langchain_openai/llms/base.py:733:13 ✕ break code-cushman-002 — 1273d overdue (2023-03-23) → gpt-4o libs/partners/openai/langchain_openai/llms/base.py:734:13 ≠ drift gpt-3.5-turbo-instruct — 12 days (2026-09-28) → gpt-5.6-terra libs/partners/openai/langchain_openai/llms/azure.py:34:41 ? unknown 512 further model references with no verified retirement entry
179 references with a published deadline · 2,552 source files · scanned 2026-09-16 · exit 1

How it works

Three steps, in order, because each depends on the last.

First

Scan locally

Source, configuration, Terraform, Dockerfiles, notebooks and environment templates are read locally. Nothing is executed or uploaded.

Then

Resolve aliases against a reviewed registry

Dated snapshots, regional prefixes and version aliases resolve to canonical model identifiers with cited provider sources.

Last

Route every deadline to an owner

CODEOWNERS is used first, with git blame as fallback, and results are ranked by time remaining and blast radius.

The registry is public

Every entry below is one Ebb actually matched in the LangChain scan, shown with the provider page it came from and the day a person last verified it. Nothing is scraped straight into your results: the refresher opens a pull request, a person merges it.

Retirement registry entries matched in the LangChain scan
ModelProviderAnnouncedEnds ReplacementVerified
anthropic.claude-sonnet-4-20250514-v1:0bedrock2026-04-142026-10-14—2026-09-08
chatgpt-image-latestopenai2026-06-022026-12-01gpt-image-22026-09-08
claude-3-5-haiku-20241022anthropic2025-12-192026-02-19claude-haiku-4-5-202510012026-08-31
claude-3-5-sonnet-20241022anthropic2025-08-132025-10-28claude-sonnet-4-62026-08-31
claude-3-haiku-20240307anthropic2026-02-192026-04-20claude-haiku-4-5-202510012026-08-31
claude-3-sonnet-20240229anthropic2025-01-212025-07-21claude-sonnet-4-62026-08-31
claude-opus-4-1-20250805anthropic2026-06-052026-08-05claude-opus-4-82026-08-31
claude-opus-4-20250514anthropic2026-04-142026-06-15claude-opus-4-82026-08-31
code-cushman-001openai2023-03-202023-03-23gpt-4o2026-09-16
code-cushman-002openai2023-03-202023-03-23gpt-4o2026-09-16
code-davinci-001openai2023-03-202023-03-23gpt-4o2026-09-16
code-davinci-002openai2023-07-062024-01-04gpt-3.5-turbo-instruct2026-09-16
embed-english-v2.0cohere—2026-04-04—2026-08-24
gemini-1.5-progoogle2025-09-292025-09-29gemini-2.5-pro2026-08-31
gemini-2.5-pro-preview-05-06google2025-11-042025-12-02gemini-2.5-pro2026-09-08
gemini-3-pro-image-previewgoogle2026-05-282026-06-25gemini-3-pro-image2026-08-24
gemini-3.1-flash-image-previewgoogle2026-05-282026-06-25gemini-3.1-flash-image2026-08-24
gemini-3.1-flash-lite-previewgoogle2026-05-072026-05-25gemini-3.1-flash-lite2026-08-24
gpt-3.5-turboopenai—2026-10-23gpt-5.6-terra2026-08-31
gpt-3.5-turbo-0301openai—2024-09-13gpt-3.5-turbo2026-08-31
gpt-3.5-turbo-0613openai2023-11-062024-09-13gpt-3.5-turbo2026-09-08
gpt-3.5-turbo-16k-0613openai2023-11-062024-09-13gpt-3.5-turbo2026-09-16
gpt-3.5-turbo-instructopenai2025-09-262026-09-28gpt-5.6-terra2026-09-08
gpt-4openai—2026-10-23gpt-5.6-sol2026-08-31
gpt-4-0314openai2025-09-262026-03-26gpt-52026-09-16
gpt-4-0613openai2026-04-222026-10-23gpt-5.6-sol2026-08-12
gpt-4-32kopenai2024-06-062025-06-06gpt-4o2026-09-16
gpt-4-32k-0314openai2024-06-062025-06-06gpt-4o2026-09-16
gpt-4-32k-0613openai2024-06-062025-06-06gpt-4o2026-09-16
gpt-4-turboopenai2026-04-222026-10-23gpt-5.6-sol2026-08-12
gpt-4-turbo-previewopenai—2026-03-26gpt-5.6-sol2026-08-31
gpt-4.1-nanoopenai2026-04-222026-10-23gpt-5.6-luna2026-09-08
gpt-4o-2024-05-13openai2026-04-222026-10-23gpt-5.6-sol2026-08-12
gpt-5-chat-latestopenai2026-04-222026-07-23gpt-5.6-sol2026-09-16
gpt-5-codexopenai2026-04-222026-07-23gpt-5.6-sol2026-09-16
gpt-5-pro-2025-10-06openai2026-06-112026-12-11gpt-5.6-sol2026-09-08
gpt-5.1-chat-latestopenai2026-04-222026-07-23gpt-5.6-sol2026-09-16
gpt-5.1-codexopenai2026-04-222026-07-23gpt-5.6-sol2026-09-16
gpt-5.1-codex-maxopenai2026-04-222026-07-23gpt-5.6-sol2026-09-16
gpt-5.1-codex-miniopenai2026-04-222026-07-23gpt-5.6-terra2026-09-16
gpt-5.2-chat-latestopenai2026-05-082026-08-10gpt-5.6-sol2026-09-16
gpt-5.2-codexopenai2026-04-222026-07-23gpt-5.6-sol2026-09-16
gpt-5.3-chat-latestopenai2026-05-082026-08-10gpt-5.6-sol2026-09-16
gpt-audioopenai2026-07-202027-01-20gpt-audio-1.52026-09-08
gpt-audio-miniopenai2026-07-202027-01-20gpt-audio-1.52026-09-08
gpt-image-1openai2026-04-222026-10-23gpt-image-22026-09-08
gpt-image-1-miniopenai2026-06-022026-12-01gpt-image-22026-09-08
gpt-image-1.5openai2026-06-022026-12-01gpt-image-22026-09-08
o1openai—2026-10-23gpt-5.6-sol2026-08-31
o1-miniopenai2025-04-282025-10-27o4-mini2026-08-12
o1-previewopenai2025-04-282025-07-28o32026-08-12
o1-proopenai—2026-10-23gpt-5.6-sol2026-08-31
o3-miniopenai—2026-10-23gpt-5.6-sol2026-08-31
o4-miniopenai—2026-10-23gpt-5.6-terra2026-08-31
rerank-english-v2.0cohere2024-12-022025-04-30rerank-v3.52026-09-08
text-ada-001openai2023-07-062024-01-04gpt-3.5-turbo-instruct2026-09-16
text-babbage-001openai2023-07-062024-01-04gpt-3.5-turbo-instruct2026-09-16
text-curie-001openai2023-07-062024-01-04gpt-3.5-turbo-instruct2026-09-16
text-davinci-002openai2023-07-062024-01-04gpt-3.5-turbo-instruct2026-09-16
text-davinci-003openai2023-07-062024-01-04gpt-3.5-turbo-instruct2026-09-16

Questions

Does it send my code anywhere?

No. Detection is entirely local and needs no network. If you connect the hosted hub it sends findings — file paths, line numbers, model identifiers — never file contents. The command line works forever without an account.

What does "unknown" mean in the output?

That Ebb found a model reference it cannot resolve to a verified registry entry — often a floating alias like -latest, which by definition has no announced end date. It is reported as unknown rather than clear, because we cannot tell you it is safe.

What happens when a date is wrong?

Use the structured public correction form with the affected model ID, proposed value, authoritative source URLs, evidence location, and observation date. A maintainer will respond within five business days; that commitment does not guarantee resolution because every change still requires evidence review. The automated refresher can only open a pull request; it never publishes a date on its own.

Will it open migration pull requests for me?

Not today, and not by default when it does. Rewriting a model identifier changes behaviour, and this tool is trusted precisely because it only reads.

Run it on yours

Same command, same registry, no account and no upload.

Keep scan history in Foretop Hub — free for 3 repositories