Who may run it

Part of team approve — the owner, the approved delegate, and what a delegated approval may change.

A delegate's grant

A delegate's approval is for ordinary changes: the roster — seats and the launch lines that place them — and rules. The guard is an allowlist, and it is fail-closed: rules is the only owner section it admits, and every other one is refused by default — delegates first, and budgets, limits, identity, trust, the workspace whose setup runs commands, the operator and orchestrator sections, and any section a later version adds — with this change needs the owner: <what changed>. The ceiling counts: adding or taking out a seat on a file that declares no limits moves the default ceiling with it — limits changed — so that roster edit is the owner's, while the same edit on a file whose ceiling is declared leaves limits alone and is the delegate's. The difference is judged against the approved copy alone, before anything else is read, so a delegate can never widen its own grant, raise a ceiling, hand a seat the verdict over the team, point setup at a command, or add a folder the owner did not trust: the widened value is never signed, and the owner is the only caller who can approve it. A delegated run that signs prints the same Approved. sentence and writes one audit line, below. --show may be run by anyone, in any terminal.

The ordinary rule this narrows — only the owner, from a terminal outside herdr — is on the team approve page.

A delegated approval

A delegated run prints the same summary, passes the same key guards and performs the same write as the owner's: the same record, the same signature, the same store. What it does not have is the question — --confirm is inert for a delegate, nothing is asked on any terminal, and the audit line, not an answer, is its record. --file is refused: a delegate approves the placed .agents/team.yaml, and nothing else. When the gate passes, the write appends one line to .agents/team.log naming the pane and what the approval sealed:

2026-10-07T12:00:00.000Z delegate [delegate] other/w1:p1 approve: `rules` changed

The gate verifies the standing approval, the approved copy and the evidence — the state, herdr's answers, the placement — before it lets a delegate run, and refuses with its own text when any of them fails: delegation needs a verified approval: <what is not in force>, delegation needs a readable approved copy: run \team approve`, or delegation cannot verify its placement or seats: `. Every refusal writes nothing: the record, the log and the key are untouched.

A seat is not the owner

A seat can read the comparison — even the orchestrator's — but a seat is not the owner, and nothing is written for it:

Terminal
 team approve ; echo "exit $?"
team approve: warning, line 3: `coordinator:` is now `leads: true` on the lead's seat, and is still read
./.agents/team.yaml: the same text as the copy approved on 2026-10-04T09:00:00.000Z.

Nothing in it needs a new approval.
Ceilings this approval fixes: 3 seats at most, 2 temporary.
Seats: 1 (claude-keeper).
approval #2 for this project; the last one was on 2026-10-04; key fe21ef6293de.
team approve: only the owner approves a team file, from a terminal outside herdr; this call is claude-keeper
exit 1