Repository navigation
Chief: no permission request waits on an answer nobody can give - #22941
Conversation
- A relayed allow acpmux refuses (control answer): the person is told once where to allow when the app shows a working Allow button, else the prompt is denied and the person is told. - A turn session's request the host does not allow is refused at once (no tab shows it), in any turn and for a turn session no turn runs on. - Requests the host leaves open (a subagent or child prompt with no working button, a deny not delivered) are denied after 120 s (injected clock), logged and traced. - Host-side denies of the turn's own requests and turn-gate refusals count toward stopping a looping turn. - The idle watchdog counts a turn that waits on a permission as idle. - Codex turns: documented why Chief tools still ask under policy ask.
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
|
|
Bead |
…nt, deny never lasts, honest lines
Correctness review (separate subagent) and resolutionsThere are no blockers. The findings and what each became:
Checks after the fixes, on rbx: |
|
|
|
Shipped in:
|
…lined unseen Leo, 2026-11-03 (relayed by Chief): "A Chief subagent's pending permission prompt must show in Home as an Allow/Deny card, never be declined silently." #33385 kept #22941's 120 s deadline even after a hidden subagent's Home card was delivered, so a card nobody opened in two minutes was denied and cancelled. Now an acknowledged card drops the deadline watch and the overdue check skips a request with a live card or workspace. A hidden request Home cannot draw (no single allow-once and reject-once option) opens its subagent's workspace instead, whose tab answers it. The deadline still covers requests with neither. Builds on austinywang's #22639 (the Home Allow/Deny card), which reached feat-cmux-next through #33385. Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lined unseen Leo, 2026-11-03 (relayed by Chief): "A Chief subagent's pending permission prompt must show in Home as an Allow/Deny card, never be declined silently." #33385 kept #22941's 120 s deadline even after a hidden subagent's Home card was delivered, so a card nobody opened in two minutes was denied and cancelled. Now an acknowledged card drops the deadline watch and the overdue check skips a request with a live card or workspace. A hidden request Home cannot draw (no single allow-once and reject-once option) opens its subagent's workspace instead, whose tab answers it. The deadline still covers requests with neither. Builds on austinywang's #22639 (the Home Allow/Deny card), which reached feat-cmux-next through #33385. Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lined unseen (#34410) * test(chief): a delivered Home card waits for the person; an uncardable hidden prompt opens its workspace (red) Leo, 2026-11-03 (relayed by Chief): a Chief subagent's pending permission prompt must show in Home as an Allow/Deny card, never be declined silently. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Chief: a subagent's prompt waits in Home for Allow or Deny, never declined unseen Leo, 2026-11-03 (relayed by Chief): "A Chief subagent's pending permission prompt must show in Home as an Allow/Deny card, never be declined silently." #33385 kept #22941's 120 s deadline even after a hidden subagent's Home card was delivered, so a card nobody opened in two minutes was denied and cancelled. Now an acknowledged card drops the deadline watch and the overdue check skips a request with a live card or workspace. A hidden request Home cannot draw (no single allow-once and reject-once option) opens its subagent's workspace instead, whose tab answers it. The deadline still covers requests with neither. Builds on austinywang's #22639 (the Home Allow/Deny card), which reached feat-cmux-next through #33385. Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com> Co-authored-by: cmux-bot[bot] <348531757+cmux-bot[bot]@users.noreply.github.com>
Summary
The Chief must never wait on a permission answer that nobody can give. acpmux accepts an allow only from the person's cmux app. The app shows no tab for a Chief turn session. A subagent's prompt is shown only in its agent tab. A cloud peer refuses an allow that comes from this Mac. Before this PR, several paths left a request open with nobody told. The turn then waited until its 3-hour limit ("Using optchat: control · 34m").
control answer). When acpmux refuses the allow:make deploy: use the Allow button in its workspace."controldescription no longer tell the model to allow.chief agents allowsays what still works.questionpart, and the tests check this.approval::PERMISSION_WAIT(120 s, on the brain's injected clock). The reason goes to host.log and to the trace (approver: "no approver",reason).TurnFold::awaits_permission). Before, it skipped every turn that had a running tool.REPEATS_BEFORE_STOP: a deny after a refused allow, a turn-gate refusal of a Chief tool, and an overdue deny. The turn's stop line gives the reason.approval_mode = "approve". But acpmux gives a Codex turn nooptchatMCP server, so Chief tools run aschief <verb>shell commands. No per-tool setting covers those. The reason is documented oncodex_turn_config, and the deny stays.Tests
rbx --lane chief-no-hang --cwd Native/OptChat/optchat-chief -- cargo test --locked --test approval_gates: 17 passed. 9 of them are new and test behaviour at the brain/host boundary with the fake acpmux:The idle test was checked against the old code: it fails ("no cancel 1").
cargo fmt --check: OK.cargo clippy --locked --all-targets -- -D warnings: clean. Fullcargo test --locked: every test passes exceptturn_seal_binding::a_subagent_cannot_reach_owner_controls_on_the_shared_socket. That test also fails on unchangedorigin/feat-cmux-next(63bd306) on the same builder, so this PR did not cause it.Observed / Not run
Changelog