Skip to content

fix(model_prices): add provider-announced deprecation dates for Bedrock, Mistral, Cohere and Gemini models - #36538

Merged
mateo-berri merged 3 commits into
litellm_internal_stagingfrom
devin/1786454005-model-registry-deprecations
Aug 11, 2026
Merged

fix(model_prices): add provider-announced deprecation dates for Bedrock, Mistral, Cohere and Gemini models#36538
mateo-berri merged 3 commits into
litellm_internal_stagingfrom
devin/1786454005-model-registry-deprecations

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

TLDR

Problem this solves:

How it solves it:

  • Added deprecation_date to 64 Bedrock/Mistral/Cohere/Gemini entries
  • Every date taken from an official provider lifecycle page

User Flow

Before: an operator wants to know which of their deployed models are being retired, but most already-retired models look healthy.

  1. They call GET https://litellm-domain/model/info and read metadata for mistral/mistral-large-2411, anthropic.claude-3-haiku-20240307-v1:0, cohere.command-r-v1:0
  2. No deprecation field is returned for any of them, even though each provider has published a retirement date
  3. They plan no migration, and requests start failing on the provider's retirement day

After: the same lookup surfaces the provider-announced retirement dates.

  1. They call GET https://litellm-domain/model/info for the same models
  2. Each now returns "deprecation_date" (2026-05-31, 2026-09-10, 2026-08-19 respectively)
  3. They schedule migrations before those dates instead of discovering the retirement from failed requests

Relevant issues

Supports #26900 (proactive model deprecation alerts / /model/deprecations). No new keys or formats were invented: the existing deprecation_date (YYYY-MM-DD) key is used.

Linear ticket

Sources for every changed value

