Repository navigation
Description
Summary
In the V2 app model picker, the hover tooltip's Reasoning row always reads "No reasoning" / 「不支持推理」, even for models that clearly support reasoning. For example opencode/deepseek-v4.1-flash-free shows "No reasoning" in the tooltip, yet still exposes low / high / max thinking-effort variants and streams a thinking block. The tooltip reads a capability field that V2 no longer populates.
Environment
- opencode version: desktop app
2.0.30(C:\Users\liche\AppData\Local\Programs\@opencode-aidesktop\OpenCode.exe); the npm CLI on PATH is a separateopencode-ai@1.18.31 - OS: Windows_NT 10.0.26200 (win32 x64)
- Terminal: xterm-256color (bug is in the app UI, not the terminal)
- Shell:
C:\WINDOWS\system32\cmd.exe - Install/channel: latest (desktop app installer)
- Active plugins: none (global config only sets
$schema)
Reproduction
- Open the app model picker (
/models). - Hover a reasoning model such as
opencode/deepseek-v4.1-flash-free(oropencode-go/deepseek-v4.1-flash). - Observe the tooltip's Reasoning row reads "No reasoning" / 「不支持推理」.
- Select the model: it still offers the
low/high/maxvariants (thinking effort) and streams a thinking block.
Expected Behavior
When a model advertises reasoning (has reasoning-effort variants and/or reasoning metadata), the tooltip should report that it supports reasoning.
Actual Behavior
The tooltip's Reasoning row reports "No reasoning" regardless of the model.
Additional Context
Source analysis:
- The label is decided in
packages/app/src/providers/models/tooltip.tsx:110-118frommodel.capabilities.reasoning(falling back tomodel.reasoning). - V2 catalog models do not carry a
reasoningcapability:packages/core/src/model.ts:32(mergeCapabilities) andpackages/core/src/models-dev.ts:232buildcapabilitieswith onlytools/input/output. - The client sync hardcodes the value:
packages/app/src/runtime/server/global-sync/utils.ts:84setsreasoning: false, so the tooltip readsfalsefor every catalog model.
The real reasoning behavior is driven by separate data that is already correct:
- Thinking effort =
variants, derived from models.devreasoning_options(packages/core/src/models-dev.ts:115viaVariant.resolve). Fordeepseek-v4.1-flashthis is{ "type": "effort", "values": ["low", "high", "max"] }. - Thinking text = streamed
reasoningparts, using the field frominterleaved/compatibility.reasoningField({ "field": "reasoning_content" }for DeepSeek).
models.dev reports reasoning: true and interleaved: { field: "reasoning_content" } for deepseek-v4.1-flash, so the catalog data is correct and only the tooltip's field is disconnected/stale.
- Frequency: always (deterministic).
- Impact: cosmetic/misleading only; reasoning features still work. No workaround needed.
Activity
opencode-agent commentedon Oct 16, 2026
Thanks for the clear report and the root-cause analysis! I think this is a duplicate of #50257, which tracks the same "No reasoning" tooltip for every V2 model in the app model picker. The cause is the same too:
capabilities.reasoningis hardcoded tofalsein the app's global-sync mapper, and the V2 model capabilities never carry the catalog'sreasoningflag. A fix is open in #55100.Possible duplicates and related issues, most likely first:
opencode-go/deepseek-v4.1-flash), same root cause; this is the main tracking issuereasoningflag to V2 model capabilities and closes desktop: model picker shows "No reasoning" for all V2 models — capabilities.reasoning is never set #50257reasoning: trueThe bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different.
opencode-agent commentedon Oct 17, 2026
We didn't hear back, so I'm closing this as a duplicate of #50257. That issue tracks the same "No reasoning" tooltip in the app model picker for V2 models, and the cause is the same:
capabilities.reasoningis hardcoded tofalse. A fix is open in #55100. Please follow #50257 for updates. If your case turns out to be different, reply here with the details and we can reopen. Thanks again for the thorough analysis!