Client or integration
Other (ChatGPT app for iOS, Codex "Remote Mode", pointed at a Codex host that routes through OpenCodex)
Area
Streaming
Summary
A routed provider's chain of thought reaches clients on the raw reasoning content channel, and the ChatGPT app for iOS renders that channel inline in the transcript while it streams. The desktop Codex app shows only the thinking animation for the same stream, so the visible difference is how each client renders response.reasoning_text.*.
Observed with opencode-go/deepseek-v4.1-flash (adapter openai-chat). OpenCodex emits that model's reasoning as response.reasoning_text.delta plus a reasoning item of the shape {"type":"reasoning","summary":[],"content":[{"type":"reasoning_text","text":"..."}]}, and emits no response.reasoning_summary_text.* frames for this route. A client that renders the raw content channel therefore shows the chain of thought, while a client that renders authored summaries shows nothing. Raw reasoning is never relabelled as a provider-authored summary (by design), and hideThinkingSummary is the only switch that hides it — it hides authored summaries at the same time. showThinkingSummary moves in the opposite direction.
Expected: an operator can keep one provider's raw chain of thought off the client wire while provider-authored summaries stay visible (for example for native OpenAI models, which author real summaries).
Reproduction
-
Route a model whose endpoint returns thinking as reasoning_content (here opencode-go/deepseek-v4.1-flash, adapter openai-chat).
-
Stream a Responses request with a validated effort and reasoning.summary omitted or "auto":
curl -N -X POST http://127.0.0.1:10100/v1/responses -H 'content-type: application/json' -d '{"model":"opencode-go/deepseek-v4.1-flash","input":"Reply with exactly: pong","stream":true,"max_output_tokens":64,"reasoning":{"effort":"low","summary":"auto"}}'
-
Observe that only response.reasoning_text.delta frames carry the thinking (4 in the capture below) and that no response.reasoning_summary_text.* frame appears at all; the finished item carries summary: [] with the text on the content channel.
-
Open the same Codex thread from the ChatGPT app for iOS in Remote Mode: the chain of thought is rendered inline (screenshot below). The desktop app shows only the thinking animation for the same thread.
-
Note the only way to suppress it today: reasoning.summary: "none" (or omitting the summary without a validated active effort), which also suppresses any authored summary.
Version
2.68.0
Operating system
Host: macOS 27.0 (arm64). Viewer: ChatGPT app for iOS in Remote Mode.
Provider and model
opencode-go / deepseek-v4.1-flash (adapter openai-chat)
Logs or error output
Probe from step 2 (summary "auto"):
4 response.reasoning_text.delta
0 response.reasoning_summary_text.delta
response.output_item.done item: {"type":"reasoning","summary":[],"content":[{"type":"reasoning_text","text":"We need answer exactly \"pong\"..."}]}
Same probe with summary: "none":
0 response.reasoning_text.delta
response.output_item.done item: {"type":"reasoning","summary":[],"encrypted_content":"ocxr1:..."}
Screenshots and supporting files
ChatGPT app for iOS in Remote Mode, showing the routed model's chain of thought rendered as text in the transcript while it is generated:

Redacted configuration
Redacted provider row. Nothing in it can keep the raw channel off the client wire today:
{
"providers": {
"opencode-go": {
"adapter": "openai-chat",
"baseUrl": "https://opencode.ai/zen/go/v1",
"apiKey": "<redacted>"
}
}
}
Checks
Client or integration
Other (ChatGPT app for iOS, Codex "Remote Mode", pointed at a Codex host that routes through OpenCodex)
Area
Streaming
Summary
A routed provider's chain of thought reaches clients on the raw reasoning content channel, and the ChatGPT app for iOS renders that channel inline in the transcript while it streams. The desktop Codex app shows only the thinking animation for the same stream, so the visible difference is how each client renders
response.reasoning_text.*.Observed with
opencode-go/deepseek-v4.1-flash(adapteropenai-chat). OpenCodex emits that model's reasoning asresponse.reasoning_text.deltaplus a reasoning item of the shape{"type":"reasoning","summary":[],"content":[{"type":"reasoning_text","text":"..."}]}, and emits noresponse.reasoning_summary_text.*frames for this route. A client that renders the raw content channel therefore shows the chain of thought, while a client that renders authored summaries shows nothing. Raw reasoning is never relabelled as a provider-authored summary (by design), andhideThinkingSummaryis the only switch that hides it — it hides authored summaries at the same time.showThinkingSummarymoves in the opposite direction.Expected: an operator can keep one provider's raw chain of thought off the client wire while provider-authored summaries stay visible (for example for native OpenAI models, which author real summaries).
Reproduction
Route a model whose endpoint returns thinking as
reasoning_content(hereopencode-go/deepseek-v4.1-flash, adapteropenai-chat).Stream a Responses request with a validated effort and
reasoning.summaryomitted or"auto":curl -N -X POST http://127.0.0.1:10100/v1/responses -H 'content-type: application/json' -d '{"model":"opencode-go/deepseek-v4.1-flash","input":"Reply with exactly: pong","stream":true,"max_output_tokens":64,"reasoning":{"effort":"low","summary":"auto"}}'Observe that only
response.reasoning_text.deltaframes carry the thinking (4 in the capture below) and that noresponse.reasoning_summary_text.*frame appears at all; the finished item carriessummary: []with the text on the content channel.Open the same Codex thread from the ChatGPT app for iOS in Remote Mode: the chain of thought is rendered inline (screenshot below). The desktop app shows only the thinking animation for the same thread.
Note the only way to suppress it today:
reasoning.summary: "none"(or omitting the summary without a validated active effort), which also suppresses any authored summary.Version
2.68.0
Operating system
Host: macOS 27.0 (arm64). Viewer: ChatGPT app for iOS in Remote Mode.
Provider and model
opencode-go / deepseek-v4.1-flash (adapter
openai-chat)Logs or error output
Probe from step 2 (summary
"auto"):Same probe with
summary: "none":Screenshots and supporting files
ChatGPT app for iOS in Remote Mode, showing the routed model's chain of thought rendered as text in the transcript while it is generated:
Redacted configuration
Redacted provider row. Nothing in it can keep the raw channel off the client wire today:
{ "providers": { "opencode-go": { "adapter": "openai-chat", "baseUrl": "https://opencode.ai/zen/go/v1", "apiKey": "<redacted>" } } }Checks