Skip to content

models: GLM-5.3-Flash Free missing from the model list for a signed-in Zen account #56112

Closed as not planned

Description

@soybean-ccccnnn

Description

opencode/glm-5.3-flash-free is missing from the model list for my signed-in Zen account, so it can't be selected or used:

  • opencode models lists only the paid opencode/glm-5.3-flash and opencode/glm-5.3.
  • opencode run -m opencode/glm-5.3-flash-free "hi" → Error: Model unavailable: opencode/glm-5.3-flash-free (exit 1).
  • /models in the desktop app shows no "GLM-5.3-Flash Free".

Where the model does appear (all checked today, 2026-10-16):

  • Console docs "Free models" + pricing table: glm-5.3-flash-free, Free.
  • GET https://opencode.ai/inference/v1/models without auth → 88 models, includes glm-5.3-flash-free.
  • Same request with my Zen credential → 40 models, does not include it (cache-control: no-store, so not an edge cache).
  • The app's own catalog cache already has it: kv key models-dev:catalog in ~/.local/share/opencode/opencode.db (refreshed 2026-10-16 21:49) contains the entry with cost 0, limit.context 200000, limit.output 32000.

The model is registered for my account — POST /inference/openai/v1/chat/completions with "model": "glm-5.3-flash-free" returns 403 FreeTierError ("free tier can only be used from within OpenCode"), while bogus ids (definitely-not-a-real-model-xyz, not-a-real-model-free, glm-5.2-flash-free) return 400 "Upstream request failed: Model is unavailable.". So it resolves, it just is not in the list the client reads.

Not local state or client version:

  • Updated 2.0.30 → 2.0.31 and restarted the desktop app; the background service restarted too (/api/info reports 2.0.31 with a new pid). Still missing.
  • User-Agent: opencode/2.0.30, opencode/2.0.31, opencode-desktop/2.0.31, plus x-opencode-client: desktop, all return the identical 40-model list.
  • The account list changes between calls minutes apart (cat-jam-free disappeared, jev-1.13-free appeared), and contains jev-1.13-free, which is not on models.dev.
  • No config workaround: adding an entry under providers.opencode.models does not add a model to the opencode provider.

Related: beam-free fails differently, with 403 RegionError ("This model is not available in your country"), so region gating is reported separately from this.

Plugins

None.

OpenCode version

2.0.31 (Windows desktop app, auto-update channel latest)

Steps to reproduce

  1. On 2.0.31, sign in to Zen with /connect (OAuth device login, personal org).
  2. opencode models | Select-String glm → only opencode/glm-5.3-flash and opencode/glm-5.3.
  3. opencode run -m opencode/glm-5.3-flash-free "Reply with exactly: PONG" → Error: Model unavailable: opencode/glm-5.3-flash-free.
  4. Compare GET https://opencode.ai/inference/v1/models with and without Authorization: Bearer <zen token> → 88 models (includes glm-5.3-flash-free) vs 40 models (excludes it).

Screenshot and/or share link

N/A

Operating System

Windows 11 (Microsoft Windows [Version 10.0.22631.3527], x64)

Terminal

OpenCode desktop app (not a terminal client)

