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
Note that the thinking blocks are just summary blocks so if it is thinking for a long time we don't necesarily know what its thinking unless it emits the thinking block summaries, I've seen it hang for quite some time before due to long thinking periods
as mentioned, things are currently working fine after thinking blocks were gone for days - it does indeed hang for quite some time while it is thinking, but the blocks were never displayed. I'd wager something was actually preventing them from emitting to us, hence them not being displayed + coming back later.
After investigating the OpenCode source, the issue is in how provider options flow through the LLM options merge chain for OAuth-authenticated OpenAI models.
Root Cause
When using OpenAI models via OAuth (Codex auth), the base options from ProviderTransform.options() in transform.ts only set include: ["reasoning.encrypted_content"] and reasoningSummary for providerID.startsWith("opencode") — not for providerID === "openai" (which is what OAuth uses). Without these parameters, the API performs reasoning internally but doesn't return thinking blocks in the response stream.
OAuth models have providerID === "openai", so they skip this block entirely.
For users with custom model definitions and variants, there's a second issue: the variant options merge on top of base options, but if the variant doesn't include include: ["reasoning.encrypted_content"], it may not be present in the final merged options unless set at the model options level.
Workaround
Adding options with the missing parameters directly to the model definition in opencode.json fixes thinking blocks for GPT 5.2:
These model-level options merge at layer 2 of the options chain (llm.ts line 110: mergeDeep(input.model.options)), which applies to all sessions using the model — including subagents.
Additional finding: reasoningEffort at agent level is silently ignored
For users setting reasoningEffort at the agent config level (e.g., on custom agents), this field is not in the agent schema (agent.ts lines 22-47). It is silently ignored. The correct way to lock an agent to a reasoning level is "variant": "high" at the agent level, which IS supported (agent.ts line 210, resolved in prompt.ts lines 831-838).
Note on Codex 5.3
Codex 5.3 models show thinking blocks after this fix, but they are very concise (1-2 sentence summaries). This appears to be model behavior rather than a config issue — the Codex endpoint returns valid response.reasoning_summary_text.delta events, but the model produces terse summaries. See #12523 for the same report.
Activity
rekram1-node commentedon Jan 30, 2026
Try without plugins?
NamedIdentity commentedon Jan 30, 2026
uninstalling OMO and DCP had no effect.
Does GPT 5.2 have thinking blocks for you? Do you use OpenAI oauth or another provider?
THEN00P commentedon Jan 30, 2026
I have the same issue on Mac. Yesterday i was on 1.1.40 and the blocks were still there.
rekram1-node commentedon Jan 30, 2026
I cannot replicate :/.
vosscodes commentedon Jan 30, 2026
1.1.36 and 1.1.44 on linux had this issue over the last 2 days pretty much constantly, no plugins installed
I got a blip of thinking this morning around 10-12 hours ago, then it disappeared again.
they have started working again at some point during this afternoon - this appears to be an intermittent provider issue
@rekram1-node your screenshot is using the opencode zen provider, not the openai provider, which may be different.
rekram1-node commentedon Jan 30, 2026
@vosscodes under the hood it should all function the same, here is screenshot w/ openai I can't replicate
rekram1-node commentedon Jan 30, 2026
Note that the thinking blocks are just summary blocks so if it is thinking for a long time we don't necesarily know what its thinking unless it emits the thinking block summaries, I've seen it hang for quite some time before due to long thinking periods
vosscodes commentedon Jan 30, 2026
as mentioned, things are currently working fine after thinking blocks were gone for days - it does indeed hang for quite some time while it is thinking, but the blocks were never displayed. I'd wager something was actually preventing them from emitting to us, hence them not being displayed + coming back later.
here is a screenshot from this morning:
rekram1-node commentedon Jan 30, 2026
hm ig lmk if it continues happening, I use gpt-5.2 and gpt-codex-5.2 every day, haven't seen this at all
NamedIdentity commentedon Feb 17, 2026
Update: Root Cause Found and Workaround Applied
After investigating the OpenCode source, the issue is in how provider options flow through the LLM options merge chain for OAuth-authenticated OpenAI models.
Root Cause
When using OpenAI models via OAuth (Codex auth), the base options from
ProviderTransform.options()intransform.tsonly setinclude: ["reasoning.encrypted_content"]andreasoningSummaryforproviderID.startsWith("opencode")— not forproviderID === "openai"(which is what OAuth uses). Without these parameters, the API performs reasoning internally but doesn't return thinking blocks in the response stream.The relevant code (transform.ts ~line 662):
OAuth models have
providerID === "openai", so they skip this block entirely.For users with custom model definitions and variants, there's a second issue: the variant options merge on top of base options, but if the variant doesn't include
include: ["reasoning.encrypted_content"], it may not be present in the final merged options unless set at the modeloptionslevel.Workaround
Adding
optionswith the missing parameters directly to the model definition inopencode.jsonfixes thinking blocks for GPT 5.2:These model-level options merge at layer 2 of the options chain (
llm.tsline 110:mergeDeep(input.model.options)), which applies to all sessions using the model — including subagents.Additional finding:
reasoningEffortat agent level is silently ignoredFor users setting
reasoningEffortat the agent config level (e.g., on custom agents), this field is not in the agent schema (agent.tslines 22-47). It is silently ignored. The correct way to lock an agent to a reasoning level is"variant": "high"at the agent level, which IS supported (agent.tsline 210, resolved inprompt.tslines 831-838).Note on Codex 5.3
Codex 5.3 models show thinking blocks after this fix, but they are very concise (1-2 sentence summaries). This appears to be model behavior rather than a config issue — the Codex endpoint returns valid
response.reasoning_summary_text.deltaevents, but the model produces terse summaries. See #12523 for the same report.Environment
NamedIdentity commentedon Feb 17, 2026
Closing as workaround found for thinking blocks showing up, even though issues specific to Codex 5.3 remain.