You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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):
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.
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).
Activity
opencode-agent commentedon Oct 9, 2026
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 withModel exo-free has been deprecated.The error comes from the OpenCode Zen server, not from the app. A direct request with model
exo-freetoopencode.ai/zen/v1/chat/completionsgets HTTP 410ModelDeprecated. The same server's model list still includesexo-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)
Run it:
bash repro.shabawer commentedon Oct 10, 2026
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:
Picking Big Pickle (naming should be like in
opencode modelslist):For Windows, this file should be created at
%USERPROFILE%\.config\opencode\opencode.jsonhussain commentedon Oct 11, 2026
One more angle on impact: on a fresh install with no config and no provider login,
exo-freeis 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/newreportsmodel=opencode/exo-free, and the firstsession/promptfails withModel exo-free has been deprecated.(provider.invalid-request). OpenCode 1.18.35 under the same conditions defaults toopencode/big-pickleand works. Server state is unchanged as of today: still listed by/zen/v1/models, nostatuson 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.
alperenalbay commentedon Oct 14, 2026
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.browserandopenchamber-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:Why it keeps getting hit again:
exo-freeremains in the session'srecentModelslist, so it stays near the top of the model picker. The staleactivestatus 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
modelin config does prevent the failure).rekram1-node commentedon Oct 14, 2026
Free models run for a limited time, the model wasnt correctly updated in models.dev to say
deprecatedfixed.