Repository navigation
Description
Summary
Every model in the Desktop model selector tooltip shows "No reasoning", including models that demonstrably support reasoning (variants with reasoning effort, compatibility.reasoningField). The V2 Model.Info API no longer carries a reasoning boolean, but the frontend still reads the V1 shape and the normalization layer hardcodes it to false.
Environment
- opencode version: 2.0.26
- OS: Linux 7.0.0-38-generic (linux x64, Linux Mint / Ubuntu 24.04 base)
- Terminal: xterm-256color
- Shell: /bin/bash
- Install/channel: latest (release .deb + curl CLI)
- Active plugins: ./plugins/nvidia-nim-sync, ./plugins/openrouter-free-sync, opencode-goal-plugin, opencode-mem, opencode-wakatime
Reproduction
- Open OpenCode Desktop (v2).
- Open the model selector (
/modelsequivalent) and hover any reasoning-capable model (e.g. any model with reasoning variants, or one withcompatibility.reasoningField: reasoning_content). - Read the "Reasoning" row of the tooltip.
Expected Behavior
Tooltip shows "Allows reasoning" (model.tooltip.reasoning.allowed) for reasoning-capable models.
Actual Behavior
Tooltip always shows "No reasoning" (model.tooltip.reasoning.none) for every model.
Additional Context
Root cause, verified against dev + installed 2.0.26 bundle:
packages/app/src/context/global-sync/utils.ts(normalizeProviderList) maps server models with hardcodedcapabilities: { temperature: false, reasoning: false, ... }. The V2Model.Infoschema (capabilities: { tools, input[], output[] }, plusvariants[]andcompatibility.reasoningField) has no reasoning boolean to map, so the information is dropped for 100% of models.packages/app/src/components/model-tooltip.tsxthen readsmodel.capabilities.reasoning(V1 shape, never present in V2) with fallback to top-levelmodel.reasoning(also absent in V2) — always falsy.- Verified via API: 0 of 477 catalog models expose
capabilities.reasoning; 32 exposecompatibility.reasoningField, yet all display "No reasoning".
Locally confirmed fix (for reference, not a PR): derive the flag from model.variants.length > 0 || !!model.compatibility?.reasoningField in the normalization step. Reproducible consistently. Related V1→V2 migration note: the old reasoning: true model field is intentionally ignored in V2, leaving no supported path to mark reasoning support.
Activity
opencode-agent commentedon Oct 10, 2026
Thanks for the detailed report and root-cause analysis! I think this is a duplicate of #50257, which reports the same "No reasoning" tooltip for every v2 model in the desktop model picker, with the same cause: v2 model info has no reasoning flag, and the desktop mapper sets it to
false. A fix that carries the catalog's reasoning flag through to the app is open in #50283.Possible duplicates and related issues, ordered from most to least likely:
Model.Capabilitieshas noreasoning)openai-compatiblemodels configured withreasoning: trueThe bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different. Your suggestion to derive the flag from
variants/compatibility.reasoningFieldwould be a useful addition on #50257 or #50283.opencode-agent commentedon Oct 11, 2026
Closing this as a duplicate of #50257, since there's been no reply showing how this one is different. That issue tracks the same "No reasoning" tooltip shown for every v2 model in the desktop model picker, and the fix is open in #50283. Please follow #50257 for updates. Your idea of deriving the flag from
variants/compatibility.reasoningFieldwould be welcome as a comment there. If your problem turns out to be different, reply here and we can reopen. Thanks again for the detailed report!