Refusals
Part of team add — every message that refuses it, with the already-running, name and flag refusals shown.
| Message | Exit |
|---|---|
team add: unknown option --x / team add: a seat name is required / team add: --like needs a value (each with the usage) | 2 |
team add: --like, --until and --worktree are for --temporary | 2 |
team add: line <n>: <message> / team add: <message> | 2 |
team add: only the owner, the orchestrator or the operator runs it; this call is <caller> | 1 |
team add: 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 it | 1 |
team add: delegation needs a verified approval: <reason> / team add: delegation needs a readable approved copy: run `team approve` / team add: 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 reads | 1 |
team add: delegation cannot verify its placement or seats: <reason> | 1 |
team add: the approved delegate must be an external non-seat pane | 1 |
team add: the approved delegate <session>/<pane id> may not run `add`; its approved commands are <list> | 1 |
team add: --<flag> is the owner's; the approved delegate cannot use it — --temporary, --like, --until, --worktree, --session or --file | 1 |
team add: the approved delegate cannot change the file or the approval; the owner adds a missing or stopped seat — an add that would restore a missing seat or clear stopped, also on --dry-run | 1 |
team add: --file is the owner's, from a terminal outside herdr; this call is <caller> | 1 |
team add: --session is the owner's, from a terminal outside herdr; this call is <caller> | 1 |
team add: no pane is recorded for seat <name> in this session: the owner stops that seat and runs `team up` | 1 |
team add: 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 add: the file was never approved on this machine: run `team approve` | 1 |
team add: 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 verify | 1 |
team add: the file is not the approved one (<differences>): run `team approve` | 1 |
team add: the approved copy can't be read: run `team approve` | 1 |
team add: the approved file has no seat "<name>" | 1 |
team add: <name> is already running | 1 |
team add: no launch profile for \ | 1 |
team add: the approval allows <n> seats; <m> would be running / … <n> temporary seats; … / … <n> <vendor> seats; … | 1 |
team add: refused: <account> <window> left <n>%, inside its <reserve>% reserve, changed <age> ago; accounts with room: <accounts> | 1 |
team add: refused: <account> spend <amount> <CUR>, at or below its <floor> <CUR> floor, read <age> ago; accounts with room: <accounts> | 1 |
team add: session can't be "default", herdr's own session | 1 |
team add: herdr doesn't answer | 1 |
team add: session <session> is stopped; clear it with `herdr session delete <session>` | 1 |
team add: session <session> runs, and its agents can't be read | 1 |
team add: --until is result:<path> or merged:<branch> | 1 |
team add: a result path is relative to the project / team add: <path> already exists | 1 |
team add: workspace.base is required to read a merged end / team add: branch <branch> doesn't exist | 1 |
team add: no worktree named "<task>" is recorded | 1 |
team add: worktree <task> has a failed setup; team worktree remove <task> | 1 |
team add: the file is legacy: migrate trust to absolute paths including the lobby ~/.config/team/lobby: ... | 1 |
team add: trust: must list the lobby ~/.config/team/lobby | 1 |
team add: the lobby ~/.config/team/lobby: <check> | 1 |
team add: seat beacon-qa would start in live, inside the protected checkout live; a seat that isn't `mode: shared` never starts in one | 1 |
team add: the file changed while add was checking; nothing was written | 1 |
team add: the load is <n> per core, above <n> / team add: free memory is <n>%, below <n>% | 1 |
a MISS finding from team doctor, the seat's own launch line among them | 1 |
team add: 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; --dry-run takes no lock and never shows it | 1 |
team add: 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 file | 1 |
The ceilings are read from the approval's record, never from the file: a seat that would put the
session past limits.seats, past limits.temporary for a temporary seat, or past a
limits.vendors entry for its vendor, is refused.
The exit codes these refusals carry are on the team add page.
A seat already running
The seat that is already running is never touched, and adding it is refused:
team add claude-beacon ; echo "exit $?"
team add: claude-beacon is already running
exit 1A name the file does not have
The seat's name must be one the approved file has, so a name that is not is refused before herdr is asked anything:
team add scratch ; echo "exit $?"
team add: the approved file has no seat "scratch"
exit 1
team add --temporary --like claude-beacon --until later ; echo "exit $?"
team add: --until is result:<path> or merged:<branch>
exit 1The temporary flags, and a missing name
The flags that describe a temporary seat are refused without --temporary, and a name is required
outside it. Both stop at the usage line, before the file is read:
team add claude-keeper --like claude-beacon ; echo "exit $?"
team add: --like, --until and --worktree are for --temporary
exit 2
team add ; echo "exit $?"
team add: a seat name is required
Usage: team add <name> [--dry-run] [--session <name>] [--file <path>]
team add --temporary --like <seat> --until <result:path|merged:branch> [--worktree <task>] [--dry-run] [--session <name>] [--file <path>]
exit 2