Activity

  1. opencode-agent commented on Oct 16, 2026

    @opencode-agent
    Contributor

    Thanks for the very thorough report. GLM-5.3-Flash Free not showing up for your signed-in Zen account sounds frustrating. From what you found, the app isn't the cause: when you're signed in, OpenCode uses the model list your Console account returns, and that account-specific list is what leaves glm-5.3-flash-free out (40 models signed in vs. 88 without auth). The service that builds that list isn't in this repository.

    Account and Console/Zen support isn't handled in GitHub issues, so please email help@anoma.ly with the details: your findings here and the time you checked. If you've already emailed, the team will get to it, especially now that we've seen it here. Please keep tokens, email addresses and other account details out of this public issue and put them only in the email.

    Related issues, in case they help:

    The bot will close this issue in 1 day.

  2. jinhuang712 commented on Oct 16, 2026

    @jinhuang712

    Adding cross-client reproduction and one data point that contradicts the original report.

    Not fixed in 2.0.31. Verified on @opencode/cli 2.0.31 (upgraded from 2.0.30 today).

    • opencode models still lists 19 opencode/* models; glm-5.3-flash-free absent.
    • opencode run -m opencode/glm-5.3-flash-free "hi" → same Error: Model unavailable.
    • Also fails with --standalone (fresh server, no stale state), so this is not the catalog-refresh race from fix(core): fresh standalone run rejects a model before catalog refresh completes #56119.
    • Adding it to provider.opencode.models in opencode.json does not register it either — config entries patch existing models, they don't add new ones.

    Also reproduces on the iOS app. /models on the iPhone build does not show it either, so this is cross-client rather than desktop-only.

    Data point that contradicts the original report: with my Zen credential, GET /inference/v1/models returns 88 models and includes glm-5.3-flash-free (cache-control: no-store), not 40-without. The entitled list appears to vary by account or region.

    The account-scoped config the client itself fetches contains it. GET https://opencode.ai/console/api/v2/config with the same credential returns providers.opencode.models with 86 entries, including glm-5.3-flash-free with full metadata (cost.input/output: 0, limit: {context: 200000, output: 32000}, capabilities text/image/video/pdf → text). The client then exposes only 19 of those 86.

    That points at a client-side filter over the server's own account config rather than a missing entitlement. For reference, models.dev/api.json lists 126 for this provider and also includes the model.

  3. soybean-ccccnnn commented on Oct 17, 2026

    @soybean-ccccnnn
    Author

    Root cause for at least one affected account — it is not a client-side filter.

    The client's visible opencode list equals (account config models without disabled: true) ∩ models.dev. Verified exactly on 2.0.32: 38 = 38, zero diff in either direction.

    GET https://opencode.ai/console/api/v2/config (same Zen credential) returns 84 opencode models for this account; 46 of them carry "disabled": true, including glm-5.3-flash-free:

    "glm-5.3-flash-free": {
      "name": "GLM-5.3-Flash Free",
      "cost": [{ "input": 0, "output": 0, "cache": { "read": 0 } }],
      "limit": { "context": 200000, "output": 32000 },
      "disabled": true
    }

    A free model that is offered on the same account (deepseek-v4.1-flash-free) has no disabled key. So the model is entitled but explicitly disabled for this account, which is why opencode models, /models, --model, and the iOS picker all hide it. beam-free and nemotron-3.5-super-vl-free are disabled the same way (beam-free additionally returns 403 RegionError).

    This also explains the signed-in vs signed-out difference in /inference/v1/models (40 vs 88 on my account): the signed-in response is the account-scoped set, the unauthenticated one returns the full catalog.

    Still reproducible on 2.0.32 after the update, and --standalone behaves the same, so it is not stale client state. The enablement decision is server-side, i.e. the Console/Zen path — I'm emailing help@anoma.ly with the account-specific details as requested.

  4. soybean-ccccnnn commented on Oct 17, 2026

    @soybean-ccccnnn
    Author

    Recording what changed (and what did not) after adding a payment method to this account.

    Before: GET https://opencode.ai/console/api/billing/payment-methods returned []. A card (Stripe) was added on 2026-10-17 and is now the default payment method.

    Nothing else changed:

    • GET https://opencode.ai/console/api/providers still reports freeModelsEnabled: true, newModelsEnabled: false, modelManagementEnabled: false, modelCount: 86, enabledModelCount: 40, and updatedAt: "2026-10-15T08:40:27.000Z" — identical before and after, so the enablement set was not recomputed.
    • The provider detail still reports {"apiId": "glm-5.3-flash-free", "enabled": false, "available": true, "status": "active"} (same for beam-free and nemotron-3.5-super-vl-free).
    • GET https://opencode.ai/console/api/config whitelist is still 38 entries and still omits glm-5.3-flash-free; the client list is unchanged and opencode run -m opencode/glm-5.3-flash-free still returns Model unavailable.
    • GET https://opencode.ai/console/api/billing/status is still {"billingMode":"prepaid","mode":"pay-as-you-go","balanceMicroCents":"0","availableMicroCents":"0"}; auto-recharge is off, so no credits were purchased.

    So adding billing details on its own does not enable the model for this org, and because modelManagementEnabled is false the org cannot enable it from the Console UI either. available: true with enabled: false suggests an enablement decision rather than a funding one.

  5. soybean-ccccnnn commented on Oct 17, 2026

    @soybean-ccccnnn
    Author

    Resolved for this account — it was model enablement, not billing and not the client.

    What the Console API reported for this org:

    • provider detail: {"apiId": "glm-5.3-flash-free", "enabled": false, "available": true, "status": "active"}
    • provider connection: newModelsEnabled: false, enabledModelCount: 40, updatedAt: 2026-10-15T08:40:27.000Z (predating the model's release)

    What did not fix it:

    • Adding a payment method to the org (the "billing details required" theory): payment-methods went from [] to one default card, and nothing changed — the model stayed enabled: false and updatedAt was not recomputed by that action.
    • Setting the provider-level policy PUT /console/api/providers/<id>/model-policy with {"freeModelsEnabled": true, "newModelsEnabled": true} (ProviderModelPolicyUpdate): accepted (200) and bumped updatedAt, but enabledModelCount stayed 40 and the model stayed enabled: false.

    What fixed it — the per-model override PUT /console/api/providers/<id>/models/glm-5.3-flash-free/override with {"enabled": true} (ModelOverrideUpdate), returning {"modelId": "glm-5.3-flash-free", "enabled": true}:

    • model state: {"apiId": "glm-5.3-flash-free", "enabled": true, "available": true, "status": "active"}
    • enabledModelCount: 40 → 41; the whitelist in GET /console/api/config: 38 → 39 entries, now containing glm-5.3-flash-free
    • the running client picked it up without a service restart, and opencode run -m opencode/glm-5.3-flash-free "…" succeeded (> build · glm-5.3-flash-free → PONG)

    Notes for anyone else hitting this:

    • modelManagementEnabled: false on the connection did not prevent the per-model override call from succeeding.
    • The model is 200K context / 32K output and free-tier only (callable only from inside OpenCode).
    • The client's list is exactly the enabled set intersected with models.dev, which is why the model is invisible until its enabled flag flips.
  6. opencode-agent commented on Oct 17, 2026

    @opencode-agent
    Contributor

    Hi @soybean-ccccnnn, closing this now. Which models your Console account gets is decided by the server, and that's handled by the support team by email, not in GitHub issues. If GLM-5.3-Flash Free is still missing, please email help@anoma.ly with your findings (and if you already have, the team will get to it). Please keep tokens and account details in the email, not here. Thanks again for the detailed investigation.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions