Platform tools exist only in autonomous runs. Interactive sessions — dashboard chat, the OpenAI-compatible API, SSH — don’t get them: a live reader is already watching the conversation, so there is nothing to notify and nothing to sleep through.
Waiting
sleep(seconds)/sleep_until(timestamp)— the agent parks the run (max 6 hours). The VM is snapshotted while sleeping (zero compute) and resumes mid-turn with full state. For anything longer, the agent is instructed to finish with a handoff instead.
Asking: send_message
send_message(text) notifies you through the agent detail page’s Inbox tab, outbound webhooks (agent_message.created), and configured message channels. It is fire-and-forget.
In a run,
send_message is the only agent output that reaches you — plain assistant text stays in the session timeline and notifies nobody. Together with files staged in ~/outputs/, it forms the two-channel contract for run deliverables, and the run preamble tells the agent so.Answering
Reply from the agent’s Inbox tab in the dashboard, or from the CLI:Message channels
Channels deliver an agent’ssend_message output beyond the dashboard:
Manage existing channels with
zwrm agent channels enable|disable|remove <channel-id> --agent <agent>. Available channel types depend on what your deployment has configured — channels list prints the deliverable types.
Escalations
Connector tools attached with--escalate pause the run (needs_attention) until you approve or deny the tool call from the run page. The VM waits suspended at no cost. See Connectors for details.