Skip to content

providers: overrides for built-in opencode-go models (limit, name) are ignored in desktop 2.2.3 #60597

Open

Description

@Cuteshy

Summary

In OpenCode Desktop 2.2.3, limit and name overrides under providers.opencode-go in ~/.config/opencode/opencode.json have no effect on the built-in Claude Haiku 5.5 model. The model picker and context indicator still show the catalog value (1M context). Custom providers defined in the same file load normally.

Environment

  • opencode version: Desktop app 2.2.3 (CFBundleShortVersionString); CLI unavailable (opencode not on PATH)
  • OS: macOS, Darwin 27.2.0 (arm64)
  • Terminal: Unavailable: desktop app
  • Shell: /bin/zsh
  • Install/channel: latest
  • Active plugins: none found in config

Reproduction

  1. Add this to ~/.config/opencode/opencode.json:
{
  "providers": {
    "opencode-go": {
      "models": {
        "claude-haiku-5-5": {
          "limit": { "context": 100000, "output": 32000 }
        }
      }
    }
  }
}
  1. Save the file. The log shows config.updated, provider.updated, and model.updated events for the location.
  2. Open /models and select OpenCode Go → Claude Haiku 5.5. The info panel shows "1M context", and the context indicator uses 1M.
  3. Run /reload or restart the app. Nothing changes.
  4. Add a name override to the same entry (for example "name": "Claude Haiku 5.5 (100k test)"). The picker still shows "Claude Haiku 5.5".
  5. Add a new alias under the same provider, "claude-haiku-5-5-100k": { "modelID": "claude-haiku-5-5", "name": "Claude Haiku 5.5 (100k)", "limit": { "context": 100000, "output": 32000 } }. It does not appear in the picker.
  6. Control: add a custom provider in the same file ("Sushi": { "package": "@opencode-ai/ai/providers/openai-compatible", "settings": { "baseURL": "..." }, "models": { ... } }). It appears in the picker.

Expected Behavior

Overrides under a built-in provider's models map apply to that model, as the providers guide describes ("Add or override models in a provider's models map"). The picker and the context indicator should show the configured limit.context, and a name override should change the displayed name.

Actual Behavior

Overrides under providers.opencode-go have no effect. The picker shows the catalog name, and the info panel and context indicator show the catalog's 1M context. New aliases under that provider don't appear. The custom Sushi provider in the same file works.

The catalog (models.dev) lists claude-haiku-5-5 for opencode-go with context: 1000000 and output: 128000.

A limit override with only context worked as a 100k cap until the most recent update. The published config schema requires both context and output in limit, so I added output. The client still ignores the override.

Additional Context

Activity

  1. opencodejr commented on Oct 30, 2026

    @opencodejr
    Contributor

    Thanks for the detailed report. I could reproduce what you're seeing, but only in one setup, and there it turns out to be intended behaviour in 2.2.3, not a bug.

    What I tried (CLI, with your exact providers.opencode-go entries):

    • Without an OpenCode Console connection: on both 2.2.2 and 2.2.3, the name, the 100k/32k limit and the claude-haiku-5-5-100k alias all apply.
    • With a Console connection whose workspace config supplies opencode-go: 2.2.2 applies your overrides. 2.2.3 ignores them: the catalog name, a 1M context and no alias, which matches your report.

    Why: 2.2.3 added a rule in #60315. If a provider comes from your connected Console workspace, user and project config can't change it at all, and that includes its models. Only managed (admin) configuration can. The policies docs describe this: "A provider the connected Console workspace supplies can't be changed by user, project, or remote configuration." This is also why it worked for you until the last update. The providers guide doesn't mention this exception yet.

    If you're signed in through the OpenCode Console, that's what's happening here. What you want is still reasonable: a way to apply harmless per-model overrides, such as a context cap or a display name, to Console-supplied models. That would be a feature request, and maintainers will decide whether to allow it. Your workspace admin may also be able to set these through managed configuration.

    If you're not signed in through the Console and still see this on 2.2.3, please reply with how OpenCode Go is connected (Console sign-in or an API key) and the provider-related lines from the log. In that case it would be a different problem.

  2. Cuteshy commented on Oct 30, 2026

    @Cuteshy
    Author

    Update: I switched from Console sign-in to a service key, both under the OpenCode Go subscription. Still on desktop 2.2.3. The overrides under providers.opencode-go are still ignored, and the log shows failed to load OpenCode provider config ... 401 GET https://opencode.ai/console/api/v2/config repeating every minute. This may be the workspace-supplied case, since the subscription still supplies opencode-go.

  3. opencodejr commented on Nov 2, 2026

    @opencodejr
    Contributor

    I'm closing this as not planned since there hasn't been a reply. In my testing, overrides under providers.opencode-go (the limit, the name and the alias) are only ignored when the provider comes from a connected OpenCode Console workspace. That's a deliberate rule added in 2.2.3 (#60315): user and project config can't change a provider the Console supplies. Without a Console connection, the same overrides still work.

    If you'd like to be able to apply harmless per-model overrides, such as a context cap or a display name, to Console-supplied models, please open a feature request. If you're not signed in through the Console and still see this on 2.2.3 or later, please reopen or comment here with how OpenCode Go is connected and the provider-related log lines, and we'll take another look. Thanks for the thorough report.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions