Refusals

Part of team remove — every message that refuses it, and the busy-seat and name refusals shown.

MessageExit
team remove: unknown option --x / team remove: a seat name is required / team remove: unexpected "x" (each with the usage)2
team remove: line <n>: <message>2
team remove: only the owner, the orchestrator or the operator runs it; this call is <caller>1
team remove: only the owner, the orchestrator, the operator or the approved delegate runs it; this call is <caller> — the file names a delegate, and this call is not it1
team remove: delegation needs a verified approval: <reason> / team remove: delegation needs a readable approved copy: run `team approve` / team remove: delegation needs the approved file: the file is not the approved one (<differences>): run `team approve` — the delegate gate, reading the same approval every other check reads1
team remove: delegation cannot verify its placement or seats: <reason>1
team remove: the approved delegate must be an external non-seat pane1
team remove: the approved delegate <session>/<pane id> may not run `remove`; its approved commands are <list>1
team remove: --<flag> is the owner's; the approved delegate cannot use it — --keep, --abandon, --session or --file1
team remove: --file is the owner's, from a terminal outside herdr; this call is <caller>1
team remove: --session is the owner's, from a terminal outside herdr; this call is <caller>1
team remove: no pane is recorded for seat <name> in this session: the owner stops that seat and runs `team up` 1
team remove: the state records pane <pane> for seat <name> in this session, not the pane this call is on: the owner stops the team and starts it again (`team down`, then `team up`) 1
team remove: only the owner abandons a seat, from a terminal outside herdr1
team remove: only the owner removes the orchestrator's or the operator's seat; this call is <caller>1
team remove: session can't be "default", herdr's own session1
team remove: the team has no seat "<name>"1
team remove: a temporary seat is not in the file; there is nothing to keep1
team remove: herdr doesn't answer; nothing was changed1
team remove: session <session> runs, and its agents can't be read; nothing was changed1
team remove: <seat> is working; left as it is1
team remove: <seat> is blocked at a prompt, which team never answers1
team remove: <seat> sits at its own exit question; left as it is (team remove <seat> --abandon closes it)1
team remove: <seat> shows a screen the profile does not recognise; left as it is (team remove <seat> --abandon closes its workspace without typing) — the owner's; a caller other than the owner meeting a seat herdr reports idle or done takes the seat out instead (above), and meets this line with (run this again once herdr reports the seat idle or done) where herdr reports the seat working1
team remove: <seat> holds unsent text in its input box; left as it is1
team remove: <seat> holds this CLI's exit text (<exit>) unsent in its input box; left as it is (the owner sends it or clears it in its pane)1
team remove: no launch profile for `<cli>`; left as it is1
team remove: the file was never approved on this machine: run `team approve` 1
team remove: approved before records were signed: run `team approve` once — the record was written by an earlier team; the same line, with the case, for a record that does not verify1
team remove: another session-mutating run is holding session <session> (pid <pid>); try again when it is done — another run holds the session's mutator lock, the one lock up, add, down and remove share; the line names no command, because the lock is shared. The lock is taken before this run's first effect and released at its end; every refusal above is decided first and never shows it1
team remove: another session-mutating run may be holding session <session>, and its lock cannot be read; if no run is using it, delete <state dir>/seat-locks/<session>/.run — the lock file does not read as a token, so its holder is unknown and only the owner clears it; the line names the file1

--abandon answers the seat-state refusals above — a seat that is working, blocked at a prompt, sitting at its own exit question, on a screen the profile does not recognise, holding unsent text, or holding this CLI's exit text unsent: the seat is not asked anything, its workspace is closed as it is, and its pane's text is lost. A caller other than the owner has its own answer to those states, where herdr reports the seat idle or done: the leave above — the seat out of the team, the pane left running, nothing typed.

The leave this section's “above” names — a caller other than the owner's own answer to those states — is on the what-it-prints page; the exit codes are on the team remove page.

A busy seat is left as it is

A seat mid-turn is not interrupted — its work would be lost — and remove says which state it was in:

Terminal
 team remove claude-beacon ; echo "exit $?"
team remove: claude-beacon is working; left as it is
exit 1

A permission prompt is the same: team never answers one, so it never closes a seat that waits at one.

Terminal
 team remove claude-beacon ; echo "exit $?"
team remove: claude-beacon is blocked at a prompt, which team never answers
exit 1

A screen the profile can't read never frees itself, and only the owner may abandon it, so the owner's refusal names that way out:

Terminal
 team remove claude-beacon ; echo "exit $?"
team remove: claude-beacon shows a screen the profile does not recognise; left as it is (team remove claude-beacon --abandon closes its workspace without typing)
exit 1

A name is required

A name is required, and its absence stops at the usage line before the file is read:

Terminal
 team remove ; echo "exit $?"
team remove: a seat name is required
Usage: team remove <name> [--keep] [--abandon] [--session <name>] [--file <path>]
exit 2