Skip to content

mistral/devstral-2512 incorrectly marked status = "deprecated" (Mistral API reports it active) #3040

Description

@DagMariusR

Summary

providers/mistral/models/devstral-2512.toml sets status = "deprecated", but Mistral's own API reports this model as active (deprecation: null). Because downstream consumers such as OpenCode hide any model with status = "deprecated" from their model picker, mistral/devstral-2512 becomes unselectable even for accounts that have full, valid access to it.

Evidence

models.dev registry data (providers/mistral/models/devstral-2512.toml):

name = "Devstral 2"
family = "devstral"
release_date = "2025-12-09"
status = "deprecated"

Mistral live APIGET https://api.mistral.ai/v1/models, object for devstral-2512:

{
  "id": "devstral-2512",
  "owned_by": "mistralai",
  "name": "devstral-2512",
  "description": "Official devstral-2512 Mistral AI model",
  "max_context_length": 262144,
  "aliases": ["devstral-medium-latest", "devstral-latest", "mistral-code-agent-latest"],
  "deprecation": null,
  "deprecation_replacement_model": null,
  "type": "base"
}

Note that Mistral not only reports deprecation: null, but the model is aliased as devstral-latest and mistral-code-agent-latest — i.e. it is a current, recommended model, not a deprecated one.

Impact

OpenCode (which bundles/caches this registry) filters out every model with status = "deprecated" from both the /models picker and -m provider/model resolution. As a result mistral/devstral-2512 (and the aliases devstral-latest / devstral-medium-latest, which resolve to the same model) silently disappear from OpenCode despite the API key having valid access. The only workaround end users have is to define a separate openai-compatible provider pointing at https://api.mistral.ai/v1, bypassing the registry entirely.

Suggested fix

Remove the status = "deprecated" line from providers/mistral/models/devstral-2512.toml (and please double-check the rest of the devstral-* family under providers/mistral/models/, several of which appear to carry the same status while Mistral still serves them).

Verification steps

curl -s https://api.mistral.ai/v1/models \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  | jq '.data[] | select(.id=="devstral-2512") | {id, deprecation, aliases}'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions