Skip to content

[Feature]: Opt in to showing raw Chat reasoning in Codex Desktop #7367

Open

Description

@reisen-ww

Area

Provider adapters

What are you trying to accomplish?

I use Codex Desktop through OpenCodex with an open-source reasoning model served by an OpenAI-compatible Chat Completions endpoint. I want the model's reasoning to appear in Codex's expandable thinking view.

What prevents this today?

Codex sends a Responses API request, but OpenCodex translates it to the provider's Chat Completions API. Some models return reasoning only in provider-specific raw fields. OpenCodex currently keeps that raw text out of the Responses summary channel, so Codex has no expandable summary to display. Showing raw chain of thought by default is not appropriate; the earlier reasoning-display work in #45 and PR #2007 was reverted for that reason.

What should OpenCodex do?

Offer a per-provider, default-off compatibility setting that lets an operator explicitly expose raw reasoning from a translated Chat Completions route through the Responses summary channel. The setting should not synthesize or claim a provider-authored summary, and explicit hideRawReasoning or reasoning.summary: "none" should continue to suppress it. Native Responses passthrough and direct Chat/Messages clients should remain unchanged.

Example usage or interface

Add an opt-in to the existing provider configuration:

{
  "providers": {
    "my-chat-model": {
      "adapter": "openai-chat",
      "rawReasoningAsSummary": true
    }
  }
}

Alternatives or workarounds

Use a Responses-compatible provider route when available, or rely on the Codex setting that displays raw reasoning. Neither provides the same per-provider, explicit compatibility control for a Chat-only upstream.

Additional context

This is a follow-up capability to the earlier default-display issue, not a request to expose raw reasoning globally. Related: #45 and #210.

Checks

  • I searched existing issues and documentation.
  • This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
  • I removed secrets and personal data.

Activity

  1. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    Automated translation bookkeeping — detected language: English.

  2. added
    enhancementNew feature or request
    providerProvider adapters, OpenAI-compat presets, upstream API quirks
    on Oct 19, 2026
  3. Ingwannu commented on Oct 19, 2026

    @Ingwannu
    Owner

    Tracked the concrete opt-in proposal in Draft #7370. Its default-off scope, suppression precedence and difference from provider-authored summaries need owner disposition because the earlier global display approach was reverted. The PR currently has a real sponsorship/readiness hold on auth-cors.ts and is not a shipped setting. Keep native passthrough and direct Chat/Messages unchanged, and verify the replay copy/non-persistence/byte-accounting path separately from what the Desktop displays. Marking needs-design; no raw-reasoning display or live configuration was enabled.

  4. added
    needs-design설계 필요. Implementation waits on a written design.
    on Oct 19, 2026
  5. lidge-jun commented on Oct 28, 2026

    @lidge-jun
    Owner

    Maintainer triage design proposal. This is a proposal for discussion, not approval. I fetched origin/dev and reviewed fdc6dd82d930295880dcf6d10bbb9f2c61994574.

    Current state. The translated bridge still distinguishes raw reasoning from provider-authored summaries: raw SSE uses response.reasoning_text.delta (src/bridge/sse.ts:1037–1065), and buffered raw items have an empty summary plus reasoning_text content (src/bridge/response-json.ts:298–320). Final-route normalization explicitly preserves that distinction (src/server/responses/core-normalize.ts:201–212). @reisen-ww already supplied the concrete opt-in design in #7370, and @Ingwannu established the suppression, replay and review boundaries; those contracts should be reused. One status correction matters: that Draft PR was closed on October 22, with design left open here. Its reported tests do not establish a shipped setting. The owning structure/providers/chat-compat.md:451–480 still records the earlier global-display revert.

    Options and recommendation. We can retain the current content channel and document the client's raw-display control; introduce the proposed per-provider, default-off compatibility switch for Responses requests finally using openai-chat; or pursue genuine upstream-authored summaries as a separate capability. I recommend the second option only after @lidge-jun explicitly accepts verbatim raw text in the summary channel and its user-facing labeling. It should reuse the existing proposal rather than revive the broader #2007 passthrough rewrite.

    Risks. An expandable summary can make unsummarized model text look curated and expose it wherever clients retain or export responses. Display suppression is not confidentiality: replay carriers must be inspected independently, and the existing encoded envelope must not be described as encryption. Both delivery modes need accounting for the visible text and encoded replay copy, including cancellation and budget exhaustion. Native Responses and direct Chat/Messages compatibility need explicit controls.

    Smallest next slice. An offline characterization patch can compare enabled, disabled and explicitly suppressed SSE/JSON output, replay continuity, fallback routing, store:false persistence and byte limits. No production implementation should start before the owner decides the raw-as-summary policy and provider-save scope. Any renewed authentication-surface change needs the normal security review; the closed PR's sponsorship hold was not waived. Desktop rendering and live acceptance remain unverified by this analysis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-design설계 필요. Implementation waits on a written design.providerProvider adapters, OpenAI-compat presets, upstream API quirks

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions