Skip to content

Show Codex TUI approvals as Needs input - #15926

Merged
teamleaderleo merged 3 commits into
mainfrom
fix/codex-tui-needs-input
Oct 1, 2026
Merged

teamleaderleo merged 3 commits into
mainfrom
fix/codex-tui-needs-input

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Codex TUI PermissionRequest hooks are zero-wait telemetry because Codex owns the approval prompt in the terminal. The Feed inserted the event but skipped its needs-input attention path, so the sidebar continued to show Running while a Cloud or local Codex session waited for the user.

The coordinator now resolves one transient attention target for Codex decision telemetry, surfaces the existing needs-input state without blocking the hook, and retires that target on the next event from the same session. Claude's blocking waiter path and ordinary telemetry remain unchanged, and zero-wait events do not create native approval notifications.

Regression coverage verifies Codex zero-wait attention and limits the classifier to Codex decision events.

Changelog

  • Fixed: show Codex TUI approval waits as Needs input in the sidebar.

Validation:

  • Swift syntax preflight for FeedCoordinator.swift and FeedCoordinatorTests.swift
  • git diff --check
  • Native compilation/tests were not run locally; those require the managed fleet.

Summary by cubic

Shows Codex TUI approval waits as "Needs input" in the sidebar instead of leaving the session stuck on "Running".

Codex owns its approval prompt in the terminal, so its PermissionRequest hook is zero-wait telemetry. The coordinator now resolves a transient attention target for Codex decision events, surfaces the existing needs-input state without blocking the hook, and retires that target on the next event from the same session. Claude's blocking waiter path and ordinary telemetry are unchanged, and zero-wait events don't create native approval notifications.

Adds regression tests covering the transient attention behavior and confirming the classifier only applies to Codex decision events.

Changelog

  • Fixed: show Codex TUI approval waits as Needs input in the sidebar.

Written for commit 8ca10af. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: ea7ebada-20ae-42f6-86cc-6d1ddc09adb5

📥 Commits

Reviewing files that changed from the base of the PR and between ee0dc94 and 8ca10af.

📒 Files selected for processing (2)
  • Sources/Feed/FeedCoordinator.swift
  • cmuxTests/FeedCoordinatorTests.swift
 _________________________________________________________________________________________
< If you don't make mistakes, you're not working on hard enough problems. - Frank Wilczek >
 -----------------------------------------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@github-actions

github-actions Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

CI failure attribution

CI failed on 9bb758539f (run 36736084494 attempt 1): 1 code.

Job Verdict Why
macos / app-host unit tests (changed suites) code a test failed
Matched log lines
macos / app-host unit tests (changed suites): ✘ Test zeroWaitCodexPermissionSurfacesTransientNeedsInputAttention() recorded an issue at FeedCoordinatorTests.swift:630:9: Expectation failed: (attention.events.count → 0) == 1

Not re-run automatically: macos / app-host unit tests (changed suites) is not a machine failure.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's.

@github-actions

Copy link
Copy Markdown
Contributor

Dogfood tours of 1511d551

sidebar-and-chrome-tour at 1511d551: not run

skipped: CI left no app build for this head (its compile failed or was cancelled)

Tours are picked by the paths globs in dogfood/scenarios/*.json; a Dogfood-tours: a, b line in the description picks them instead (none turns this off). Look at every frame before merging: a green tour only means no step failed.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

/catch-up

Red here is not this PR's fault. This branch pins vendor/bonsplit at a commit that predates the sizing code on main, so macOS compile admission fails on symbols the PR never touches:

Sources/TerminalSizeBoundsOverlayView.swift:19:34: error: cannot find type 'BonsplitContrastPalette' in scope
Sources/TerminalSharingDisplay.swift:102:27: error: cannot find type 'TabPresence' in scope
** TEST BUILD FAILED **

macos / macOS status and tests then fail on their routing-check steps, which is them reporting that failure rather than finding their own. Main already restored the pin in "fix: restore the bonsplit pin main's sizing code needs" (#15930), so catching up on main is the whole fix.

— Raindrop g2 🫧 / Run: run_worker_20260930_3fc64ba6

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

/catch-up

My earlier catch-up comment on this PR did nothing: I wrapped the command in backticks, and the gate is startsWith(github.event.comment.body, '/catch-up'), so every run it started was skipped. Same mistake on 21 other PRs. This one is the real request; the reasoning is in the comment above.

— Raindrop g2 🫧 / Run: run_worker_20260930_3fc64ba6

Catch-up merge by scripts/ci/catch_up_pr.py (RFC #14631).
Merged by scripts/merge-main.sh: origin/main at f627d1f, the newest commit with green CI fast guards (1 newer skipped).

Catch-up-previous-head: 1511d55
Catch-up-base: f627d1f
@cursor

cursor Bot commented Sep 30, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@teamleaderleo
teamleaderleo enabled auto-merge (squash) October 1, 2026 19:12
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 1, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@teamleaderleo
teamleaderleo merged commit c73d135 into main Oct 1, 2026
13 of 16 checks passed
@teamleaderleo
teamleaderleo deleted the fix/codex-tui-needs-input branch October 1, 2026 19:26
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Merge receipt for 8ca10af1a3, merged 2026-10-01 19:26:23 UTC

  • Not verified at merge: ci-status (not reported), CI fast guards (in progress), Fast static checks (in progress)
  • Verified: Web complexity, web-validation
  • Skipped by policy: web-build, web-database-tests, web-tests
  • Full suite: runs on main after merge.

Labeled merged-unverified: if main breaks near this merge, look here first.

@github-actions github-actions Bot added the merged-unverified A judging check was not green at merge; see the merge receipt comment label Oct 1, 2026
rustybret pushed a commit to rustybret/bmux that referenced this pull request Oct 1, 2026
15cf1ed Reject malformed Cloud VM snapshot and clone arguments (manaflow-ai#15963)
c73d135 fix: surface Codex TUI approval attention (manaflow-ai#15926)
f4c9ec4 Localization omissions: one record per key, and a loader that rejects duplicates (manaflow-ai#16302)
733616c Add pointer cursor modifier to custom sidebars (manaflow-ai#16263)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-unverified A judging check was not green at merge; see the merge receipt comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant