This schema file is generated in this repository at
schema/v2/schema.json.
GitHub releases for this schema are not published yet.Agent
Defines the interface that all ACP-compliant agents must implement. Agents are programs that use generative AI to autonomously modify code. They handle requests from clients and execute tasks using language models and tools.auth/login
Authenticates the client using the specified authentication method. Agents MUST support this method when theirinitialize response included
a non-empty authMethods list. Clients MUST call this method only
with a method whose type defines a protocol-driven login flow, and MUST NOT
call it when authMethods was omitted or empty.
Called when the agent requires authentication before allowing session creation.
The client provides the authentication method ID that was advertised during initialization.
After successful authentication, the client can proceed to create sessions with
session/new without receiving an auth_required (-32000) error.
See protocol docs: Initialization
LoginAuthRequest
Request parameters for theauth/login method.
Specifies which authentication method to use.
Agents MUST support this method when their initialize response included
a non-empty authMethods list. Clients MUST NOT call this method
when authMethods was omitted or empty.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityThe ID of the authentication method to use.
Must be one of the methods advertised in the initialize response.
LoginAuthResponse
Response to theauth/login method.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilityauth/logout
Logs out of the current authenticated state. Agents MUST support this method when theirinitialize response included
a non-empty authMethods list. Clients MUST NOT call this method
when authMethods was omitted or empty.
After a successful logout, authentication-gated requests require the
client to complete an advertised authentication flow again. There is no
guarantee about the behavior of already running sessions.
LogoutAuthRequest
Request parameters for theauth/logout method.
Terminates the current authenticated session.
Agents MUST support this method when their initialize response included
a non-empty authMethods list. Clients MUST NOT call this method
when authMethods was omitted or empty.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityLogoutAuthResponse
Response to theauth/logout method.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilityinitialize
Establishes the connection with a client and negotiates protocol capabilities. This method is called at the beginning of the connection, before any other request, to:- Negotiate the protocol version to use
- Exchange capability information between client and agent
- Determine available authentication methods
initialize is authoritative.
The agent should respond with its supported protocol version and capabilities.
See protocol docs: Initialization
InitializeRequest
Request parameters for the initialize method. Sent by the client to establish connection and negotiate capabilities. See protocol docs: Initialization Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCapabilities supported by the client.
- Default:
{}
InitializeResponse
Response to theinitialize method.
Contains the negotiated protocol version and agent capabilities.
See protocol docs: Initialization
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAuthentication methods supported by the agent.Optional. Omitted or empty means the agent does not advertise the
auth/login and auth/logout methods. Supplying one or more methods means
the agent MUST support both auth/login and auth/logout.Capabilities supported by the agent.
- Default:
{}
The highest protocol version supported by the agent that is at or below
the version requested by the client. If no such version exists,
initialization fails with error code -32022.The client must check that it supports this version and should disconnect
if it does not.
session/cancel
Cancels a session’s foreground work and its prompts not yet inserted. Work in the latestbackground list is not covered and keeps running. The
Agent MAY stop background activity it does not list.
Upon receiving this notification, the Agent SHOULD stop all language model
requests and all tool call invocations of the cancelled foreground work as soon
as possible.
The Agent MUST stop waiting for pending session/request_permission requests of
the cancelled work and treat them as not approved. It SHOULD cancel each of them
with $/cancel_request.
After all ongoing operations have been successfully aborted and pending
updates have been sent, the Agent MUST send an idle state_update session
update with the cancelled stop reason if cancellation ended active
foreground work. No additional completion update is required if no
foreground work was active.
After cancellation completes, the Agent SHOULD ignore late answers rather
than use them to resume the cancelled work.
Agents MUST catch errors caused by aborting cancelled work and report the
cancelled stop reason, not error.
The Agent MAY send content or tool call updates after receiving
session/cancel, but MUST send them before the idle state_update that
reports cancellation.
See protocol docs: Cancellation
CancelSessionNotification
Notification to cancel a session’s foreground work and its prompts not yet inserted. See protocol docs: Cancellation Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilitysession/close
Closes an active session and frees up any resources associated with it. The Agent MUST cancel any ongoing work as ifsession/cancel was called, stop the
session’s background work, and then free the resources associated with the session.
CloseSessionRequest
Request parameters for closing an active session. The Agent MUST cancel any ongoing work related to the session as ifsession/cancel
was called, then free the resources associated with the session. Unlike session/cancel,
closing also stops the session’s background work. After the close response, the Agent
sends no other messages for the session on that connection.
Closing a session that does not exist or is not active SHOULD succeed, and Clients SHOULD
treat a -32002 response as a successful close.
When closing cancels active foreground work, the Agent MUST send the final
updates for that work and the idle state_update with stopReason: "cancelled"
before responding successfully to session/close. Closing an idle session
does not itself require another idle update.
Closing also cancels pending session/prompt requests whose messages have not
been inserted, including held prompts. If closing prevents a prompt’s user message from being inserted, the
Agent MUST answer that request with -32800 (Request Cancelled). If the message
has already been inserted, the Agent MUST respond successfully with its
messageId. Prompt responses need not precede the close response.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCloseSessionResponse
Response from closing a session. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilitysession/delete
Deletes an existing session fromsession/list.
This method is only available if the agent advertises the session.delete capability.
DeleteSessionRequest
Request parameters for deleting an existing session fromsession/list.
Only available if the Agent supports the session.delete capability.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDeleteSessionResponse
Response from deleting a session. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilitysession/list
Lists existing sessions known to the agent. The agent should return metadata about sessions with optional filtering and pagination support.ListSessionsRequest
Request parameters for listing existing sessions. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionListCursor | null
Opaque cursor token from a previous response’s nextCursor field for cursor-based paginationOmitted and
null are equivalent and mean the first page is requested.AbsolutePath | null
Filter sessions by working directory. Must be an absolute path.Only sessions whose
cwd is this same directory match. Subdirectories and
additionalDirectories don’t. Agents MAY normalize paths when comparing.Omitted and null are equivalent and mean sessions are not filtered by working directory.ListSessionsResponse
Response from listing sessions. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionListCursor | null
Opaque cursor token. If present, pass this in the next request’s cursor parameter
to fetch the next page. Omitted and
null are equivalent and mean there are no more
results. An empty string is a valid cursor, not the end of results.session/new
Creates a new conversation session with the agent. Sessions represent independent conversation contexts with their own history and state. The agent should:- Create a new session context
- Connect to any specified MCP servers
- Return a unique session ID for future requests
auth_required (-32000) error if the agent requires authentication.
See protocol docs: Session Setup
NewSessionRequest
Request parameters for creating a new session. See protocol docs: Creating a Session Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAdditional workspace roots for this session. Each path must be absolute.These expand the session’s workspace scope without changing
cwd, which
remains the base for relative paths. When omitted or empty, no
additional roots are activated for the new session.List of MCP (Model Context Protocol) servers the agent should connect to.
SystemPrompt | null
System-level instructions for the new session.Optional. Omitted and
null are equivalent and mean the Agent uses its
own default instructions. Clients MUST only send this when the Agent
advertises session.systemPrompt.NewSessionResponse
Response from creating a new session. New sessions default toidle until a state update reports otherwise.
Updates may arrive before or after this response. Clients MUST NOT overwrite
an already-reported state when the response arrives.
See protocol docs: Creating a Session
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityInitial commands the agent can execute in this session.Optional. Omitted or empty means no initial commands are advertised.
Senders MUST use an array, not
null. Receivers treat null like omission.
Later available_commands_update notifications replace this list.Initial session configuration options.Optional. Omitted or empty means no config options are advertised.
Senders MUST use an array, not
null. Receivers treat null like omission.
Later config_option_update notifications replace this list.Unique identifier for the created session.Used in all subsequent requests for this conversation.
session/prompt
Processes a user prompt within a session. Acceptance means adding a logical user message with an ID and a position relative to other messages in the ACP conversation, not receipt or queueing. The Agent MUST return the inserted message’s ID without waiting for processing to finish. The Agent reports the user message with the same ID throughsession/update.
This notification may arrive before or after the response, but neither may
precede insertion. Processing state, output, tool calls, and completion are
also reported through session updates.
An error response means the user message was not inserted. Once it is
inserted, the Agent MUST NOT answer with an error, even if the work fails
before the response is sent. It ends that work with the error stop reason.
A rejected submission produces no user-message updates. Foreground state
follows its normal lifecycle independently of the request outcome:
running may precede insertion, and rejection alone does not imply idle.
See protocol docs: Prompt Lifecycle
PromptRequest
Request parameters for sending a user prompt to the agent. Contains the user’s message and any additional context. See protocol docs: User Message Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityThe blocks of content that compose the user’s message.As a baseline, the Agent MUST support
text and resource_link content blocks,
while other variants are optionally enabled via PromptCapabilities.The Client MUST adapt its interface according to PromptCapabilities.The client MAY include referenced pieces of context as either
resource or resource_link content blocks.When available, resource is preferred
as it avoids extra round-trips and allows the message to include
pieces of context from sources the agent may not have access to.Clients MUST NOT send an empty array. Agents MAY reject one with -32602 without
inserting it.PromptResponse
Response acknowledging that a user prompt was inserted into the ACP conversation. This response does not indicate that the prompt was merely received or held, nor that the agent has finished processing it. Processing and completion are reported throughstate_update session updates.
Insertion is the logical addition of a user message with a message ID and a position
relative to other messages in the ACP conversation.
See protocol docs: Prompt Accepted
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityIdentifies the user message inserted into the ACP conversation.Required and non-null. Omission and explicit
null are both invalid.The corresponding user-message session update carries this same identifier and may arrive
before or after this response. Agents must echo the message during the live session, but are
not required to retain it. If retained and replayed, the message keeps this identifier.session/resume
Resumes an existing session. The agent should resume the session context, allowing the conversation to continue. IfreplayFrom is set, the agent should replay
retained conversation history before responding.
ResumeSessionRequest
Request parameters for resuming an existing session. Resumes an existing session and optionally replays retained conversation history according toreplayFrom.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAdditional workspace roots to activate for this session. Each path must be absolute.When omitted or empty, no additional roots are activated. When non-empty,
this is the complete resulting additional-root list for the resumed
session. It may differ from any previously used or reported list as long as
the request
cwd matches the session’s cwd.The working directory for this session. Must be an absolute path.Clients MUST send the session’s working directory. Agents MAY reject a different directory
with
-32602, and MAY normalize paths when comparing.List of MCP servers to connect to for this session.The complete set of Client-provided servers. Omitted and
[] mean none. Agents SHOULD
NOT restore servers from earlier requests.ReplayFrom | null
Inclusive cursor describing where conversation replay should begin.Optional. Omitted and
null are equivalent and mean the Agent should resume without
replaying previous conversation history. Replay cursors are inclusive:
replay includes the position identified by the cursor. Supplying
\{ "type": "start" \} means the Agent should replay all retained
conversation history before responding.Agents MUST reject unsupported cursor types or malformed cursor values
with -32602 (Invalid params), rather than substituting another cursor
or resuming without replay.SystemPrompt | null
System-level instructions for the resumed session.Optional. Omitted and
null are equivalent. The Agent may then keep a
system prompt it stored with the session or use its default instructions.
Clients MUST only send this when the Agent advertises
session.systemPrompt, and SHOULD send the same value they used when the
session was created.ResumeSessionResponse
Response from resuming an existing session. The agent MUST send a currentstate_update after any requested history
replay and before this response, even without replay. The update reports
foreground state after resuming. The response alone does not imply idle.
See protocol docs: Current-State Synchronization
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityInitial commands the agent can execute in this session.Optional. Omitted or empty means no initial commands are advertised.
Senders MUST use an array, not
null. Receivers treat null like omission.
Later available_commands_update notifications replace this list.Initial session configuration options.Optional. Omitted or empty means no config options are advertised.
Senders MUST use an array, not
null. Receivers treat null like omission.
Later config_option_update notifications replace this list.session/set_config_option
Sets the current value for a session configuration option.SetSessionConfigOptionRequest
Request parameters for setting a session configuration option. Agents MUST support this method for any session where they advertise config options. Agents MUST reject an unknownconfigId or invalid value with -32602 and leave the
configuration unchanged.
See protocol docs: Session Config Options
Type: Union
Shared properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCustom or future session configuration option value payload.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Agents MUST reject a session/set_config_option request with a value type
they do not support with -32602.SetSessionConfigOptionResponse
Response tosession/set_config_option method.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilityterminal/cancel
Stops one terminal’s process without cancelling the rest of the session’s work. This method is only available while the terminal advertisescapabilities.cancel.
The response means the Agent accepted the cancellation. A terminal_update with
exitStatus confirms it.
CancelTerminalRequest
Request parameters for cancelling one terminal. Clients MUST NOT send it unless the terminal currently advertisescapabilities.cancel.
The Agent responds once it has accepted the cancellation. The response does not mean
the work has stopped. The Agent confirms it with a terminal_update that sets
exitStatus. Cancelling stops the process but does not release the terminal, and does
not change the status of a tool call that references it.
The Agent responds with -32602 if the terminal is unknown, has already exited, or is not
cancellable. Cancelling a terminal does not change the foreground state by itself.
See protocol docs: Cancelling Terminals
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCancelTerminalResponse
Response from cancelling a terminal. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilitytool_call/cancel
Cancels one tool call without cancelling the rest of the session’s work. This method is only available while the tool call advertisescapabilities.cancel.
The response means the Agent accepted the cancellation. A final tool_call_update
confirms it.
CancelToolCallRequest
Request parameters for cancelling one tool call. Clients MUST NOT send it unless the tool call currently advertisescapabilities.cancel.
The Agent responds once it has accepted the cancellation. The response does not mean
the work has stopped. The Agent confirms it with a tool_call_update to a final
status: normally cancelled, or completed or failed if the work finished first.
The Agent responds with -32602 if the tool call is unknown, already final, or not
cancellable. Cancelling a tool call does not change the foreground state by itself.
See protocol docs: Cancelling Tool Calls
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCancelToolCallResponse
Response from cancelling a tool call. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityClient
Defines the interface that ACP-compliant clients must implement. Clients are typically code editors (IDEs, text editors) that provide the interface between users and AI agents. They manage the environment, handle user interactions, and control access to resources.elicitation/complete
Notification that a URL-based elicitation has completed. See protocol docs: ElicitationCompleteElicitationNotification
Notification sent by the agent when a URL-based elicitation is complete. This notification is not a foreground state update. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilityelicitation/create
Requests structured user input via a form or URL. See protocol docs: ElicitationCreateElicitationRequest
Request from the agent to elicit structured user input. The agent sends this to the client to request information from the user, either via a form or by directing them to a URL. Elicitations are tied to a session (optionally a tool call) or a request. A session-scoped request follows the aggregate foreground-state contract: agents SHOULD reportrequires_action when the whole foreground workflow is
blocked on user action. Once reported, they MUST report running when progress
resumes, or idle if work ends without resuming. Independent background requests
and request-scoped elicitations do not themselves change session state.
Accepting a URL does not mean the external interaction completed.
Agents SHOULD cancel pending elicitations no longer needed by cancelled work.
The request’s scope alone does not establish that dependency.
See protocol docs: Elicitation
Type: Union
Shared properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityForm-based elicitation where the client renders a form from the provided schema.Alternatives (
oneOf):Custom or future elicitation mode.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this mode should preserve the raw payload
when storing, replaying, proxying, or forwarding elicitation requests.
They MUST NOT render it as a known elicitation mode.Alternatives (oneOf):CreateElicitationResponse
Response from the client to an elicitation request. Type: Union Shared properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCustom or future elicitation action.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Agents that do not understand this action should preserve the raw
payload when storing, replaying, proxying, or forwarding elicitation
responses, and otherwise MUST handle it as cancel.session/request_permission
Requests permission from the user for an operation. Called by the agent when it needs user authorization before executing a potentially sensitive operation. The client should present the options to the user and return their decision. Aftersession/cancel, the agent stops waiting for requests of the cancelled
foreground work and SHOULD cancel them with $/cancel_request. The client
answers a cancelled request with the cancelled outcome.
See protocol docs: Requesting Permission
RequestPermissionRequest
Request for user permission to proceed with an operation. Sent when the agent needs authorization before performing a sensitive operation. See protocol docs: Requesting Permission Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional human-readable explanation of why permission is needed.This text is specific to the permission prompt and does not update any
subject’s displayed content. Omitted and
null are equivalent and mean no separate
permission description was provided.RequestPermissionSubject | null
Optional structured context about the operation requiring permission.Omitted and
null are equivalent and mean no structured subject was provided.Human-readable title for the permission prompt.This title is specific to the permission prompt and does not update any
subject’s displayed title.
RequestPermissionResponse
Response to a permission request. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: Extensibilitysession/update
Handles session update notifications from the agent. This is a notification endpoint (no response expected) that receives updates about session activity, including message updates, message chunks, tool calls, and execution plans. Note: Clients SHOULD continue accepting tool call updates even after sending asession/cancel notification, as the agent may send final
updates before reporting an idle state_update with the cancelled
stop reason.
See protocol docs: Agent Reports Output
UpdateSessionNotification
Notification containing a session update from the agent. Agents can send session updates at any point while the session exists. See protocol docs: Agent Reports Output Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityProtocol Level
Defines the interface that ACP-compliant agents and clients must both implement. Notifications whose methods start with ‘/cancel_request` notification. If an agent or client receives notifications starting with ’$/’ it is free to ignore the notification.$/cancel_request
Cancels an ongoing request. This is a notification sent by the side that sent a request to cancel that request. Upon receiving this notification, the receiver:- MAY cancel the corresponding request activity and all nested activities
- MAY send any pending notifications.
- MUST still send a response for the original request. If the request already finished
or is not cancelled, that is its normal response. If it is cancelled, it is either the
method’s defined cancellation result (for example an inserted
session/prompt, or acancelledpermission outcome) or an error with code-32800(Request Cancelled).
CancelRequestNotification
Notification to cancel an ongoing request. See protocol docs: Cancellation Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityThe ID of the request to cancel: a request that the sender of this notification issued.
Receivers match it only against requests they received from that sender.
AbsolutePath
An absolute filesystem path used by the protocol. Uses the native syntax of the machine the Agent runs on, such as/home/user/project,
C:\Users\user\project, or \\server\share\project. It is not a URI.
Type: string
AgentAuthCapabilities
Authentication-related extension capabilities supported by the agent. This object does not advertise support forauth/login or auth/logout.
Those methods are advertised by a non-empty authMethods list in the
initialize response.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAgentCapabilities
Capabilities supported by the agent. Advertised during initialization to inform the client about available features and content types. See protocol docs: Agent Capabilities Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAgentAuthCapabilities | null
Authentication-related extension capabilities supported by the agent.Optional. Omitted and
null are equivalent and mean the agent does not advertise any
authentication-related extensions. This field does not advertise support
for auth/login or auth/logout. Those methods are advertised by a
non-empty authMethods list in the initialize response.SessionCapabilities | null
Session capabilities supported by the agent.Optional. Omitted and
null are equivalent and mean the agent does not support the
session/* methods. Supplying \{\} means the agent supports the
baseline session methods: session/new, session/list,
session/resume, session/close, session/prompt, session/cancel,
and session/update.AgentMessage
An agent message upsert. OnlymessageId is required. content has patch semantics:
an omitted field leaves existing message content unchanged, null clears the
value, and a concrete array replaces the previous value. For a new
messageId, omitted content starts empty. content is replaced as a
whole array. Send [] or null to clear it.
Message updates and chunks are applied in the order they are received. When
an agent_message update includes content, that array replaces any
content previously accumulated for the message, including content from
earlier chunks. Later chunks with the same messageId append to the current
content.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesContentBlock[] | null
Complete replacement content for this message.
AgentThought
An agent thought or reasoning message upsert. OnlymessageId is required. content has patch semantics:
an omitted field leaves existing thought content unchanged, null clears the
value, and a concrete array replaces the previous value. For a new
messageId, omitted content starts empty. content is replaced as a
whole array. Send [] or null to clear it.
Message updates and chunks are applied in the order they are received. When
an agent_thought update includes content, that array replaces any
content previously accumulated for the thought, including content from
earlier chunks. Later chunks with the same messageId append to the current
content.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesContentBlock[] | null
Complete replacement content for this thought message.
Annotations
Optional annotations for the client. The client can use annotations to inform how objects are used or displayed Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityRole[] | null
Intended recipients for this content, such as the user or assistant.Omitted and
null are equivalent and mean no audience is specified.Timestamp indicating when the underlying resource was last modified.Should be an ISO 8601 formatted string (e.g., “2025-01-12T15:00:58Z”), as in MCP.Omitted and
null are equivalent and mean the modification time is not reported.Relative importance of this content when clients choose what to surface, from 0 (least
important) to 1 (most important).Omitted and
null are equivalent and mean no priority is specified.AudioContent
Audio provided to or from an LLM. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAnnotations | null
Optional annotations that help clients decide how to display or route this content.Omitted and
null are equivalent and mean no annotations are provided.AuthMethod
Describes an available authentication method. Thetype field acts as the discriminator in the serialized JSON form.
Type: Union
Client runs the configured agent program as a separate interactive
process, without passing this method to
auth/login.Custom or future authentication method.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this method type should preserve the raw
payload when storing, replaying, proxying, or forwarding initialization
data, and otherwise ignore the method or display it generically.AuthMethodAgent
Agent handles authentication itself throughauth/login.
The type discriminator value is agent.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional human-readable description of this authentication method.Omitted and
null are equivalent and mean no description is provided.AuthMethodId
Typed identifier used for auth method values on the wire. Type:string
AuthMethodTerminal
Terminal-based authentication method. The client runs the configured agent program as a separate interactive process for the user to authenticate via a TUI. Agents MUST advertise this method only when the client enabled its terminal authentication capability. A zero exit status signals success. Any other termination signals failure. The client MUST NOT pass this method toauth/login.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional human-readable description of this authentication method.Omitted and
null are equivalent and mean no description is provided.Additional environment variables to set on the configured agent invocation for terminal auth.
Names MUST be unique. These values override same-named variables in the
base launch configuration.
AvailableCommand
A command the agent advertises to the client. Thetype field acts as the discriminator in the serialized JSON form.
Type: Union
Custom or future command kind.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this command type should preserve the raw
payload when storing, replaying, proxying, or forwarding command
metadata, and otherwise ignore the command. They MUST NOT display it as a
slash command.AvailableCommandInput
The input specification for a command. Type: UnionCustom or future command input specification.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this input type should preserve the raw
payload when storing, replaying, proxying, or forwarding command
metadata, and otherwise ignore the input specification or display the
command without structured input.AvailableCommandsUpdate
Available commands are ready or have changed Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundSubagent
A listed subagent session associated with this session throughsubagent_update.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundTerminal
A listed terminal running in the background. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundToolCall
A listed tool call whose work continues in the background. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundWork
One piece of work running independently of the session’s foreground work. Items reference entities the Client already tracks. The Agent MUST announce each item before the first snapshot that lists it, and MUST report a terminal’sexitStatus or a
tool call’s final status before the snapshot that removes it. Each piece of work is
listed once: process-backed work is listed as its terminal, not also as its tool call.
See protocol docs: Background Work
Type: Union
A process that keeps running after its tool call returned control to the model.
Live until its
terminal_update reports exitStatus.Work started by a tool call that continues without a process of its own, such as
a watcher, a workflow, or a scheduled wakeup.
pending and paused tool calls
stay listed.A detached subagent session that has anything running: its state is not
idle, or
its own background list is non-empty or not reported.Custom or future background work.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.An unknown item still means background work is running, even when the Client
cannot show what it is.BlobResourceContents
Binary resource contents. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityMediaType | null
MIME type describing the encoded media payload.Omitted and
null are equivalent and mean the MIME type is not specified.BooleanPropertySchema
Schema for boolean properties in an elicitation form. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDefault value.Optional. Omitted and
null are equivalent and mean no default value is provided.Human-readable description.Optional. Omitted and
null are equivalent and mean no description is provided.Optional title for the property.Optional. Omitted and
null are equivalent and mean no title is provided.CancelledPermissionOutcome
The request was not approved and no option was selected. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityClientAuthCapabilities
Authentication capabilities supported by the client. Advertised during initialization to inform the agent which authentication method types the client can handle. This governs opt-in types that require additional client-side support. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalAuthCapabilities | null
Whether the client supports
terminal authentication methods.Optional. Omitted and null are equivalent and mean the client does not advertise support.
The client should supply \{\} only when it can reproduce the configured
agent invocation in an interactive terminal. Supplying \{\} means the
agent may include terminal entries in its authentication methods.ClientCapabilities
Capabilities supported by the client. Advertised during initialization to inform the agent about available features and methods. See protocol docs: Client Capabilities Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityClientAuthCapabilities | null
Authentication capabilities supported by the client.
Determines which authentication method types the agent may include
in its
InitializeResponse.Optional. Omitted and null are equivalent and mean the client does not advertise any
authentication-method extensions.ElicitationCapabilities | null
Elicitation capabilities supported by the client.
Determines which elicitation modes the agent may use.Optional. Omitted and
null are equivalent and mean the client does not advertise
elicitation support.Command
A slash command the user can invoke by including it in a prompt. Thetype discriminator value is command.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAvailableCommandInput | null
Input for the command if requiredOmitted and
null are equivalent and mean the command takes no input.Command name without the leading
/ (e.g., create_plan, research_codebase).MUST NOT contain whitespace and MUST be unique within the command list.CommandPermissionSubject
Permission request details for a command. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalId | null
The associated terminal, when already known. Omitted and
null are equivalent.ToolCallId | null
The associated tool call, when known. Omitted and
null are equivalent.CompactionId
Unique identifier for a context compaction within a session. Type:string
CompactionStatus
Lifecycle state of a context compaction. Type: UnionCustom or future compaction status.Values beginning with
_ are reserved for implementation-specific
extensions. Other unknown values are reserved for future ACP statuses.CompactionSummaryChunk
A content block appended to a compaction’s summary. A first-seen ID creates an in-progress compaction. Chunks append in receive order. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.
This metadata is scoped to the chunk and does not patch stored metadata.See protocol docs: ExtensibilityCompactionUpdate
A context compaction upsert. The first notification fixes the compaction’s timeline position. Later updates with the same ID patch that entity in place.summary, error, and _meta have patch semantics: omission leaves the
stored value unchanged, null clears it, and a concrete value replaces it.
summary: [] also clears the summary. A concrete _meta object patches the
stored metadata by top-level key instead of replacing it.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesContentBlock[] | null
Complete replacement user-displayable summary content for the compaction.
ConfigOptionUpdate
Session configuration options have been updated. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityContent
Standard content block (text, images, resources). Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityContentBlock
Content blocks represent displayable information in the Agent Client Protocol. Content blocks appear in:- User prompts sent via
session/prompt - Language model output reported through
session/updatenotifications as message updates or streamed chunks - Progress updates and results from tool calls
Text content. May be plain text or formatted with Markdown.All agents MUST support text content blocks in prompts.
Clients SHOULD render this text as CommonMark and MAY support GitHub Flavored Markdown
extensions.
Images for visual context or analysis.Requires the
image prompt capability when included in prompts.Audio data for transcription or analysis.Requires the
audio prompt capability when included in prompts.References to resources that the receiver may be able to read.All agents MUST support resource links in prompts.
Complete resource contents embedded directly in the message.Preferred for including context as it avoids extra round-trips.Requires the
embeddedContext prompt capability when included in prompts.Custom or future content block.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Receivers that do not understand this content block type should preserve
the raw payload when storing, replaying, proxying, or forwarding content,
and otherwise ignore it or display it generically. Agents MUST reject a
session/prompt request with a content block type they do not support
with -32602.ContentChunk
A streamed item of message content. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.
This metadata is scoped to the chunk and does not patch stored metadata.See protocol docs: ExtensibilityA unique identifier for the message this chunk belongs to.All chunks belonging to the same message share the same
messageId.
Chunks for different messages can interleave.Cost
Cost information for a session. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityUnit of
amount: an ISO 4217 currency code (e.g., “USD”, “EUR”) for money, or another
unit such as “credits”.Diff
File changes produced by a tool call.changes is authoritative for affected absolute paths and operations.
patch optionally carries renderable text for some or all of those changes
and MUST be consistent with changes. Agents SHOULD provide patch whenever
feasible. Clients MUST handle diffs where patch is omitted or null.
See protocol docs: Content
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityStructured file changes described by this diff.Clients can use this field without parsing patch text to determine affected paths.
DiffPatch | null
Renderable patch text for some or all of the structured changes.Agents SHOULD provide patch text whenever feasible. Omitted and
null are
equivalent and mean no renderable patch text was provided.DiffChange
One file-level change described by aDiff.
Structured change metadata lets clients identify affected files and
operations without parsing the text patch.
Type: Union
Shared properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDiffFileType | null
File content kind after the operation (for
delete, of the deleted file).Omitted and null are equivalent and mean the content kind is unknown.MediaType | null
MIME type of the file contents after the operation (for
delete, of the deleted file).Omitted and null are equivalent and mean the MIME type is unknown.Custom or future file operation.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.DiffFileType
Kind of file content represented by a diff change. Type: UnionCustom or future file type.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.DiffPatch
Renderable patch text and its format. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDiffPatchFormat
Text patch format used byDiffPatch.
Type: Union
One or more
diff --git sections in Git’s --patch (-p) text format.Unlike Git, which writes paths relative to the repository root, every
path MUST be absolute, including in rename from, rename to,
copy from, and copy to lines, and MUST NOT have a prefix such as
Git’s default a/ and b/. Otherwise paths follow Git: /dev/null
names the missing side of an added or deleted file in the --- and
+++ lines, and paths with unusual characters are quoted as Git quotes
them. Each path, once unquoted, is the same native absolute path string as
the matching changes entry. Surrounding commit metadata and email envelopes MUST NOT be
included.Custom or future patch format.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.DiffPathChange
Operation metadata for add, delete, and modify changes. Type: Object Properties:DiffPathPairChange
Operation metadata for move and copy changes. Type: Object Properties:ElicitationAcceptAction
The user accepted the elicitation and provided content. Type: Object Properties:The user-provided content, if any, as an object matching the requested schema.Omitted and
null are equivalent and mean no content is provided.ElicitationCapabilities
Elicitation capabilities supported by the client. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityElicitationFormCapabilities | null
Whether the client supports form-based elicitation.Optional. Omitted and
null are equivalent and mean form support is not advertised.
Supplying \{\} explicitly advertises form support.ElicitationUrlCapabilities | null
Whether the client supports URL-based elicitation.Optional. Omitted and
null are equivalent and mean the client does not advertise support.
Supplying \{\} means the client supports URL-based elicitation.ElicitationContentValue
Allowed wire representations forElicitationContentValue.
Type: Union
Any other JSON value, such as the value of a custom or future property type.Preserved as sent. Agents validate it against the requested schema like any
other value.
ElicitationFormCapabilities
Form-based elicitation capabilities. Supplying\{\} means the client supports form-based elicitation.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityElicitationFormMode
Form-based elicitation mode where the client renders a form from the provided schema. Type: Union Shared properties: Variants:Tied to a specific JSON-RPC request outside of a session
(e.g., during auth/configuration phases before any session is started).
ElicitationId
Unique identifier for an elicitation. Type:string
ElicitationPropertySchema
Property schema for elicitation form fields. Each variant corresponds to a JSON Schema"type" value.
Single-select enums use type: "string" with enum or oneOf set.
Multi-select enums use type: "array".
Type: Union
Custom or future elicitation property schema.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this property schema type should preserve
the raw schema when storing, replaying, proxying, or forwarding
elicitation requests. They MUST NOT render it as a known input control.ElicitationRequestScope
Request-scoped elicitation, tied to a specific JSON-RPC request outside of a session (e.g., during auth/configuration phases before any session is started). Type: Object Properties:ElicitationSchema
Type-safe elicitation schema for requesting structured user input. This represents a JSON Schema object with primitive-typed properties, as required by the elicitation specification. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional description of what this schema represents.Optional. Omitted and
null are equivalent and mean no schema description is provided.List of required property names.Optional. Omitted and
null are equivalent and mean no property names are required.Optional title for the schema.Optional. Omitted and
null are equivalent and mean no title is provided.ElicitationSchemaType
Type discriminator for elicitation schemas. Type: UnionElicitationSessionScope
Session-scoped elicitation, optionally tied to a specific tool call. WhentoolCallId is set, the elicitation is tied to a specific tool call.
This is useful when an agent receives an elicitation from an MCP server
during a tool call and needs to redirect it to the user.
Type: Object
Properties:
ToolCallId | null
Optional tool call within the session.Optional. Omitted and
null are equivalent and mean the elicitation is scoped to the
session without a specific tool call.ElicitationUrlCapabilities
URL-based elicitation capabilities. Supplying\{\} means the client supports URL-based elicitation.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityElicitationUrlMode
URL-based elicitation mode where the client directs the user to a URL. Type: Union Shared properties: Variants:Tied to a specific JSON-RPC request outside of a session
(e.g., during auth/configuration phases before any session is started).
EmbeddedResource
The contents of a resource, embedded into a prompt or tool call result. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAnnotations | null
Optional annotations that help clients decide how to display or route this content.Omitted and
null are equivalent and mean no annotations are provided.EmbeddedResourceResource
Resource content that can be embedded in a message. Type: UnionEnumOption
A titled enum option with a const value, human-readable title, and optional description. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityHuman-readable description.Optional. Omitted and
null are equivalent and mean no description is provided.EnvVariable
An environment variable to set when launching a process. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityError
JSON-RPC error object. Represents an error that occurred during method execution, following the JSON-RPC 2.0 error object specification with optional additional data. See protocol docs: JSON-RPC Error Object Type: Object Properties:A number indicating the error type that occurred.
This must be an integer as defined in the JSON-RPC specification.
ErrorData | null
Optional primitive or structured value that contains additional information about the error.
This may include debugging information or context-specific details.Omitted and
null are equivalent and mean no additional data is provided. Some codes
define a shape: UnsupportedProtocolVersionErrorData for -32022, and
SessionNotFoundErrorData for -32002 when a session is not found.A string providing a short description of the error.
The message should be limited to a concise single sentence.
ErrorCode
Predefined error codes for common JSON-RPC and ACP-specific errors. Standard errors use the JSON-RPC 2.0 codes. ACP-specific errors use the JSON-RPC server-error range (-32000 to -32099), and request cancellation uses -32800 from the range LSP reserves (-32899 to -32800). Type: UnionParse error: Invalid JSON was received by the server. An error occurred on
the server while parsing the JSON text.
Request cancelled: Execution of the method was aborted either due to a
cancellation request from the caller or because of resource constraints or
shutdown.
Unsupported protocol version: No protocol version supported by the Agent
is at or below the requested version. The error data is an
UnsupportedProtocolVersionErrorData.ErrorData
Schema forError::data: the shapes ACP defines, or any other value.
Type: Union
ErrorStopReason
Details of a failure that ended active work. Type: Object Properties:Error | null
The failure, as a JSON-RPC error object.Optional. Omitted and
null are equivalent and mean the agent is not reporting failure details.
Agents SHOULD include it.ExtNotification
Allows either side to send an arbitrary notification that is not part of the ACP spec. Extension notifications provide a way to send one-way messages for custom functionality while maintaining protocol compatibility. See protocol docs: ExtensibilityExtRequest
Allows for sending an arbitrary request that is not part of the ACP spec. Extension methods provide a way to add custom functionality while maintaining protocol compatibility. See protocol docs: ExtensibilityExtResponse
Allows for sending an arbitrary response to an extension request that is not part of the ACP spec. Extension methods provide a way to add custom functionality while maintaining protocol compatibility. See protocol docs: ExtensibilityHttpHeader
An HTTP header to set when making requests to the MCP server. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityIcon
An optionally-sized icon that can be displayed in a user interface. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityMediaType | null
Optional MIME type override if the source MIME type is missing or generic.Omitted and
null are equivalent and mean the source MIME type is used.Optional array of strings that specify sizes at which the icon can be used.
Each string should be in
WxH format (e.g., "48x48", "96x96") or
"any" for scalable formats like SVG.If not provided, the client should assume that the icon can be used at any size.Omitted and null are equivalent and mean no sizes are specified.A standard URI pointing to an icon resource. MUST be an
https: or data: URI.
Clients reject other schemes, fetch without credentials, and do not follow
scheme- or origin-changing redirects.- Format:
uri
IconTheme | null
Optional theme this icon is designed for.Omitted and
null are equivalent and mean the icon is not theme-specific.IconTheme
Theme an icon is designed for. Type: UnionCustom or future icon theme.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.IdleStateUpdate
No foreground work is active. Background activity may continue. Agents SHOULD include astopReason when the idle transition ends foreground
work. An idle update that does not end foreground work need not include one.
Receivers treat an omitted, null, or malformed stopReason as the agent not
reporting one.
Repeated or resume snapshots may carry the last stop reason for context.
They MUST NOT be counted as new completions, cancellations, or additional usage.
Type: Union
Shared properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundWork[] | null
Work running independently of foreground work, as a complete snapshot.Optional. Omitted and
null are equivalent and mean the Agent is not reporting
background work, not that nothing is running. [] means no background work is
running. An Agent that reports background work MUST include it on every state
update for the session. A malformed list is treated as not reported.See protocol docs: Background WorkWhy foreground work stopped. The value selects one of this type’s variants, which may add fields of their own.Optional. Omitted and
null are equivalent and mean the agent is not reporting a stop reason; a malformed value is treated the same way.See protocol docs: Stop ReasonsThe active work ended successfully.
Includes locally handled commands that required no model call.
The active work ended because the agent reached the maximum number of
model requests for the foreground work.
The user or client chose to stop the work: via
session/cancel, by
closing the session, or through an interaction the agent offers, such
as a permission option that tells the agent to stop. Work the agent
stops for its own reasons uses another reason, such as error for an
internal timeout.Agents MUST report this stop reason on an idle state_update when
cancellation ends active foreground work, even if aborting causes
exceptions. Agents MUST catch these errors and report cancelled, not
error.The active work ended because something failed.This includes pre-insertion foreground work. A prompt failure before
insertion also requires an error response to
session/prompt. After
insertion, the prompt’s response remains successful.Custom or future stop reason.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.ImageContent
An image provided to or from an LLM. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAnnotations | null
Optional annotations that help clients decide how to display or route this content.Omitted and
null are equivalent and mean no annotations are provided.URI associated with this resource or media payload.Omitted and
null are equivalent and mean no URI is associated with the image.- Format:
uri
Implementation
Metadata about the implementation of the client or agent. Describes the name and version of an ACP implementation, with an optional title for UI representation. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityIntended for programmatic or logical use, but can be used as a display
name fallback if title isn’t present.
Intended for UI and end-user contexts and optimized to be human-readable
and easily understood.If not provided, the name should be used for display.Omitted and
null are equivalent and mean the name is used for display.Version of the implementation. Can be displayed to the user or used
for debugging or metrics purposes. (e.g. “1.0.0”).
IntegerPropertySchema
Schema for integer properties in an elicitation form. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDefault value.Optional. Omitted and
null are equivalent and mean no default value is provided.Human-readable description.Optional. Omitted and
null are equivalent and mean no description is provided.Maximum value (inclusive).Optional. Omitted and
null are equivalent and mean there is no inclusive upper bound.Minimum value (inclusive).Optional. Omitted and
null are equivalent and mean there is no inclusive lower bound.Optional title for the property.Optional. Omitted and
null are equivalent and mean no title is provided.McpCapabilities
MCP capabilities supported by the agent for session lifecycle requests. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityMcpHttpCapabilities | null
Agent supports
http MCP servers.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports HTTP MCP server transports.McpStdioCapabilities | null
Agent supports
stdio MCP servers.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports stdio MCP server transports.McpHttpCapabilities
Capabilities for HTTP MCP server transports. Supplying\{\} means the agent supports HTTP MCP server transports.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityMcpServer
Configuration for connecting to an MCP (Model Context Protocol) server. MCP servers provide tools and context that the agent can use when processing prompts. See protocol docs: MCP Servers Type: UnionHTTP transport configurationOnly available when the Agent capabilities include
session.mcp.http.Stdio transport configurationOnly available when the Agent capabilities include
session.mcp.stdio.Custom or future MCP server transport configuration.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Receivers that do not understand this transport should preserve the raw
payload when storing, replaying, proxying, or forwarding session setup
data. Agents MUST reject a request with a transport they do not support
with -32602.McpServerHttp
HTTP transport configuration for MCP. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityHTTP headers to set when making requests to the MCP server. Headers the MCP transport
defines are owned by the transport, and Agents use the transport’s values for them.
McpServerStdio
Stdio transport configuration for MCP. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityEnvironment variables to set when launching the MCP server. Names SHOULD be unique.
Agents MAY reject duplicates with
-32602, and otherwise the last entry wins.McpStdioCapabilities
Capabilities for stdio MCP server transports. Supplying\{\} means the agent supports stdio MCP server transports.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityMediaType
An Internet media type identifying the format of protocol content. Type:string
MessageId
Identifier for a message, unique among messages of the same type within a session. Each message type, such as user messages, agent messages, and agent thoughts, has its own ID space: messages of different types may share an ID and remain distinct messages. Type:string
MultiSelectItems
Items for a multi-select (array) property schema. Type: UnionTitled multi-select items with human-readable labels.As in MCP, titled items omit
type and are identified by anyOf.MultiSelectPropertySchema
Schema for multi-select (array) properties in an elicitation form. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDefault selected values.Optional. Omitted and
null are equivalent and mean no default selections are provided.Human-readable description.Optional. Omitted and
null are equivalent and mean no description is provided.Maximum number of items to select.Optional. Omitted and
null are equivalent and mean there is no maximum selection count.- Minimum:
0
Minimum number of items to select.Optional. Omitted and
null are equivalent and mean there is no minimum selection count.- Minimum:
0
Optional title for the property.Optional. Omitted and
null are equivalent and mean no title is provided.Notice
Fire-and-forget information for the user. Notices are live events rather than session history. Agents must not rely on a notice being received, displayed, or seen by the user. No Client capability is required, and unsupported Clients may ignore notices. See protocol docs: Session Notices Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional plain-text detail or guidance.Omitted and
null are equivalent and mean no description was supplied.NoticeSeverity
Severity hint for a session notice. Type: UnionCustom or future notice severity.Values beginning with
_ are reserved for implementation-specific
extensions. Other unknown values are reserved for future ACP severities.NumberPropertySchema
Schema for number (floating-point) properties in an elicitation form. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDefault value.Optional. Omitted and
null are equivalent and mean no default value is provided.Human-readable description.Optional. Omitted and
null are equivalent and mean no description is provided.Maximum value (inclusive).Optional. Omitted and
null are equivalent and mean there is no inclusive upper bound.Minimum value (inclusive).Optional. Omitted and
null are equivalent and mean there is no inclusive lower bound.Optional title for the property.Optional. Omitted and
null are equivalent and mean no title is provided.PermissionOption
An option presented to the user when requesting permission. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityPermissionOptionId
Unique identifier for a permission option. Type:string
PermissionOptionKind
The type of permission option being presented to the user. Helps clients choose appropriate icons and UI treatment. Type: UnionCustom or future permission option kind.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.PlanEntry
A single entry in the execution plan. Represents a task or goal that the assistant intends to accomplish as part of fulfilling the user’s request. See protocol docs: Plan Entries Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityThe relative importance of this task.
Used to indicate which tasks are most critical to the overall goal.
PlanEntryPriority
Priority levels for plan entries. Used to indicate the relative importance or urgency of different tasks in the execution plan. See protocol docs: Plan Entries Type: UnionCustom or future plan entry priority.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.PlanEntryStatus
Status of a plan entry in the execution flow. Tracks the lifecycle of each task from planning through completion. See protocol docs: Plan Entries Type: UnionCustom or future plan entry status.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.PlanId
Unique identifier for a plan within a session. Type:string
PlanItems
A plan represented as structured entries. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityThe list of tasks to be accomplished.When updating an item-based plan, the agent must send a complete list of all entries
with their current status. The client replaces that plan with each update.
PlanUpdate
A content update for a plan identified by ID. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityPlanUpdateContent
Updated content for a plan. Type: UnionCustom or future plan update content.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Receivers that do not understand this content type should preserve the
raw payload when storing, replaying, proxying, or forwarding plans, and
otherwise ignore it or display it generically. It still replaces any earlier
content for the same planId.PromptAudioCapabilities
Capabilities for audio content in prompt requests. Supplying\{\} means the agent supports audio content in prompts.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityPromptCapabilities
Prompt capabilities supported by the agent insession/prompt requests.
Baseline agent functionality requires support for text
and resource_link content blocks in prompt requests.
Other variants must be explicitly opted in to.
Capabilities for different types of content in prompt requests.
Indicates which content types beyond the baseline (text and resource links)
the agent can process.
See protocol docs: Session Prompt Capabilities
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityPromptAudioCapabilities | null
Agent supports
audio content blocks.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports audio content in prompts.Agent supports embedded context in
session/prompt requests.When enabled, the Client is allowed to include resource content blocks
in prompt requests for pieces of context that are referenced in the message.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports embedded context in prompts.PromptImageCapabilities | null
Agent supports
image content blocks.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports image content in prompts.PromptEmbeddedContextCapabilities
Capabilities for embedded context in prompt requests. Supplying\{\} means the agent supports embedded context in prompts.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityPromptImageCapabilities
Capabilities for image content in prompt requests. Supplying\{\} means the agent supports image content in prompts.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityProtocolVersion
Protocol version identifier. This version is only bumped for breaking changes. Non-breaking changes should be introduced via capabilities. Type:integer (uint16)
ReplayComplete
Marks the end of the history replay requested bysession/resume.
The Agent sends this once on a session for each session/resume request
with a replayFrom cursor, after the last replayed update for that session
and before the response. It sends it for an empty history too. Every update
for the session between the request and this update is replayed history.
Every update after it is not.
The Agent does not send it when replayFrom is omitted or null, or when
it cannot finish the replay. A resume that ends without it delivered a
truncated replay.
See protocol docs: Replay Complete
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityReplayFrom
Inclusive cursor describing where replayed session history should begin. Replay includes the position identified by the cursor. Type: UnionCustom or future replay cursor.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Intermediaries SHOULD preserve the raw payload when storing, replaying,
proxying, or forwarding requests. Agents that do not support this cursor
MUST reject the request with -32602 (Invalid params), rather than
substituting another cursor or resuming without replay.ReplayFromStart
Inclusive replay cursor requesting replay from the start of retained conversation history. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityRequestId
A JSON-RPC request ID: a string or an integer. Unlike base JSON-RPC, it MUST NOT benull.
The receiver MUST reply with the same value in the response. Each side chooses IDs for its own
requests, so the same ID can be in use in both directions. A sender MUST NOT reuse an ID while
a request with it is still awaiting a response.
Type: Union
RequestPermissionOutcome
The outcome of a permission request. Type: UnionThe request was not approved and no option was selected: the session’s work was
cancelled, the user dismissed the prompt, or the client declined it by policy.
Agents MUST NOT proceed with the operation.The client answers a request the agent cancels with
$/cancel_request with
this outcome. After sending session/cancel, the client MAY also send it
without waiting for $/cancel_request, for a request it knows belongs to the
cancelled foreground work.See protocol docs: CancellationThe user selected one of the provided options.If
optionId doesn’t match an offered option, the agent MUST treat the request as not
approved.Custom or future permission outcome.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Agents that do not understand this outcome MUST NOT treat it as approval.
They should preserve the raw payload when storing, replaying, proxying, or
forwarding permission responses, and otherwise fail or decline the
permission request according to policy.RequestPermissionSubject
The operation requiring permission. Type: UnionCustom or future permission subject.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this subject type should preserve the raw
payload when storing, replaying, proxying, or forwarding permission
requests, and otherwise display a generic permission prompt or decline it
according to policy.RequiresActionStateUpdate
The foreground workflow as a whole is blocked on user action. Agents SHOULD report this state when foreground work cannot progress without user action. Pending permissions or elicitations alone do not imply this state if other foreground work can progress, or if the requests belong only to independent background activity. Once reported, agents MUST reportrunning when progress resumes, or idle if the work ends without resuming.
Responding to one request does not itself imply running.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundWork[] | null
Work running independently of foreground work, as a complete snapshot.Optional. Omitted and
null are equivalent and mean the Agent is not reporting
background work, not that nothing is running. [] means no background work is
running. An Agent that reports background work MUST include it on every state
update for the session. A malformed list is treated as not reported.See protocol docs: Background WorkResourceLink
A link to a resource that the receiver may be able to read, included in a prompt or tool call result. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAnnotations | null
Optional annotations that help clients decide how to display or route this content.Omitted and
null are equivalent and mean no annotations are provided.Optional human-readable details shown with this protocol object.Omitted and
null are equivalent and mean no description is provided.Icon[] | null
Optional set of sized icons that the client can display in a user interface.Omitted and
null are equivalent and mean no icons are provided.MediaType | null
MIME type describing the encoded media payload.Omitted and
null are equivalent and mean the MIME type is not specified.Optional size of the linked resource in bytes, if known.Omitted and
null are equivalent and mean the size is not known.- Minimum:
0
Optional display title for end-user UI.Omitted and
null are equivalent and mean no title is provided.Role
The sender or recipient of messages and data in a conversation. Type: UnionCustom or future role.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.RunningStateUpdate
Foreground work is in progress. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundWork[] | null
Work running independently of foreground work, as a complete snapshot.Optional. Omitted and
null are equivalent and mean the Agent is not reporting
background work, not that nothing is running. [] means no background work is
running. An Agent that reports background work MUST include it on every state
update for the session. A malformed list is treated as not reported.See protocol docs: Background WorkSelectedPermissionOutcome
The user selected one of the provided options. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionAdditionalDirectoriesCapabilities
Capabilities for additional session directories support. Supplying\{\} means the agent supports the additionalDirectories field on
supported session lifecycle requests. Agents may return
SessionInfo.additionalDirectories in session/list to report the
complete ordered additional-root list associated with a listed session.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionCancelCapabilities
Capability to cancel work in a subagent session without ending that session. Supplying\{\} advertises support. An omitted or null cancel does not.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionCapabilities
Session capabilities supported by the agent. Supplying\{\} means the agent supports the baseline session methods:
session/new, session/list, session/resume, session/close,
session/prompt, session/cancel, and session/update.
Agents that support sessions MAY support additional session methods,
prompt content types, and MCP transports by specifying additional
capabilities.
See protocol docs: Session Capabilities
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityWhether the agent supports
additionalDirectories on supported session lifecycle requests.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports additionalDirectories on
supported session lifecycle requests.Agents may return SessionInfo.additionalDirectories to report the
complete ordered additional-root list associated with a listed session.SessionDeleteCapabilities | null
Whether the agent supports
session/delete.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports deleting sessions from session/list.McpCapabilities | null
MCP capabilities supported by the agent for session lifecycle requests.Optional. Omitted and
null are equivalent and mean the agent does not advertise MCP
server transport support for sessions.PromptCapabilities | null
Prompt capabilities supported by the agent in
session/prompt requests.Optional. Omitted and null are equivalent and mean the agent does not advertise any
prompt extensions beyond the baseline text and resource-link content
required by session/prompt.Whether the agent supports
systemPrompt on session lifecycle requests.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports systemPrompt in append mode.SessionConfigBoolean
A boolean on/off toggle session configuration option payload. Type: Object Properties:SessionConfigGroupId
Unique identifier for a session configuration option value group. Type:string
SessionConfigId
Unique identifier for a session configuration option. Type:string
SessionConfigOption
A session configuration option selector and its current state. Type: Union Shared properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionConfigOptionCategory | null
Optional semantic category for this option (UX only).Omitted and
null are equivalent and mean no category is provided.Optional description for the Client to display to the user.Omitted and
null are equivalent and mean no description is provided.Custom or future session configuration option payload.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients that do not understand this option type should preserve the raw
payload when storing, replaying, proxying, or forwarding configuration
data, and otherwise ignore the option. The Agent keeps using its currentValue.SessionConfigOptionCategory
Semantic category for a session configuration option. This is intended to help Clients distinguish broadly common selectors (e.g. model selector vs session mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons, placement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown categories gracefully. Category names beginning with_ are free for custom use, like other ACP extension methods.
Category names that do not begin with _ are reserved for the ACP spec.
Type: Union
Custom or future category.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.SessionConfigSelect
A single-value selector (dropdown) session configuration option payload. Type: Object Properties:The set of selectable options. MUST contain at least one value, and each
value MUST be unique within the option, including across groups.SessionConfigSelectGroup
A group of possible values for a session configuration option. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionConfigSelectOption
A possible value for a session configuration option. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional description for this option value.Omitted and
null are equivalent and mean no description is provided.SessionConfigSelectOptions
Possible values for a session configuration option. Type: UnionSessionConfigValueId
Unique identifier for a session configuration option value. Type:string
SessionDeleteCapabilities
Capabilities for thesession/delete method.
Supplying \{\} means the agent supports deleting sessions from session/list.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionId
A unique identifier for a conversation session between a client and agent. Each session has its own context, conversation history, and state, so one agent can run several independent sessions. See protocol docs: Session ID Type:string
SessionInfo
Information about a session returned by session/list Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAdditional workspace roots reported for this session. Each path must be absolute.When present, this is the complete ordered additional-root list reported
by the Agent. Omitted and empty values are equivalent: the response
reports no additional roots.
Human-readable title for the sessionOmitted and
null are equivalent and mean no title is provided.RFC 3339 timestamp of last activity.Omitted and
null are equivalent and mean the last activity time is not reported.- Format:
date-time
SessionInfoUpdate
Update to session metadata. All fields are optional to support partial updates. Agents send this notification to update session information like title or custom metadata. Clients can use it to keep session titles and state current. Omitted fields leave the existing session info unchanged.null clears the
corresponding value. A concrete _meta object patches the stored metadata by
top-level key.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesSessionListCursor
An opaque cursor used to paginatesession/list results.
Type: string
SessionMessage
An upsert for an inter-session message. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesContentBlock[] | null
Omitted leaves content unchanged.
null clears it. A concrete array
replaces the whole content collection.MessageId | null
On an outgoing view, the
messageId of the same message’s incoming view in the
recipient’s transcript.Omitted leaves the stored value unchanged. null clears it. A value replaces it. It can arrive
after the message starts streaming.SessionId | null
The receiving session.Omitted leaves the stored value unchanged.
null clears it. A value replaces it.MessageId | null
On an incoming view, the
messageId of the same message’s outgoing view in the
sender’s transcript.Omitted leaves the stored value unchanged. null clears it. A value replaces it. It can arrive
after the message starts streaming.SessionId | null
The sending session.Omitted leaves the stored value unchanged.
null clears it. A value replaces it.SessionMessageChunk
A streamed content block of an inter-session message. A chunk carries only content. The message’s participants and references come fromsession_message upserts, which can arrive before, between, or after its chunks.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.
This metadata is scoped to the chunk and does not patch stored metadata.See protocol docs: ExtensibilitySessionNotFoundErrorData
Data for the-32002 (Resource not found) error when a session-scoped request names a
session that does not exist or is not active.
See protocol docs: Unknown Sessions
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionReference
A display-only reference to another session that this tool call operates on, such as a subagent it created, delegated to, or is waiting on. The referenced session must already be known to the Client through ordinary session setup or asubagent_update announcement. The reference does not
establish ownership, grant any Client-initiated controls, or report that the
referenced session received or finished any work.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionSystemPromptCapabilities
Capabilities for client-provided system prompts. Supplying\{\} means the agent supports systemPrompt on session lifecycle
requests in append mode.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDelivery modes the agent supports in addition to
append.Optional. Omitted and null are equivalent and mean the agent supports only append.SessionSystemPromptModeCapabilities
System prompt delivery modes the agent supports in addition toappend.
append has no entry because every agent advertising session.systemPrompt
supports it.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityWhether the agent supports
override mode.Optional. Omitted and null are equivalent and mean the agent does not advertise support.
Supplying \{\} means the agent supports replacing its built-in default
instructions with the client-provided system prompt.SessionSystemPromptOverrideCapabilities
Capabilities for theoverride system prompt mode.
Supplying \{\} means the agent supports replacing its built-in default
instructions with the client-provided system prompt.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionUpdate
Different types of updates that can be sent while a session exists. These updates report messages, progress, and other session activity. See protocol docs: Agent Reports Output Type: UnionA user message has been created or updated.Agents can send this when they accept or replay a user message. When a
client receives another
user_message update with the same messageId,
fields in the new update patch the previous fields for that message.An agent message has been created or updated.Agents can send this in addition to streamed chunks. When a client
receives another
agent_message update with the same messageId,
fields in the new update patch the previous fields for that message.An agent thought or reasoning message has been created or updated.Agents can send this in addition to streamed chunks. When a client
receives another
agent_thought update with the same messageId,
fields in the new update patch the previous fields for that message.A snapshot of the session’s aggregate foreground activity.Alternatives (
anyOf):No foreground work is active. Background activity may continue.Alternatives (
anyOf):The active work ended successfully.
Includes locally handled commands that required no model call.
The active work ended because the agent reached the maximum number of
model requests for the foreground work.
The user or client chose to stop the work: via
session/cancel, by
closing the session, or through an interaction the agent offers, such
as a permission option that tells the agent to stop. Work the agent
stops for its own reasons uses another reason, such as error for an
internal timeout.Agents MUST report this stop reason on an idle state_update when
cancellation ends active foreground work, even if aborting causes
exceptions. Agents MUST catch these errors and report cancelled, not
error.The active work ended because something failed.This includes pre-insertion foreground work. A prompt failure before
insertion also requires an error response to
session/prompt. After
insertion, the prompt’s response remains successful.Custom or future stop reason.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.The Agent cannot currently determine foreground activity.
This replaces previously confirmed activity without ending the work or session.
Custom or future session state.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Unless the Client advertised support for this state, Agents MUST still
report the standard states.
Clients MUST NOT treat an unrecognized state as idle or present the
previous state as confirmed, and show a generic busy state until a known
state arrives.A content update for a plan identified by ID.
See protocol docs: Agent Plan
Information for the user that is not part of session history.No Client capability is required. Clients that do not understand or
present notices may ignore them.
The history replay requested by
session/resume is complete for this session.Every update for the session between the session/resume request and
this update is replayed history. Every update after it is not.Announces a child session created and owned by this session, or updates
that ownership association’s metadata.
A message upsert observed in this session’s transcript, sent to or
received from another session.
Custom or future session update.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Receivers that do not understand this update type should preserve the
raw payload when storing, replaying, proxying, or forwarding session
history, and otherwise ignore it or display it generically.StateUpdate
A snapshot of the session’s aggregate foreground activity. Foreground work is the agent’s active response or workflow in the session, including model processing, tool execution, and waiting for user action needed to continue that work. It can start with a prompt or be agent-initiated, for example to pursue an ongoing goal or follow up on a completed background task. Either way, the agent MUST reportrunning when foreground work starts,
or requires_action if it starts blocked on user action, and idle when it
ends. The agent SHOULD include a stop reason on that idle update.
Agent-initiated work does not require a prompt request or a synthetic user
message.
running may precede user-message insertion, for example during a foreground
hook. It is not acknowledgment of insertion, and rejecting a prompt does not
itself end foreground work.
Background activity can continue and emit other session/update notifications
while idle. Those notifications, including a detached task’s progress or
completion, do not by themselves change this state. A permission request only
warrants requires_action when foreground work is blocked on user action.
The agent SHOULD report requires_action when the foreground workflow as a
whole cannot progress without user action, including permissions or elicitations.
Once reported, it MUST report running when progress resumes, or idle when
work ends without resuming.
If other foreground work can progress, the state remains running. Resolving
one of several requests does not itself change the state. Agents SHOULD ignore
responses for work that has already ended rather than use them to resume it.
A new session defaults to idle until a state update reports otherwise.
Resume MUST send a current-state snapshot after any replay and before its
response. The snapshot reports foreground state after resuming.
The response alone does not imply idle.
Repeated snapshots are idempotent, not additional work, completions, or usage.
A repeated state may carry updated information without another state transition.
The agent MUST report idle when no foreground activity remains. Completing
an individual activity while other foreground work continues does not require
an idle boundary. Local commands use the same lifecycle even without model work.
See protocol docs: Session States
Type: Union
No foreground work is active. Background activity may continue.Alternatives (
anyOf):The active work ended successfully.
Includes locally handled commands that required no model call.
The active work ended because the agent reached the maximum number of
model requests for the foreground work.
The user or client chose to stop the work: via
session/cancel, by
closing the session, or through an interaction the agent offers, such
as a permission option that tells the agent to stop. Work the agent
stops for its own reasons uses another reason, such as error for an
internal timeout.Agents MUST report this stop reason on an idle state_update when
cancellation ends active foreground work, even if aborting causes
exceptions. Agents MUST catch these errors and report cancelled, not
error.The active work ended because something failed.This includes pre-insertion foreground work. A prompt failure before
insertion also requires an error response to
session/prompt. After
insertion, the prompt’s response remains successful.Custom or future stop reason.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.The Agent cannot currently determine foreground activity.
This replaces previously confirmed activity without ending the work or session.
Custom or future session state.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Unless the Client advertised support for this state, Agents MUST still
report the standard states.
Clients MUST NOT treat an unrecognized state as idle or present the
previous state as confirmed, and show a generic busy state until a known
state arrives.StringFormat
String format types for string properties in elicitation schemas. Type: UnionCustom or future string format.Unknown formats are preserved. Implementations that do not understand a
format should treat it as an annotation rather than rejecting the schema.
StringMultiSelectItems
String item schema for multi-select enum properties. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityStringPropertySchema
Schema for string properties in an elicitation form. Whenenum or oneOf is set, this represents a single-select enum
with "type": "string".
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDefault value.Optional. Omitted and
null are equivalent and mean no default value is provided.Human-readable description.Optional. Omitted and
null are equivalent and mean no description is provided.Enum values for untitled single-select enums.
Must contain at least one value when present.
Optional. Omitted and
null are equivalent and mean no untitled single-select choices are
declared by enum.StringFormat | null
String format.Optional. Omitted and
null are equivalent and mean there is no format constraint.Maximum string length.Optional. Omitted and
null are equivalent and mean there is no maximum length constraint.- Minimum:
0
Minimum string length.Optional. Omitted and
null are equivalent and mean there is no minimum length constraint.- Minimum:
0
EnumOption[] | null
Titled enum options for titled single-select enums.
Must contain at least one option when present.
Optional. Omitted and
null are equivalent and mean no titled single-select choices are
declared by oneOf.Pattern the string must match, in ECMA-262 regular expression syntax.Optional. Omitted and
null are equivalent and mean there is no pattern constraint.- Format:
regex
Optional title for the property.Optional. Omitted and
null are equivalent and mean no title is provided.SubagentSessionCapabilities
Client-initiated session mutations permitted for a specific subagent session. A mutation requires an explicit per-child capability. Support for the method on ordinary sessions does not grant support on a child. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilitySessionCancelCapabilities | null
Permits the client to cancel this child’s current work without ending
the session. Omitted and
null are equivalent and mean unsupported. An object (including
\{\}) means supported.SubagentUpdate
Notification that the enclosing parent session created and owns a child session. Later updates modify the existing association’s metadata, not its ownership. Sent on the immediate parent session. The first update for an unknownsessionId announces the child and MUST be sent
before any live request or notification bearing the child’s session ID,
including messages naming it as sender or recipient. Child events are
delivered automatically. No separate child load, resume, or subscription is needed.
Understanding this update, registering child sessions, and applying their
operation restrictions are baseline v2 requirements. No Client capability
is required.
Only sessionId is required. Other fields have
patch semantics: omitted fields leave the stored value unchanged, null
clears or unsets the value, and concrete values replace it. A concrete
_meta object instead patches the stored metadata by top-level key. For
state, null removes the current state report and leaves activity
unconfirmed. It does not report idle or cancellation. A child whose capabilities are
unset permits no Client-initiated session mutations.
cwd and additionalDirectories report where the Agent placed the child.
While unset, each inherits the immediate parent’s effective value.
The title and description provide the parent’s display metadata for the
child. Agents SHOULD mirror known child state changes in the parent’s
state using the same StateUpdate snapshot as the
ordinary state_update notification on the child session. This reports
child state, not a separate parent-owned lifecycle. Consumers should
treat duplicate reports idempotently.
Completing or cancelling work does not end the association: the parent may
message the same child again. Individual messages and their outcomes do not
change this association.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesAbsolutePath[] | null
Additional workspace roots for the child. Each path must be absolute.Optional and nullable. Omitted means unchanged.
null clears the
reported value. While unset, the child inherits its immediate parent’s
effective additional directories, independently of cwd. A concrete
array replaces the whole list. [] reports no additional directories.SubagentSessionCapabilities | null
Client-initiated session mutations permitted for this subagent session.Read-only operations retain their normal protocol semantics and
capability requirements.
AbsolutePath | null
The child’s working directory. Must be an absolute path.Optional and nullable. Omitted means unchanged.
null clears the
reported value. While unset, the child inherits its immediate parent’s
effective working directory.The parent’s human-readable description of the child’s role or purpose.Optional and nullable. Omitted means unchanged.
null clears it. This is
current display metadata, not the history of instructions sent to the child.StateUpdate | null
The child’s current foreground state, mirrored onto its parent association.Optional and nullable. Omitted means unchanged.
null removes the
current report and leaves activity unconfirmed (not idle or cancelled).
A concrete StateUpdate replaces the entire previous snapshot.The parent’s human-readable display title for this child. It need not be unique.Optional and nullable. Omitted means unchanged.
null clears it. If no
title is set, the Client chooses a fallback presentation.SystemPrompt
Client-provided system-level instructions for a session. Clients MUST only send this when the Agent advertisessession.systemPrompt. Agents that cannot apply it, for example because of
an unadvertised mode or an unsupported content block type, MUST return an
error instead of creating or resuming the session.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityThe system prompt content.Agents advertising the capability MUST accept
text content blocks.
Clients MUST NOT send other content block types until a future
capability allows them, and Agents MUST return an error for content
blocks they do not support, including unknown types.Clients MUST NOT send an empty array. Agents MAY reject one with
-32602 without creating or resuming the session.How the Agent combines
content with its own instructions.Required. Agents MUST return an error for a mode they do not support rather than
treating it as append or override.SystemPromptMode
How the Agent combines a client-provided system prompt with its own instructions. Unknown modes are preserved so they can be stored, proxied, or forwarded. An Agent MUST return an error for a mode it does not support rather than treating it asappend or override.
Type: Union
Add the content to the Agent’s own instructions rather than replacing them.Every Agent that advertises
session.systemPrompt supports this mode.
Agents SHOULD give the content system-level precedence, for example in the
model’s system prompt or developer instructions rather than in user-turn
content. Where it is placed and how it is formatted is implementation-defined.Replace the Agent’s built-in default instructions with the content.This does not change tool availability, MCP servers, permissions, or session
configuration. Context the Agent supplies from the workspace or environment
MAY still be included. Clients that use this mode take responsibility for any
tool guidance or safety instructions the Agent’s default instructions
provided, and MUST only use it when the Agent advertises
session.systemPrompt.mode.override.Custom or future system prompt mode.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Terminal
A display-only reference to an agent-owned terminal. Terminal state and output are delivered separately throughterminal_update and terminal_output_chunk session updates.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalAuthCapabilities
Capabilities for terminal authentication methods. Supplying\{\} means the client can reproduce the configured agent
invocation in an interactive terminal and supports terminal authentication
methods.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalCancelCapabilities
Capability to cancel a terminal withterminal/cancel.
Supplying \{\} advertises support. An omitted or null cancel does not.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalCapabilities
Client-initiated controls a terminal currently supports. A malformed value falls back to no controls, so the Client never sends a request the Agent did not advertise. See protocol docs: Cancelling Terminals Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalCancelCapabilities | null
Permits the Client to cancel this terminal with
terminal/cancel.Omitted and null are equivalent and mean unsupported. An object (including \{\})
means supported. Agents SHOULD stop advertising it once the terminal reports exitStatus.TerminalExitStatus
Exit information for an agent-owned terminal. The presence of this object marks the terminal as exited, even when neither an exit code nor a signal is known. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityProcess exit code as the platform reports it, when known. Negative values are
allowed, for example signed Windows exit codes. Omitted and
null are equivalent.Signal that terminated the process, when known.Agents should use the conventional platform signal name. POSIX examples
include
SIGTERM, SIGKILL, and SIGINT. Other platforms may use a
platform-specific name. Omitted and null are equivalent.TerminalId
Unique identifier for an agent-owned terminal within a session. Type:string
TerminalOutput
An authoritative replacement snapshot of terminal output bytes. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalOutputChunk
A chunk of bytes appended to an agent-owned terminal’s output. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.
This metadata is scoped to the chunk and does not patch stored metadata.See protocol docs: ExtensibilityTerminalSize
The size of an agent-owned terminal in character cells. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTerminalUpdate
An upsert for the stored state of an agent-owned terminal. OnlyterminalId is required. Other fields have patch
semantics: omitted fields leave the stored value unchanged, null clears
it, and concrete values replace it. A concrete _meta object instead
patches the stored metadata by top-level key. When the terminal ID is new,
omitted fields start unknown.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesTerminalCapabilities | null
Client-initiated controls this terminal currently supports, such as cancellation.Omission leaves the capabilities unchanged,
null clears them, and an object replaces
the whole previous value. A new terminal starts with none.AbsolutePath | null
The absolute working directory of the command.
TerminalExitStatus | null
Exit information. A concrete object marks the terminal as exited.
TerminalOutput | null
An authoritative replacement snapshot of terminal output bytes.
TerminalSize | null
The terminal size the command runs with, when known.Clients can render output at this size so that column layouts, progress bars,
and cursor-positioned output display as the program wrote them.
TextCommandInput
All text that was typed after the command name is provided as input. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityTextContent
Text provided to or from an LLM. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityAnnotations | null
Optional annotations that help clients decide how to display or route this content.Omitted and
null are equivalent and mean no annotations are provided.TextResourceContents
Text-based resource contents. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityMediaType | null
MIME type describing the encoded media payload.Omitted and
null are equivalent and mean the MIME type is not specified.TitledMultiSelectItems
Items definition for titled multi-select enum properties. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityToolCallCancelCapabilities
Capability to cancel a tool call withtool_call/cancel.
Supplying \{\} advertises support. An omitted or null cancel does not.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityToolCallCapabilities
Client-initiated controls a tool call currently supports. A malformed value falls back to no controls, so the Client never sends a request the Agent did not advertise. See protocol docs: Cancelling Tool Calls Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityToolCallCancelCapabilities | null
Permits the Client to cancel this tool call with
tool_call/cancel.Omitted and null are equivalent and mean unsupported. An object (including \{\})
means supported. Agents SHOULD stop advertising it once the tool call reaches a final status.ToolCallContent
Content produced by a tool call. Tool calls can produce different types of content including standard content blocks (text, images), file diffs, or display-only terminals. See protocol docs: Content Type: UnionCustom or future tool call content.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Receivers that do not understand this content type should preserve the
raw payload when storing, replaying, proxying, or forwarding tool call
output, and otherwise ignore it or display it generically.ToolCallContentChunk
A streamed item of tool-call content. Tool-call content chunks append oneToolCallContent item to the current
content for the matching toolCallId. Agents can send a tool_call_update
with content when they need to replace the whole content collection
instead.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.
This metadata is scoped to the chunk and does not patch stored metadata.See protocol docs: ExtensibilityToolCallId
Unique identifier for a tool call within a session. Type:string
ToolCallLocation
A file location being accessed or modified by a tool. Enables clients to implement “follow-along” features that track which files the agent is working with in real-time. See protocol docs: Following the Agent Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityOptional 1-based line number within the file. Omitted and
null are equivalent and
mean no specific line. 0 is invalid.- Minimum:
1
ToolCallPermissionSubject
Permission request details for a tool call. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityDetails about the tool call requiring permission.Clients apply this to their stored tool call exactly like a
tool_call_update
notification, in the order it was received, before showing the prompt. A first-seen
toolCallId creates the tool call.ToolCallStatus
Execution status of a tool call. Tool calls progress through different statuses during their lifecycle. See protocol docs: Status Type: UnionThe tool call hasn’t started running yet, for example because its input is
streaming, it is awaiting approval, or it is scheduled to run later.
The tool call has started, is not running now, and will not continue until
something resumes it. It may return to
in_progress any number of times.Custom or future tool call status.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants.Clients treat a tool call with an unrecognized status as still in progress.ToolCallUpdate
Represents an upsert for a tool call that the language model has requested. Tool calls are actions that the agent executes on behalf of the language model, such as reading files, executing code, or fetching data from external sources. OnlytoolCallId is required. Other fields have patch semantics:
omitted fields leave the existing tool call value unchanged, null clears or
unsets the value, and concrete values replace the previous value. For
collection fields, concrete arrays replace the previous collection, and both
null and [] clear the collection. A concrete _meta object instead
patches the stored metadata by top-level key. When a client receives a tool
call ID it has not seen before, omitted fields start at their protocol defaults.
See protocol docs: Tool Calls
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesToolCallCapabilities | null
Client-initiated controls this tool call currently supports, such as cancellation.Omission leaves the capabilities unchanged,
null clears them, and an object replaces
the whole previous value. A new tool call starts with none.ToolCallContent[] | null
Content produced by the tool call.
ToolKind | null
The category of tool being invoked.
Helps clients choose appropriate icons and UI treatment.Omission leaves the kind unchanged,
null resets it to other, and a value replaces it.
A new tool call starts as other.ToolCallLocation[] | null
File locations affected by this tool call.
Enables “follow-along” features in clients.
Programmatic name of the tool being invoked.This field is optional and has patch semantics. Omission means no
change,
null clears the name, and a string replaces it. For a tool
call ID the client has not seen before, omission or null means that no
tool name is available.ToolCallStatus | null
Current execution status of the tool call.Omission leaves the status unchanged,
null resets it to pending, and a value
replaces it. A new tool call starts as pending.Human-readable title describing what the tool is doing.Omission leaves the title unchanged,
null unsets it, and a string replaces it.
A new tool call starts without a title.ToolKind
Categories of tools that can be invoked. Tool kinds help clients choose appropriate icons and optimize how they display tool execution progress. See protocol docs: Reporting Type: UnionChanging the session’s mode, a config
option
with the
mode category.Custom or future tool kind.Values beginning with
_ are reserved for implementation-specific
extensions. Unknown values that do not begin with _ are reserved for
future ACP variants. Clients display an unrecognized kind as other.UnknownStateUpdate
The Agent cannot currently determine foreground activity. Report this when activity becomes unobservable, not merely because the session has been quiet. The Client MUST stop presenting the previous state as confirmed current activity, but may retain it as last known. A later state replaces this snapshot normally. This is not a task outcome or session closure. It does not cancel work, resolve pending requests, or revoke capabilities. If a control is no longer available, the Agent updates the capabilities explicitly. Unfinished tool calls and terminals stay as last reported. The Agent does not invent a final status for them, and Clients do not present them as confirmed live activity. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityBackgroundWork[] | null
Work running independently of foreground work, as a complete snapshot.Optional. Omitted and
null are equivalent and mean the Agent is not reporting
background work, not that nothing is running. [] means no background work is
running. An Agent that reports background work MUST include it on every state
update for the session. A malformed list is treated as not reported.See protocol docs: Background WorkUnsupportedProtocolVersionErrorData
Data for the-32022 (Unsupported protocol version) error.
See protocol docs: Version Negotiation
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityUsageUpdate
Context window and cost update for a session. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted and
null are equivalent and mean no metadata.
Implementations MUST NOT assign meaning to keys they do not recognize.See protocol docs: ExtensibilityCost | null
Cumulative session cost.Omitted leaves the last reported cost unchanged.
null clears it. A value replaces it.UserMessage
A user message upsert. OnlymessageId is required. content has patch semantics:
an omitted field leaves existing message content unchanged, null clears the
value, and a concrete array replaces the previous value. For a new
messageId, omitted content starts empty. content is replaced as a
whole array. Send [] or null to clear it.
Message updates and chunks are applied in the order they are received. When
a user_message update includes content, that array replaces any content
previously accumulated for the message, including content from earlier
chunks. Later chunks with the same messageId append to the current
content.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Omitted leaves the stored metadata unchanged.
null
clears it. An object patches the stored metadata by top-level key: keys it omits are
unchanged, a key set to null is removed, and any other value replaces that key’s
stored value without merging nested objects. Beyond this patch rule, implementations
MUST NOT assign meaning to keys they do not recognize.See protocol docs: Metadata PatchesContentBlock[] | null
Complete replacement content for this message.