Advertising commands
Initial commands
The Agent MAY includeavailableCommands in the session/new, session/resume, and, when supported, session/fork responses, alongside configOptions when supported. This lets the Client display commands as soon as session setup completes, without requiring an available_commands_update notification before the session/new response.
For example, a session/new response can advertise a command with text input:
AvailableCommand[]
Optional initial list of commands available in this session. Omission or
[]
means no initial commands are advertised. Empty lists are omitted when
serializing setup responses.null is not a valid outbound value for this field. Consistent with v2’s tolerant deserialization rules, receivers treat null or a malformed non-array value like omission and skip invalid command items within an array.
Notifications
After session setup, the Agent MAY announce commands that were not included in the response, or update the list, via theavailable_commands_update session notification:
availableCommands array is the complete replacement list, not a delta. An empty array clears all advertised commands.
AvailableCommand
string
required
The command name (e.g., “web”, “test”, “plan”)
string
required
Human-readable description of what the command does
AvailableCommandInput
Optional input specification for the command
AvailableCommandInput
Currently supports text input withtype: "text":
string
required
A hint to display when the input hasn’t been provided yet
type values. Custom input types MUST begin with _; unknown non-underscore input types are reserved for future ACP variants. Clients that cannot render an input specification should preserve it when storing, replaying, proxying, or forwarding command metadata, and otherwise display the command without structured input.
Dynamic updates
The Agent can update the list of available commands at any time during a session by sending anotheravailable_commands_update notification. Each notification replaces the list previously advertised in a setup response or notification, including [] to clear it. This allows commands to be added based on context, removed when no longer relevant, or modified with updated descriptions.
Running commands
Commands are included as regular user messages in prompt requests:messageId, and the Agent reports that message through a user_message update or user_message_chunk updates with the same ID.
If a command is handled locally and the runtime does not record it, the adapter inserts a live-only user message into the ACP conversation. It need not wait for a runtime insertion event or keep a permanent transcript entry. If the command is retained and replayed later, it uses the same message ID and is not executed again.