Amazon Bedrock — EOL dates from https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html (AWS states Bedrock dates are authoritative for Bedrock, and may differ from the model provider's own schedule):

  • ai21.jamba-1-5-large-v1:0, ai21.jamba-1-5-mini-v1:0 → 2026-11-26
  • amazon.nova-canvas-v1:0 (+ us. profile, 1024-x-1024/50-steps/bedrock/… variant) → 2026-09-30
  • us.amazon.nova-premier-v1:0 → 2026-09-14
  • anthropic.claude-opus-4-1-20250805-v1:0 (+ us.) → 2027-01-08
  • anthropic.claude-sonnet-4-20250514-v1:0 (+ us./eu./apac./global.) → 2026-10-14
  • anthropic.claude-3-haiku-20240307-v1:0 (+ us./eu./apac. and both bedrock/us-gov-* entries) → 2026-09-10
  • anthropic.claude-3-sonnet-20240229-v1:0 (+ us./eu./apac.) → 2026-07-30
  • apac.anthropic.claude-3-5-sonnet-20240620-v1:0, bedrock/us-gov-east-1/…, bedrock/us-gov-west-1/… → 2026-07-30
  • apac.anthropic.claude-3-5-sonnet-20241022-v2:0 → 2026-07-30
  • bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0 → 2026-07-30
  • cohere.command-r-v1:0, cohere.command-r-plus-v1:0 → 2026-08-19
  • twelvelabs.marengo-embed-2-7-v1:0 (+ us./eu.) → 2026-11-30

Region-scoped rows were respected: e.g. Claude 3.7 Sonnet and Claude 3.5 Sonnet v1/v2 are Legacy only in the specific regions AWS lists, so only the matching bedrock/us-gov-* / apac. keys were dated, not the commercial base entries. Likewise eu.anthropic.claude-opus-4-1-… was left undated (Opus 4.1 is Legacy in US regions only).

Cohere — https://docs.cohere.com/docs/deprecations ("Effective April 4th, 2026, the following models will be retired"):

  • embed-english-v2.0, embed-english-light-v2.0, embed-multilingual-v2.0 → 2026-04-04

Mistral — retirement column of the "Deprecated & retired models" table at https://docs.mistral.ai/getting-started/models/models_overview:

  • 2025-03-30: mistral/mistral-large-2407, mistral/open-mistral-7b, mistral/open-mixtral-8x22b, mistral/open-mixtral-8x7b
  • 2025-06-06: mistral/open-codestral-mamba
  • 2025-06-16: mistral/codestral-2405, mistral/mistral-large-2402, mistral/mistral-medium-2312
  • 2025-11-30: mistral/devstral-small-2505, mistral/magistral-medium-2506, mistral/magistral-small-2506
  • 2025-12-31: mistral/pixtral-12b-2409
  • 2026-03-31: mistral/labs-devstral-small-2512
  • 2026-05-31: mistral/devstral-medium-2507, mistral/devstral-small-2507, mistral/mistral-large-2411, mistral/pixtral-large-2411, mistral/mistral-ocr-2505-completion
  • 2026-07-31: mistral/devstral-2512, mistral/magistral-medium-2509, mistral/magistral-medium-1-2-2509, mistral/magistral-small-1-2-2509, mistral/mistral-small-3-2-2506, mistral/open-mistral-nemo-2407
  • 2026-08-31: mistral/mistral-medium-2505, mistral/mistral-medium-2508, mistral/mistral-medium-3-1-2508

Only dated snapshots were touched; -latest aliases were left alone.

Gemini API — shutdown dates from https://ai.google.dev/gemini-api/docs/deprecations:

  • gemini/gemini-2.5-flash-preview-09-2025 → 2026-02-17 (page lists gemini-2.5-flash-preview-09-25, shutdown February 17, 2026)

The Gemini 2.5 GA models (gemini-2.5-pro / -flash / -flash-lite) and gemini-embedding-001 were reviewed and left untouched: the deprecations page shows "No shutdown date announced" for the three GA models, and gemini-embedding-001's existing 2028-05-14 already matches its published shutdown date.

Pre-Submission checklist

  • I have added meaningful tests
  • My PR passes all CI/CD checks (e.g., lint, format, unit tests)
  • My PR's scope is as isolated as possible; it only solves 1 specific problem
  • I have received a Greptile Confidence Score of at least 4/5 before requesting a maintainer review

This is a data-only change; it is covered by the existing registry schema tests rather than new tests.

Screenshots / Proof of Fix

Data-only change to the model cost map (root file plus the in-package backup copy, kept byte-for-byte in sync).

Validation at commit 6ad343c99c:

$ LITELLM_LOCAL_MODEL_COST_MAP=True uv run --no-sync pytest tests/test_litellm/test_model_prices_schema.py -q
18 passed

$ LITELLM_LOCAL_MODEL_COST_MAP=True uv run --no-sync pytest tests/test_litellm/test_deepseek_model_metadata.py \
    tests/test_litellm/test_mistral_medium_3_5_model_metadata.py tests/test_litellm/test_command_r7b_pricing.py \
    tests/test_litellm/llms/mistral -q
122 passed, 1 skipped

$ make lint
All checks passed!

Both JSON files re-parse cleanly with the same 3003 entries as before, and diff identically to each other.

Type

🐛 Bug Fix

Caveats (if any)

  • Only deprecation metadata changed; no pricing or limits touched
  • Bedrock dates are Bedrock-specific, not Anthropic/Cohere API dates
  • "Not sooner than" lifecycle dates were deliberately not added

Link to Devin session: https://app.devin.ai/sessions/cba0163ddd974ecf909edc5178feb056


Note

Low Risk
Data-only metadata additions to the model cost map; no pricing, limits, or runtime logic changes.

Overview
Adds deprecation_date fields to ~67 model entries across Bedrock, Mistral, Cohere, and Gemini so /model/info can surface provider-announced retirement dates.

Dates come from official lifecycle pages (AWS Bedrock, Cohere, Mistral, Gemini). Both model_prices_and_context_window.json and the in-package backup stay in sync. No pricing or capability fields were changed.

Reviewed by Cursor Bugbot for commit 6ad343c. Bugbot is set up for automated code reviews on this repo. Configure here.

…ck, Mistral, Cohere, Gemini models

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@CLAassistant

CLAassistant commented Aug 11, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ mateo-berri
❌ devin-ai-integration[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds provider lifecycle metadata for retiring Bedrock, Cohere, Mistral, and Gemini models while keeping both model-registry copies synchronized.

  • Adds provider-announced deprecation_date values to model snapshots and applicable regional aliases.
  • Retains the Vertex lifecycle date for gemini/gemini-embedding-001.
  • Removes unannounced shutdown dates from the Gemini 2.5 GA entries.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
model_prices_and_context_window.json Updates lifecycle metadata in the canonical model registry without changing pricing, limits, or routing behavior.
litellm/model_prices_and_context_window_backup.json Mirrors the canonical lifecycle metadata changes in the packaged fallback registry.

Reviews (2): Last reviewed commit: "fix(model_prices): drop unannounced shut..." | Re-trigger Greptile

@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@codspeed-hq

codspeed-hq Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 31 untouched benchmarks


Comparing devin/1786454005-model-registry-deprecations (6ad343c) with litellm_internal_staging (422d925)

Open in CodSpeed

@mateo-berri

Copy link
Copy Markdown
Contributor

bugbot run

Comment thread model_prices_and_context_window.json Outdated
},
"gemini/gemini-embedding-001": {
"deprecation_date": "2028-05-14",
"deprecation_date": "2026-07-14",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong Gemini embedding deprecation date

High Severity

gemini/gemini-embedding-001 had its deprecation_date changed from 2028-05-14 to 2026-07-14, but the official Gemini API deprecations page does not list this model, and Gemini embeddings docs still describe it as available. Google Cloud documents retirement no sooner than May 20, 2028. The July 14 date appears only on third-party trackers, so deprecation alerts would treat a still-supported model as already retired.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 20c0e0d. Configure here.

"mode": "image_generation"
},
"twelvelabs.marengo-embed-2-7-v1:0": {
"deprecation_date": "2026-11-30",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Invented Marengo Bedrock EOL date

Medium Severity

twelvelabs.marengo-embed-2-7-v1:0 and its us. / eu. variants were given deprecation_date 2026-11-30, but the AWS Bedrock Marengo Embed v2.7 model card lists the model as Active with EOL N/A, and it does not appear in the Bedrock model lifecycle EOL tables. Deprecation alerts would warn about a retirement AWS has not announced.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 20c0e0d. Configure here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The AWS Bedrock model lifecycle page does list Marengo Embed v2.7: Legacy May 29, 2026, EOL November 30, 2026, matching this date

@BerriAI BerriAI deleted a comment from devin-ai-integration Bot Aug 11, 2026
@BerriAI BerriAI deleted a comment from devin-ai-integration Bot Aug 11, 2026
…models

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@mateo-berri

Copy link
Copy Markdown
Contributor

@greptileai

@mateo-berri

Copy link
Copy Markdown
Contributor

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

2 issues from previous reviews remain unresolved.

Fix All in Cursor

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 6ad343c. Configure here.

@BerriAI BerriAI deleted a comment from devin-ai-integration Bot Aug 11, 2026

@mateo-berri mateo-berri left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mateo-berri
mateo-berri merged commit 40cd969 into litellm_internal_staging Aug 11, 2026
80 of 81 checks passed
@mateo-berri
mateo-berri deleted the devin/1786454005-model-registry-deprecations branch August 11, 2026 21:45
timothybrush pushed a commit to timothybrush/litellm that referenced this pull request Aug 12, 2026
AWS no longer serves `anthropic.claude-3-sonnet-20240229-v1:0`. The streaming
path returns a plain 404, "Model with the provided id
anthropic.claude-3-sonnet-20240229-v1:0 is not found", and the non-streaming
path answers 500 for the same reason. Our own cost map has carried a
2026-07-30 deprecation date for it since BerriAI#36538

That accounts for 20 failures across local_testing_part1, local_testing_part2
and llm_translation_testing. litellm maps both statuses correctly, so the
tests are what went stale, not the client

Replacement is `us.anthropic.claude-sonnet-4-5-20250929-v1:0`: a like-for-like
Sonnet, and the newest Bedrock Sonnet this repo exercises against the real API
in tests/e2e. Newer ids exist in the cost map, but nothing in the repo calls
them live, so picking one would be an unverified guess about model access on
the CI account

Scope is limited to the tests that actually issue a request. The occurrences
that assert on the model string itself, or that feed mocked transformations,
keep the old id so their assertions stay meaningful
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants