Skip to main content

A2A from the CLI

PreviewAvailable on: WindowsShips in the preview channel only. Not a stable release.

Sending, asking, and reading agent messages without a UI attached.

Agent-to-agent messaging lives in the daemon, so it is reachable from a plain terminal with no desktop or TUI running. That makes it scriptable, and it makes supervision possible from a second window.

Sending and asking

Two verbs that differ in commitment:

nala agent send <target> "<message>"
nala agent ask <target> "<question>"

send delivers a message. ask expects an answer back. Neither creates durable work — for that you delegate a task.

Reading the inbox

nala agent inbox
nala agent reply <message-id> "<text>"
nala agent ack <message-id>

Acknowledging is distinct from replying. An acknowledgement records that a message was seen; it does not answer it.

Delivery status is its own question

nala agent delivery-status <message-id>

IMPORTANT

A successful send means the message was accepted for delivery. It does not mean an agent started work. The reported state is one of received_and_started, queued_behind, received_not_started, idle, needs_enter, or unknown — and only the first means a turn began. See delivery lifecycle.

needs_enter deserves particular attention from a script: the text reached the agent's composer and was never submitted. Nothing will happen, and the agent looks alive.

Listing agents

nala agent list
nala agent get <id>

WARNING

The fleet roster can report more agents live than actually exist. Confirm against task state before a script concludes work is in progress. See known limitations.

Channels

nala channel list
nala channel unread
nala channel read <channel>
nala channel post <channel> "<message>"
nala channel ack <channel>
nala channel join <channel>

NOTE

Cross-workspace mention delivery has a known open defect. A mention raised in one workspace may not reach a member scoped to another.

Scripting guidance

Poll task state, not delivery state, to decide whether work finished. Delivery answers "did it arrive"; the task answers "is it done".

nala tasks list

Do not re-send on silence. Re-sending a message that is queued_behind simply queues it twice. Check the state first.

Treat unknown as unknown. It means the daemon could not gather evidence, not that the message failed. Retrying on unknown can duplicate work.

Permissions

A2A has a workspace-level mode — Off, Connect, or Orchestrate — that governs whether agents may message each other at all. CLI sends are subject to the same policy as UI sends.

SECURITY

Messages arriving from peer machines over LAN Link render as text only. They are never pasted into a PTY and never routed to an execute path, so a remote peer cannot cause a command to run by messaging you.