Chief: never ask for approvals; another person's turn is refused at once
What
Lawrence (2026-10-20): "remove all chief approvals. chief should never have to ask for approvals". He was blocked: his NIGHTLY Chief (df694bd, which already has #22640) still asked "Reply allow or deny" from his phone.
Root cause of the asks he saw: turn 7193 was a resume after a host restart. Resume and item records from older builds had no provenance and failed closed (requires_approval default true), and a resume carries the flag forward, so one old record gated every turn after each restart (every NIGHTLY update restarts the host). remote.autoApprove: true in his settings could not lift it.
- The owner's turns (this Mac, a paired device, Home) always run with the configured policy.
remote.ask,home.askandremote.autoApproveare removed; old settings files are ignored and the keys dropped at the next write. - A turn that carries another person's text still runs with policy
ask, but the host refuses every local effect at once: no approval card, no question, noallow/denychat answers. Children and section 9 subagents spawned under it keep theaskfloor and are refused the same way. (Lawrence chose "refuse, never ask" for other people.) - The other-person flag is stored as
other_person; oldrequires_approvalkeys are ignored, so the persistent taint is gone. - Review fix (existed before this PR): a kept turn session is reused only by a turn of the same policy (
keep_sigincludes the policy), so a teammate turn cannot reuse an approve-all session and an owner turn never reuses anaskone. - The owner's own subagent failures/reports no longer gate the next turn; a subagent that fails while the spawn floor is up keeps
ask.
Takes back #22640: Lawrence removed Chief approvals entirely (this PR removes the opt-in gates and the approval card that #22640 added).
Supersedes the approach of #22639 (approval card in Home): with this change the Chief never posts an approval.
Risk
- Accepted (documented in README "Remote-origin messages"): a stolen paired phone can act until revoked; Home text and the owner's own subagent reports reach turns with the owner's policy; a pending teammate turn recorded before this upgrade resumes as the owner's once.
- Kept: another person's text never reaches an approve-all session (steer guard unchanged; kept-session reuse now checks policy).
Verification
rbx (cmux-rust-builder-1, lane chief-no-approvals), crate optchat-chief:
cargo fmt --check: pass.cargo clippy --locked --all-targets -- -D warnings: pass.cargo test --locked --no-fail-fast:approval_gates(rewritten, 6 behavior tests at the brain boundary),corpus,crash(fixed by this PR),remote_wake,owner_stopand the rest pass. Two failures are base reds, identical on base 828d367273f9 (lane chief-base-check):daemon_workspaces::a_subagent_workspace_is_located_by_its_public_id_and_sessionandturn_seal_binding::a_subagent_cannot_reach_owner_controls_on_the_shared_socket.
Observed / Not run
- Observed: the trace of Lawrence's live Chief (turn 7193, a resume) gated a Bash call at 18:16 with #22640 installed.
- Not run: a tagged app dogfood from a paired phone; the shared
cmux-chiefpolicy crate and the TypeScript brain conformance still defineremote_auto_approve(unchanged, no longer read by optchat-chief).
Review: independent subagent correctness review; findings and resolutions in a PR comment.
Changelog
Changed: Chief never asks for approval; another person's requests in a shared Chief are refused instead of asked.
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Removes Chief approvals entirely: the Chief never asks a person before it acts, and a turn that carries another person's text is refused at once instead of showing an approval card.
- Removes
remote.ask,home.ask, andremote.autoApprove; old settings files are ignored and the keys are dropped. - A turn with another person's text still runs with policy
ask, but the host refuses every local effect immediately with no card, no question, and noallow/denyanswers. - Stores other-person turns as
other_person; oldrequires_approvalkeys are ignored, so a resumed turn no longer gates every turn after a restart. - A kept turn session is reused only by a turn of the same policy.
- The owner's own subagent failures and reports no longer gate the next turn.
Behavior
- A stolen paired phone can act until revoked; Home text and the owner's subagent reports run with the owner's policy.
- Another person's text never reaches an approve-all session; a pending teammate turn recorded before this upgrade resumes as the owner's once.
- Takes back #22640: the opt-in gates and approval card it added are removed.