Skip to main content

Agent Client Protocol (ACP)

Kiro CLI implements the Agent Client Protocol (ACP), an open standard that enables AI agents to work with any compatible editor. This means you can use Kiro's agentic capabilities in JetBrains IDEs, Zed, and other ACP-compatible editors.

What is ACP?

ACP (Agent Client Protocol) standardizes how editors connect to AI agents, the same way the Language Server Protocol (LSP) standardized language server integration. Kiro CLI implements ACP so you can use it in a compatible editor without a custom integration for each agent. See Agent Client Protocol for the client and harness architecture.

Quick start

Run Kiro as an ACP agent:

bash
kiro-cli acp

To use a specific agent configuration:

bash
kiro-cli acp --agent my-agent

The agent communicates over stdin/stdout using JSON-RPC 2.0. Configure your editor to spawn this command, and you're ready to go.

Choose the agent harness

Which harness kiro-cli acp starts when nothing names one, and the flags that keep a client on V2, are covered under ACP clients. In Kiro CLI 2.36 or later, set the harness once with the acp.agentEngine setting, or pass --agent-engine in your editor's command arguments; the flag overrides the setting. Valid values are v1, v2, and v3. The chat.agentEngine setting applies to kiro-cli chat and does not change kiro-cli acp.

bash
kiro-cli settings acp.agentEngine v3 kiro-cli acp --agent-engine=v2

To confirm the saved value, run kiro-cli settings acp.agentEngine. In Kiro CLI 3.2.0 or later, kiro-cli acp ignores a saved value that is not v1, v2, or v3 and, when the value came from your own settings, prints a warning on stderr that names the setting but not the value. For every kiro-cli acp flag, see CLI commands. For what changes when a client moves to the V3 harness, see Migrate an ACP client to CLI V3.

Sign in from an ACP client

kiro-cli acp needs a signed-in Kiro account. In Kiro CLI 2.37 or later, if it starts while you are signed out, it answers the client's initialize request with one authentication method and returns an authentication-required error for every other request until you sign in.

  • A client that declares terminal authentication in initialize is offered a terminal method named Log in to Kiro. Choosing it runs the Kiro sign-in in a terminal the client opens. Kiro accepts any of the three declaration forms: clientCapabilities.auth.terminal: true, the pre-standard clientCapabilities._meta["terminal-auth"]: true, or an ACP v2 capabilities.auth.terminal object.
  • A client that declares none of these is offered a method that asks you to run kiro-cli login yourself.

After the sign-in finishes, reconnect from the client. The new kiro-cli acp process finds your credentials and starts the agent. To confirm, create a session: session/new succeeds instead of returning the authentication-required error.

Editor setup

Kiro CLI can be used as an ACP agent in any editor that supports the protocol.

JetBrains IDEs

JetBrains IDEs (IntelliJ IDEA, WebStorm, PyCharm, etc.) support ACP through AI Assistant. See the JetBrains ACP documentation for full details.

To add Kiro as a custom agent:

  1. Open the AI Chat tool window
  2. Click the settings button and select Add Custom Agent
  3. Add the following to ~/.jetbrains/acp.json:
json
{ "agent_servers": { "Kiro Agent": { "command": "/full/path/to/kiro-cli", "args": ["acp"] } } }

The agent will appear in the AI Chat mode selector.

Zed

Zed supports ACP agents natively. See the Zed external agents documentation for full details. Add the following to your Zed settings (~/.config/zed/settings.json):

json
{ "agent_servers": { "Kiro Agent": { "type": "custom", "command": "~/.local/bin/kiro-cli", "args": ["acp"], "env": {} } } }

Select "Kiro Agent" from the agent picker in Zed's AI panel.

Other editors

Any editor supporting ACP can integrate Kiro by spawning kiro-cli acp and communicating via JSON-RPC over stdio. See the ACP specification for protocol details.

Supported ACP methods

Kiro CLI implements the following ACP methods, giving you access to session management, model selection, and streaming responses when using Kiro through any ACP-compatible editor.

Core protocol

MethodDescription
initializeInitialize the connection and exchange capabilities
session/newCreate a new chat session
session/loadLoad an existing session by ID
session/promptSend a prompt to the agent
session/cancelCancel the current operation
session/set_modeSwitch agent mode (e.g., different agent configs)
session/set_modelChange the model for the session (CLI v2 only — CLI V3 uses session/set_config_option)

Agent capabilities

The Kiro ACP agent advertises these capabilities during initialization:

  • loadSession: true - Supports loading existing sessions
  • promptCapabilities.image: true - Supports image content in prompts

Session updates

The agent sends these session update types via session/notification:

Update TypeDescription
AgentMessageChunkStreaming text/content from the agent
ToolCallTool invocation with name, parameters, status
ToolCallUpdateProgress updates for running tools
TurnEndSignals the agent turn has completed (CLI v2 only — CLI V3 settles turns from the session/prompt response)

For CLI v2, a content-filtered final response ends with stopReason: refusal rather than end_turn. ACP clients can present it as a refusal instead of normal completion, without exposing internal details.

Kiro extensions

Kiro extends the CLI v2 ACP server with custom methods (prefixed with _kiro.dev/ per the ACP spec) to expose Kiro-specific features like slash commands, MCP servers, and context compaction. Clients that don't support these extensions can safely ignore them — they're optional enhancements on the v2 server.

Slash commands

MethodTypeDescription
_kiro.dev/commands/executeRequestExecute a slash command (e.g., /agent swap, /context add)
_kiro.dev/commands/optionsRequestGet autocomplete suggestions for a partial command
_kiro.dev/commands/availableNotificationSent after session creation with the list of available commands

MCP server events

MethodTypeDescription
_kiro.dev/mcp/oauth_requestNotificationProvides OAuth URL when an MCP server requires authentication
_kiro.dev/mcp/server_initializedNotificationIndicates an MCP server has finished initializing and its tools are available

Session management

MethodTypeDescription
_kiro.dev/compaction/statusNotificationReports progress when compacting conversation context
_kiro.dev/clear/statusNotificationReports status when clearing session history
_session/terminateNotificationTerminates a subagent session

Example: Initialize connection

Here's how an ACP client initializes a connection with Kiro:

json
// Client sends initialize request { "jsonrpc": "2.0", "id": 0, "method": "initialize", "params": { "protocolVersion": 1, "clientCapabilities": { "fs": { "readTextFile": true, "writeTextFile": true }, "terminal": true }, "clientInfo": { "name": "my-editor", "version": "1.0.0" } } } // Kiro responds with capabilities { "jsonrpc": "2.0", "id": 0, "result": { "protocolVersion": 1, "agentCapabilities": { "loadSession": true, "promptCapabilities": { "image": true } }, "agentInfo": { "name": "kiro-cli", "version": "1.5.0" } } }

After initialization, create a session and start prompting:

json
// Create a new session { "jsonrpc": "2.0", "id": 1, "method": "session/new", "params": { "cwd": "/home/user/my-project", "mcpServers": [] } } // Send a prompt { "jsonrpc": "2.0", "id": 2, "method": "session/prompt", "params": { "sessionId": "sess_abc123", "content": [ { "type": "text", "text": "Explain this codebase" } ] } }

Logging

ACP agent logs are written to the standard Kiro log location:

PlatformLocation
macOS$TMPDIR/kiro-log/kiro-chat.log
Linux$XDG_RUNTIME_DIR/kiro-log/kiro-chat.log

Control log verbosity with environment variables:

bash
KIRO_LOG_LEVEL=debug kiro-cli acp KIRO_CHAT_LOG_FILE=/path/to/custom.log kiro-cli acp
Page updated: November 11, 2026