Blocked and interrupted
What to do when a soldier asks a question, or disappears.
Blocked: the soldier asked something
A soldier that stops to ask you a question settles as blocked. The question is stored as a structured decision on the task (question, options if it offered any, and when it was asked) and the commander is woken.
vx status
vx decide <task-id> "Use the existing helper"decide delivers your answer to the soldier's still-open pane and records it against the decision. If the question came from Claude Code's question selector, pass an option's exact text or its 1-based number; it is delivered as a single key press, as if you had picked it. The task returns to running, or settles again if the soldier finishes or asks another question right away.
A Pi soldier has no question selector. It asks through an ask_user tool that vexillum gives it, and your answer (an option's exact text or number, or any text) is written to the file that tool waits on; nothing is typed into its pane. When it asked with a plain needs-decision: line instead, the answer is typed as text: write the answer itself, not an option number. See Using Pi.
An OpenCode soldier is answered with key presses on the screens vexillum recognizes (a permission prompt, a question form) and as text otherwise; always allow is never chosen for you. See Using OpenCode.
Only a blocked task can be answered. If its pane is actually gone, decide marks it interrupted and refuses.
A task blocked by mistake
A task is only marked blocked when the soldier really asked: Claude Code's question selector, or a needs-decision: line written in its final turn with real text. If one is blocked anyway and there is nothing to answer, clear it without sending the soldier anything:
vx decide <task-id> --dismissThe task becomes what its pane says it is: running if the soldier is still working, done (or unconfirmed) if it has settled, interrupted if the pane is gone. If the pane really is blocked on a question, --dismiss refuses and you answer it instead. The dismissed question stays on the task, marked dismissed, and does not block it again. vx prompt and vx ship refuse a blocked task and name this command in their error.
Interrupted: the soldier vanished
interrupted means vexillum lost the soldier itself (its pane was closed, or herdr restarted) while it was still working. It does not mean the soldier failed. Before doing anything else, look inside its camp:
git -C <camp path> log --oneline
git -C <camp path> statusWork it already committed is still there. If it matters, land it first with vx land <task-id>.
Then, only if you want the task redone:
vx redispatch <task-id>This is re-dispatch, not resumption. It discards the old camp (uncommitted changes and unlanded commits included), creates a fresh one and relaunches the original prompt. Nothing of the dead soldier's partial work or session is recovered. Because it is destructive, the commander tells you what it found in the camp and asks before running it. Only interrupted tasks can be re-dispatched. Redispatch does not touch the browser: if a soldier drove your browser (for example through a Chrome extension), the tabs it opened stay there until you close them.
Unconfirmed: idle without proof
unconfirmed means the soldier went idle with no commit ahead of its base (or no report, for a scout) and no valid declared pause. The pane is still there, so look at the camp yourself.
The task's output ends with a note that explains the status, and it carries the pane read taken when the task was marked. When the soldier had declared a pause earlier and that file is gone, the note says so: the soldier woke from its wait, removed its pause file and ended its turn without delivering. It is not waiting on anything.
Do not judge whether the soldier is alive from a herdr pane read: the viewport can be stale and show an old "still running" screen. Check the facts instead: whether pauses/<agent>.md exists and is fresh (written in the last 30 minutes), the pane's agent_status in herdr pane list, and the task output from vx status together with git log in the camp. No fresh pause, an idle pane and no commit or report means the soldier stopped without delivering. Send it the next step with vx prompt.