Responses: reasoning tokens spent but Desktop thinking empty when only encrypted_content / empty summary arrives
Open 💬 2 comments Opened Aug 12, 2026 by RaviTharuma
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
What happened
On Codex Desktop (and CLI), some Responses turns show:
Codex is reasoning, but the upstream Responses API exposed this reasoning block only as encrypted private reasoning…
or no thinking panel content at all, even when:
model_reasoning_effortis high/ultramodel_reasoning_summaryisautoordetailed- usage reports
output_tokens_details.reasoning_tokens > 0
So the model did think, but the UI has nothing readable to show.
Why it matters
Users cannot tell whether the agent is making progress during long agentic/Goal turns. Effort sliders appear active, but thinking is blank or a dead-end encrypted notice.
Expected
When model_reasoning_summary is not none and the Responses API returns a reasoning item:
- Prefer streaming/showing summary text (
summary_text/response.reasoning_summary_text.delta). - If only
encrypted_contentis present, either:
- still request/attach a plaintext summary when the account/model supports it, or
- document clearly that this backend path cannot surface thinking (not a misconfigured effort slider).
Repro sketch
- Codex Desktop with
model_reasoning_summary = "detailed"and a GPT-5.6-class model. - Long agentic turn (tools + Goal).
- Observe thinking panel: encrypted-only notice or empty, while token usage includes reasoning tokens.
Related config
model_reasoning_effort = "ultra"
model_reasoning_summary = "detailed"
Catalog field default_reasoning_summary defaults to "none" in the official models cache, which makes this easy to hit if the session does not override it.
Environment
- Codex CLI/Desktop recent (0.147.x-class)
- Responses wire API
- No logs/secrets attached
Ask
- Confirm whether empty summary + non-zero
reasoning_tokensis expected for some backends. - If not, fix request/response handling so
detailed/autosummaries reliably populate the thinking panel for agentic turns.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
One client-side mechanism worth ruling in/out (
main@ 1f41cc5d92): the summary parameter has a per-model kill switch.build_reasoningonly sendsreasoning.summarywhenmodel_info.supports_reasoning_summary_parameteris true:https://github.com/openai/codex/blob/1f41cc5d92722748e45cae9cecc6d883a4e7cbb1/codex-rs/core/src/client.rs#L824-L842
The bundled catalog sets it true for every model, but the model catalog is also fetched live from the service — a served entry flipping that flag (per model or account tier) silently drops the summary request while the effort slider stays fully active. That produces exactly your state: reasoning tokens spent,
encrypted_contentpresent, zero readable summary, and no indication anything was suppressed.Discriminating check: capture one request (
RUST_LOG=codex_api=traceor a local proxy) and see whetherreasoning.summarywas present. If absent → catalog capability suppression (client-side surfacing bug: configuredmodel_reasoning_summarysilently ignored); if present but only encrypted content returned → server-side, and your expected-behavior #2 (say so in the UI) is the fix.Either way the UI gap is the same: when summary is configured non-
nonebut either suppressed or unfulfilled, the thinking panel should state why it's empty instead of leaving effort sliders implying it works.