vibe supervisor
The supervisor's kill switch from a terminal - stop it acting, resume it, check whether it may act - plus the persona commands.
In simple words
vibe supervisor stop is the kill switch. Supervisor Control in the dashboard has the same switch; this is the automation path, and the one that works with no browser tab open.
vibe supervisor stop # it may still answer; it may not act
vibe supervisor status # may it act right now?
vibe supervisor resume
It stops the supervisor acting: it will still answer you, but it cannot create a task, add checklist items, or start a run.
It writes a flag to disk rather than editing your config, so it takes effect at once and survives a restart.
Three different stops
The pause flag
vibe supervisor stop, and the Answers only switch in Supervisor Control. One flag, two surfaces.
The autonomy setting
supervisorControl.autonomy in your config. Independent of the flag.
The red square On the composer. Interrupts the turn running right now, and nothing else.
One word covers two things here. vibe supervisor list, archetypes, adopt, default and remove manage the persona - how strict reviews are. stop, resume and status belong to the conversation. Same command, two subjects.
Every subcommand
vibe supervisor <subcommand> (bare: same as list)
list resolved personas, built-in + project
archetypes the catalog you can adopt
adopt <id> copy an archetype into project.yml
default <id> set this project's default
remove <id> delete a project persona
stop stop it acting; it still answers
resume let it act again
status whether it may act right now
Two flags, and the subcommands that take them:
--json list, archetypes, status
--reason stop
list and archetypes read the catalog and work anywhere; everything else needs a Vibestrate project in the current directory.
Stop and resume
vibe supervisor stop --reason "reviewing the diff"
vibe supervisor resume
--reason is optional free text: what the supervisor says back when you ask a stopped one to do something, and what status prints. Resuming clears it.
! Supervisor stopped. It will answer, but it
will not act. (reviewing the diff)
✓ Supervisor resumed. It can act again, within
your autonomy setting.
The CLI prints each of those whole; they are wrapped here to fit.
In the dashboard: the Answers only / Answers and acts switch in Supervisor Control’s header sets the same flag, and carries the same sentence.
Whether it may act right now
vibe supervisor status
vibe supervisor status --json
✓ Running - may act, within your autonomy setting.
The --json form prints the flag as it is stored:
{
"pause": {
"paused": true,
"reason": "",
"updatedAt": "2026-08-15T12:49:34.169Z"
}
}
“Within your autonomy setting” is doing real work there. Two independent controls have to agree before the supervisor acts: this flag, and supervisorControl.autonomy in your config. status reports the flag alone, so a cleared flag with autonomy left on advise still means it answers and nothing more. See Supervisor Control.
The neighbouring commands are about a run, not the supervisor. vibe pause, vibe resume and vibe abort are top-level and each takes a run id. Stopping the supervisor takes none: it is about every future action, not one run.
The file is .vibestrate/supervisor/paused.json, and it is not a secret. If it ever gets into a state you cannot clear, delete it - a missing file reads as running.
Personas
list shows what this project resolves to, built-ins first, with the default marked. Two ship in code, and anything under personas in your project.yml is listed after them as [project]:
vibe supervisor list
Supervisor personas
→ staff-engineer (default) [built-in]
Correctness, risk, and blast-radius first.
lenses: correctness, tests, security-risk
→ security [built-in]
Authorization, secrets, and injection first.
lenses: authz, secrets, injection
posture: prefers sandbox-suggested for
risky tasks
Each description prints in full on one line; they are shortened and wrapped above to fit.
archetypes lists the curated catalog, each marked when it is already in your config. Adopting one copies its definition into project.yml under personas; then point the default at it:
vibe supervisor archetypes
vibe supervisor adopt security-hawk
vibe supervisor default security-hawk
The catalog ships with six:
security-hawk performance-skeptic
correctness-purist frontend-reviewer
data-migration-guardian ship-fast-pragmatist
Only the id travels: the definition is Vibestrate’s own, so an id it does not know is refused rather than invented.
remove deletes a persona from your config. It refuses three, each with the reason: a built-in (it lives in code, nothing to remove), the current default (re-point it first), and an id that is not in your config.
Every write goes through the same service the dashboard uses, and the whole config is re-validated before it lands: a change that would leave it invalid is refused, not written.
Outside a project, the write commands say so rather than guessing at a root:
No Vibestrate project here. Run `vibe init` first.
In the dashboard: the Supervisors page under More is the same catalog - what each persona aims the reviewers at, the flow it favours for risky work, the safety posture it suggests, and the project default. vibe run "task" --supervisor <id> pins one for a single run.