Codex, I miss the reasoning summaries

On Thursday something happened to the Codex API and it decided to elide all reasoning summaries…

  "reasoning": {
    "effort": "max",
    "summary": "auto"
  },

In the official responses API summaries are delivered just fine, but in Codex now we are are getting <!-- --> instead of getting actual summaries.

reasoning_summary_delivery sequential_cutoffmakes it easyish to avoid needing to do work skipping the render of the html comment, but it does nothing to restore actual summaries.

Why were reasoning summaries removed (only from Codex) on Thursday the 9th of July? This does not seem to be a security issue cause the paid API still supplies the reasoning fragments.

Research done about issue by my bot

Project / source Evidence Link
Codex Primary clean-room reproduction: literal <!-- --> in TUI, exec --json, raw reasoning events and persisted JSONL openai/codex#31664
Codex Independent empty-placeholder report using GPT-5.5 and ChatGPT authentication openai/codex#31699
Codex Additional report on CLI 0.144.1 showing empty HTML comments in intermediate TUI updates openai/codex#32269
Codex Earlier, distinct report showing reasoning data reached codex_core but was not rendered by the TUI openai/codex#31216
Codex PR introducing Codex’s sequential-cutoff reasoning-summary delivery path openai/codex#31306
Codex Merge commit adding reasoning_summary_delivery: "sequential_cutoff" 775ef7d
Codex CLI 0.143.0 release containing the sequential-cutoff work Codex CLI 0.143.0
Pi Codex-subscription summaries missing or containing <!-- -->; includes raw SSE evidence earendil-works/pi#6434
Pi Raw SSE capture proving the marker came from response.reasoning_summary_text.delta/done Pi raw-SSE comment
Pi Maintainer identifies it as a recently introduced OpenAI backend problem Pi maintainer response
Pi Proposed client-side sanitization while preserving signed/encrypted reasoning for replay; not merged earendil-works/pi#6436
OpenCode Reproduction with ChatGPT OAuth and GPT-5.6 Sol/Terra; provider text exposed in TUI anomalyco/opencode#36145
OpenCode Maintainer confirms the text comes directly from OpenAI and affects multiple harnesses OpenCode maintainer response
OpenAI Docs Official documentation describing expected reasoning-summary behavior Reasoning models documentation
OpenAI Changelog Codex release history; no announced removal or relevant fix in 0.144.0/0.144.1 Codex changelog

https://x.com/charliermarsh/status/2076081520238817433?s=20

Looks like a fix is in the oven

These should be fixed now!

I confirm the stray <!-- are gone, but the original issue here sadly remains:

Codex:

export CHATGPT_ACCESS_TOKEN='...'
export CHATGPT_ACCOUNT_ID='...'

curl --silent --show-error --no-buffer \
  'https://chatgpt.com/backend-api/codex/responses' \
  -H "Authorization: Bearer ${CHATGPT_ACCESS_TOKEN}" \
  -H "ChatGPT-Account-ID: ${CHATGPT_ACCOUNT_ID}" \
  -H 'Content-Type: application/json' \
  -H 'originator: codex_cli_rs' \
  -H 'User-Agent: codex_cli_rs/0.144.0' \
  -H 'version: 0.144.0' \
  --data-binary @- <<'JSON' | tee /tmp/chatgpt-codex-summary.sse
{
  "model": "gpt-5.6-luna",
  "input": [
    {
      "type": "message",
      "role": "developer",
      "content": "Reason carefully, then answer concisely with the result and a proof."
    },
    {
      "type": "message",
      "role": "user",
      "content": "You have 12 visually identical coins. Exactly one is counterfeit and may be either heavier or lighter. Using a balance scale exactly three times, describe a strategy that always identifies the counterfeit coin and whether it is heavier or lighter."
    }
  ],
  "reasoning": {
    "effort": "high",
    "summary": "detailed"
  },
  "include": [
    "reasoning.encrypted_content"
  ],
  "parallel_tool_calls": true,
  "store": false,
  "stream": true,
  "stream_options": {
    "reasoning_summary_delivery": "sequential_cutoff"
  }
}
JSON

The unique summary sections I received were:

Designing 12-coin weighing strategy
Analyzing second weighing outcomes for 12-coin puzzle
Establishing generic labeling and weighing framework
Detailing third weighing interpretations and outcome mapping
Polishing complete 12-coin weighing strategy with proofs

Raw event counts for this run:

response.reasoning_summary_text.delta = 19
response.reasoning_summary_text.done  = 13
response.output_text.delta            = 665
response.output_text.done             = 1
response.completed                    = 1
<!-- --> placeholders                 = 0

Paid API

export OPENAI_API_KEY='...'

curl --silent --show-error --no-buffer \
  'https://api.openai.com/v1/responses' \
  -H "Authorization: Bearer ${OPENAI_API_KEY}" \
  -H 'Content-Type: application/json' \
  --data-binary @- <<'JSON' | tee /tmp/openai-api-summary.sse
{
  "model": "gpt-5.6-luna",
  "input": [
    {
      "role": "developer",
      "content": "Reason carefully, then answer concisely with the result and a proof."
    },
    {
      "role": "user",
      "content": "You have 12 visually identical coins. Exactly one is counterfeit and may be either heavier or lighter. Using a balance scale exactly three times, describe a strategy that always identifies the counterfeit coin and whether it is heavier or lighter."
    }
  ],
  "reasoning": {
    "effort": "high",
    "summary": "detailed"
  },
  "max_output_tokens": 5000,
  "store": false,
  "stream": true
}
JSON

This produced genuinely detailed summaries. For example:

Clarifying weighing strategy

The user wants me to describe a strategy and proof succinctly without
any excess details. I think it’s important to emphasize that we need
to weigh the coins exactly three times, especially noting potential
outcomes if the first result is balanced. I want to specify that the
wording should clearly indicate "left pan down" versus "right pan down"
to avoid ambiguity. It's crucial I communicate this clearly in the
final answer.

Raw event counts:

response.reasoning_summary_text.delta = 365
response.reasoning_summary_text.done  = 4
response.output_text.delta            = 711
response.output_text.done             = 1
response.completed                    = 1
<!-- --> placeholders                 = 0

The paid response completed with:

input tokens     = 70
reasoning tokens = 2,588
output tokens    = 3,305
total tokens     = 3,375

So at the moment Codex only supports “auto” / “short” summaries (headings only) but API supports "summary" : "detailed"

Any chance this can be enabled on codex? the detailed summaries provide a lot of interesting context to work codex is busy doing.

Please please please – don’t go the way of Anthropic who has been trying all possible tricks to hide thinking messages from users in Claude Code!!! :folded_hands:

anthropics/claude-code#8477

Reasoning has always beeen hidden in OpenAI calls. All we have been shared is a reasoning summary. The topic here is to restore that summary.

If you want to see detailed thinking, use Completions and roll your own reasoning loop.