Mission Control
Mission Control
Agents run from everywhere: the CLI, the console, chat, a bot. Mission Control is the one place all of them show up, live, with the controls to intervene.
Open it at console.hanzo.ai → Mission Control. It is a view over the agent session plane, so everything below is available over the API too.
What a session is
A session is the org-scoped row every surface hangs its activity off. It carries
an append-only event log with a monotonic seq, and sessions form a tree:
a session with a parentSessionId is a subagent and inherits the parent's
rootSessionId, so one piece of work is one tree no matter how many agents it
spawns.
Status is running, paused, done, or error. Events are one of message,
tool-call, spawn, log, status, or control. A session also records where
it is running: agent, host, cwd, repo, and target.
List what is running
curl "https://api.hanzo.ai/v1/agents/sessions?status=running&limit=50" \
-H "Authorization: Bearer $HANZO_API_KEY"Roots only by default. Pass ?parent= or ?root= to walk into a tree, or
?project= to scope it. limit defaults to 100 and caps at 500.
GET /v1/agents/sessions/{id} returns one session with its direct children and
its 50 most recent events; /tree returns the whole tree; and
GET /v1/agents/sessions/stream is a server-sent event stream of session and
event frames with a keepalive every 25 seconds.
The four controls
# Ask a session to pause
curl -X POST https://api.hanzo.ai/v1/agents/sessions/$ID/pause \
-H "Authorization: Bearer $HANZO_API_KEY"
# Send it a message mid-run
curl -X POST https://api.hanzo.ai/v1/agents/sessions/$ID/message \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "message": "skip the migration, just report" }'resume and stop are the same shape as pause. All four answer
{ command, event, forwarded }.
A control command is an intent, not a state change. This is the one thing to
get right. A 200 means the command was durably recorded and delivered — not
that the agent has paused. The status becomes paused, done, or error only
when the surface actually running the agent reports it back with
PATCH /v1/agents/sessions/{id}. An agent in the middle of a long tool call
notices its next checkpoint, not your request.
Delivery works by the running surface draining
GET /v1/agents/sessions/{id}/control?after={seq} — which is why forwarded is
false: the command is waiting to be picked up, and that is normal.
Three more rules worth knowing:
stopis the blunt one. For a session backed by a durable workflow it cancels rather than signals; anymessageyou send with it becomes the cancellation reason.messageis the only command with a required body —message(up to 16 KiB) orpayload. Neither is a400.- A finished session refuses every command with
409. A session id another org owns answers404, exactly like one that never existed.
Related
- Agents — defining and running the agents that open these sessions
- Automations — durable flows, including steps that wait for a person
- Traces — the recorded execution behind a run
- API Reference — every endpoint at
api.hanzo.ai
How is this guide?
Hanzo Memory
Per-user long-term memory for agents and apps — remember something once, recall it by meaning, and keep each user's memory isolated from every other.
Automations
Durable automation flows — a trigger, a chain of steps, and runs that survive a restart, including a step that pauses for a human and resumes days later.