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_effort is high/ultra
  • model_reasoning_summary is auto or detailed
  • 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:

  1. Prefer streaming/showing summary text (summary_text / response.reasoning_summary_text.delta).
  2. If only encrypted_content is 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

  1. Codex Desktop with model_reasoning_summary = "detailed" and a GPT-5.6-class model.
  2. Long agentic turn (tools + Goal).
  3. 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_tokens is expected for some backends.
  • If not, fix request/response handling so detailed/auto summaries reliably populate the thinking panel for agentic turns.

View original on GitHub ↗

2 Comments

github-actions[bot] contributor · 16 days ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #38120

Powered by Codex Action

jdcodes1 · 9 days ago

One client-side mechanism worth ruling in/out (main @ 1f41cc5d92): the summary parameter has a per-model kill switch. build_reasoning only sends reasoning.summary when model_info.supports_reasoning_summary_parameter is 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_content present, zero readable summary, and no indication anything was suppressed.

Discriminating check: capture one request (RUST_LOG=codex_api=trace or a local proxy) and see whether reasoning.summary was present. If absent → catalog capability suppression (client-side surfacing bug: configured model_reasoning_summary silently 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-none but either suppressed or unfulfilled, the thinking panel should state why it's empty instead of leaving effort sliders implying it works.