Skip to content

Request permission to submit a small stacked fix series for turn progression and interrupted-stream recovery #17428

Closed as not planned

Description

@jkaunert

I am respecting the current contribution policy and not opening an unsolicited PR.

While maintaining a private Codex fork, I isolated a small set of generic runtime defects and re-extracted them into reviewable slices on top of the current upstream release baseline, rust-v0.120.0 (65319eb).

These fixes are currently deployed in our fork, but the upstream-ready slices have already been trimmed to remove plugin-specific behavior, timeout-policy changes, and log-only investigative telemetry. What remains is a small stacked series of runtime correctness fixes.

I would like maintainer guidance on whether these are in scope for invited PRs.

Why I think this is worth upstream review

These are not fork-preference patches. They are narrow runtime behavior fixes that affect generic Codex turn handling and retry behavior:

  1. explicit-only plugin/orchestrator routing is preserved correctly
  2. tool output can trigger the next follow-up request without waiting for a stale response.completed
  3. interrupted commentary-heavy streams stop being treated as substantive progress and stop looping misleadingly
  4. websocket retries preserve partial response state when possible and fall back cleanly when partial resume is rejected

The slices are small, already separated, and validated on the current upstream release baseline rather than an older fork point.

Proposed stacked series

  1. explicit-only routing
  2. tool-output follow-up preemption
  3. no-progress retry handling for interrupted commentary-heavy streams
  4. websocket partial-response recovery

I have refreshed local branches for all four slices and can push them to a public fork immediately if maintainers think this direction is in scope.

Validation already completed locally

Release baseline:

  • rust-v0.120.0
  • commit 65319eb

Validation:

  • Slice 1
    • cargo test -p codex-core-skills -- --nocapture
    • cargo test -p codex-core --test plain_text_mentions -- --nocapture
    • passed
  • Slice 2
    • cargo test -p codex-core pending_input -- --nocapture
    • passed
  • Slice 3
    • cargo test -p codex-core stream_no_completed -- --nocapture
    • passed
  • Slice 4
    • cargo test -p codex-core client_websockets -- --nocapture
    • cargo test -p codex-core stream_no_completed -- --nocapture
    • passed

What I am explicitly not trying to upstream in this first series

I intentionally left out the policy-heavy and diagnostic-heavy parts of the private fork:

  • default stream idle timeout reduction
  • early websocket-stall fallback-to-HTTP policy changes
  • transport and retry log amplification that was only useful during diagnosis

Related existing issues

This proposal overlaps with, but does not fully duplicate, some existing issues:

If maintainers would rather anchor discussion on one of those existing issues instead of a new umbrella issue, I am happy to move there.

Specific ask

Would the team be open to inviting a stacked PR series for these slices, assuming the pushed branches match the descriptions above?

If not, I would still appreciate guidance on whether one of the four slices is clearly aligned enough to discuss further in a dedicated issue.

Activity

  1. added
    bugSomething isn't working
    CLIIssues related to the Codex CLI
    tool-callsIssues related to tool calling
    on Apr 11, 2026
  2. etraut-openai commented on Apr 11, 2026

    @etraut-openai
    Contributor

    Thanks for the offer, but we're not accepting external PRs at this time. Code changes are of relatively little value since it's easy to generate code changes using Codex. We've found that it takes significantly more time for Codex team members to understand, review, and validate an external code contribution than it does to implement a comparable change themselves.

    If you would like to help us out, what's most useful are bug reports and feature requests. These provide signal about which issues are most important for us to prioritize. If you'd like, you could provide a design overview of your proposed bug fix or feature in a form that could be used as input to Codex.

    We generally prioritize bug fixes based on user impact (number of users who are affected), and we prioritize feature requests based on user input (upvotes).

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

    CLIIssues related to the Codex CLIbugSomething isn't workingtool-callsIssues related to tool calling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions