Skip to content

“Model exo-free has been deprecated.” #54065

Closed

Description

@Taliyaha

Description

“Model exo-free has been deprecated.”Today I saw the newly released anonymous model 'Exo' and wanted to use it, but this happened.

Plugins

None

OpenCode version

2.0.26

Steps to reproduce

Dialogue Trigger

Screenshot and/or share link

Image

Operating System

win10

Terminal

No response

Activity

  1. opencode-agent commented on Oct 9, 2026

    @opencode-agent
    Contributor

    Thanks for the report, @Taliyaha. I can reproduce this on 2.0.26 (also the latest release): opencode run -m opencode/exo-free "hi" fails with Model exo-free has been deprecated.

    The error comes from the OpenCode Zen server, not from the app. A direct request with model exo-free to opencode.ai/zen/v1/chat/completions gets HTTP 410 ModelDeprecated. The same server's model list still includes exo-free, and the model catalog doesn't mark it as deprecated, which is why OpenCode still offers it. Updating OpenCode won't change this. The script below shows both responses.

    Related:

    For now, please pick another free Zen model in /models. Maintainers will look at the server side.

    Reproduction script (repro.sh)
    #!/usr/bin/env bash
    # Reproduces #54065: OpenCode Zen rejects exo-free as deprecated while still listing it.
    set -u
    echo "== /zen/v1/models lists exo-free:"
    curl -s https://opencode.ai/zen/v1/models | grep -o '"id":"exo-free"'
    echo "== models.dev entry (no deprecated status):"
    curl -s https://models.dev/api.json | python3 -c "import json,sys;m=json.load(sys.stdin)['opencode']['models'].get('exo-free');print(m and {k:m.get(k) for k in ('id','name','status','release_date')})"
    echo "== keyless chat completion with exo-free:"
    curl -s https://opencode.ai/zen/v1/chat/completions -H 'content-type: application/json' \
      -d '{"model":"exo-free","messages":[{"role":"user","content":"hi"}],"max_tokens":5}' -w '\nHTTP %{http_code}\n'

    Run it: bash repro.sh

  2. abawer commented on Oct 10, 2026

    @abawer

    As a temp workaround it is possible to fallback to the model you prefer by creating a local config file and setting the desired default model.
    Example for Linux users:

    ~/.config/opencode/opencode.json 
    

    Picking Big Pickle (naming should be like in opencode models list):

    {
      "$schema": "https://opencode.ai",
      "model": "opencode/big-pickle"
    }
    

    For Windows, this file should be created at %USERPROFILE%\.config\opencode\opencode.json

  3. hussain commented on Oct 11, 2026

    @hussain

    One more angle on impact: on a fresh install with no config and no provider login, exo-free is the default model, so this doesn't only hit users who pick Exo. Every new user's first prompt fails.

    Reproduced 2026-10-11 on OpenCode 2.0.26 with an empty home directory, on Linux x64 and Windows x64: opencode acp → session/new reports model=opencode/exo-free, and the first session/prompt fails with Model exo-free has been deprecated. (provider.invalid-request). OpenCode 1.18.35 under the same conditions defaults to opencode/big-pickle and works. Server state is unchanged as of today: still listed by /zen/v1/models, no status on models.dev, HTTP 410 on chat completions.

    We hit this while testing OpenCode 2 for the ACP registry (agentclientprotocol/registry#657), where it would be a new user's first experience.

  4. alperenalbay commented on Oct 14, 2026

    @alperenalbay

    Additional data point on the catalog/server mismatch — a different OpenCode line and a different trigger path.

    Environment: OpenCode 1.18.35 (npm global, channel latest), Windows_NT 10.0.26300 (win32 x64), plugins -opencode.browser and openchamber-agent-tool.

    What the model catalog actually returns for exo-free:

    {
      "id": "opencode/exo-free",
      "name": "Exo Free",
      "released": 1791244800000,
      "variants": ["high"],
      "cost": [{ "input": 0, "output": 0, "cache": { "read": 0, "write": 0 } }],
      "status": "active"
    }

    So it is not merely "missing a status field" — the catalog actively reports "status": "active" for a model the Zen server answers HTTP 410 on. Nothing client-side can filter it out.

    Request failure:

    {
      "type": "error",
      "error": {
        "type": "ModelDeprecated",
        "message": "Model exo-free has been deprecated."
      },
      "metadata": { "model": "exo-free" }
    }

    Server log (~/.local/share/opencode/log/opencode.log), two occurrences in two different sessions:

    timestamp=2026-10-12T13:50:41.883Z level=ERROR run=8a77ac17 message="Failed to drain Session" cause="AI.Error: Model exo-free has been deprecated. ... [cause]: AI.Error.InvalidRequest: Model exo-free has been deprecated." role=server sessionID=ses_edf32333affefWFVoVHxzKaLJR
    
    timestamp=2026-10-14T13:51:56.904Z level=ERROR run=8f115bc7 message="Failed to drain Session" cause="AI.Error: Model exo-free has been deprecated. ... [cause]: AI.Error.InvalidRequest: Model exo-free has been deprecated." role=server sessionID=ses_ec550e75effeAHw4crfizWQe4e
    

    Why it keeps getting hit again: exo-free remains in the session's recentModels list, so it stays near the top of the model picker. The stale active status plus the recency entry means the same dead model keeps resurfacing on every new session rather than falling out of the list.

    Reproduced 2/2 on 2026-10-12 and 2026-10-14. No workaround other than manually avoiding the model (setting a default model in config does prevent the failure).

  5. rekram1-node commented on Oct 14, 2026

    @rekram1-node
    Collaborator

    Free models run for a limited time, the model wasnt correctly updated in models.dev to say deprecated fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions