Skip to content

kimi acp Subcommand

kimi acp switches Kimi Code CLI to ACP (Agent Client Protocol) mode: it communicates with an ACP client (such as Zed, JetBrains AI Chat, etc.) via JSON-RPC over stdin/stdout, letting the IDE directly drive kimi's sessions, prompts, and tool calls.

sh
kimi acp

Once started, the command prints no banner and immediately waits for the ACP client to send an initialize request on stdin. Logs are written to stderr (as well as the diagnostic log under ~/.kimi-code/logs/), so the ACP channel itself stays clean.

Who calls this?

You typically do not need to run kimi acp manually — this command is the subprocess entry point for IDEs. For IDE-side configuration, see Using in IDEs.

Capability Matrix

The table below lists the capabilities declared by the current ACP adapter layer. The agentCapabilities field is returned in full in the initialize response, so the IDE can adjust its UI accordingly.

CapabilityValueDescription
promptCapabilities.imagetrueSupports ACP image content blocks (base64 + mimeType)
promptCapabilities.audiofalseAudio prompts not yet supported
promptCapabilities.embeddedContextfalseEmbedded resource prompts not yet supported (resource/resource_link go through the text channel)
mcpCapabilities.httptrueForwards HTTP MCP services configured by the IDE
mcpCapabilities.ssefalseSSE MCP services not supported; matching entries are discarded and a warn is logged
loadSessiontrueSupports session/load to resume an existing session, replaying history on load
sessionCapabilities.list{}Supports session/list to enumerate the current user's sessions

ACP Method Coverage

The spec divides methods into a stable surface and an evolving unstable surface (handlers mounted with the unstable_* prefix in @agentclientprotocol/sdk@0.23.0). The two have entirely different stability guarantees — the stable surface covers methods every production ACP client uses, while the unstable surface covers experimental extensions (inline-edit prediction, document buffer sync, provider management, elicitation, etc.) — so they are tracked separately.

Summary: stable agent-side 10/12 (83%) + client reverse-RPC 4/9 (44%); unstable surface has only session/set_model (1/19). All methods needed for a normal agent flow (initialize → auth → new/load/resume → prompt → cancel + file I/O + tool approval) are implemented.

Stable agent-side — IDE → agent (10 / 12)

MethodImplementedDescription
initializeYesVersion negotiation; returns agentInfo: { name: 'Kimi Code CLI', version }, capability matrix, and authMethods
authenticateYesValidates method_id='login'; returns authRequired (-32000) if token is missing, invalidParams (-32602) for unknown ID
session/newYesAccepts cwd / mcpServers; returns configOptions[]
session/loadYesRestores a session from disk and replays history via session/update
session/resumeYesLightweight sibling of session/load; skips history replay
session/promptYesAccepts text / image / resource / resource_link content blocks; streams agent_message_chunk
session/cancelYesInterrupts the current turn
session/listYesEnumerates sessions on disk (advertised via sessionCapabilities.list = {})
session/set_modeYesCompatibility path; dispatches to the same handler as set_config_option({configId:'mode'})
session/set_config_optionYesUnified model / thinking / mode picker dispatcher
session/closeNo
logoutNo

Stable client-side reverse-RPC — agent → IDE (4 / 9)

MethodImplementedDescription
session/updateYesStreams agent_message_chunk / tool_call* / plan / config_option_update / available_commands_update
session/request_permissionYesShared channel for tool approval and question elicitation
fs/read_text_fileYesFile reads at the kaos layer are routed to the client (advertised via fsCapabilities)
fs/write_text_fileYesFile writes at the kaos layer are routed to the client
terminal/create · output · release · kill · wait_for_exitNoTerminal reverse-RPC not connected; shell commands use local execution

Unstable surface (1 / 19)

MethodImplementedDescription
session/set_modelYesCompatibility path; equivalent to set_config_option({configId:'model'})
Remaining 18 methodsNoIncludes session lifecycle extensions, buffer sync, inline-edit prediction, provider management, etc.

All methods not listed above return methodNotFound.

MCP Forwarding

When an ACP client provides mcpServers in session/new or session/load, the adapter layer performs the following conversions:

  • http → kimi's transport: 'http' configuration
  • stdio → kimi's transport: 'stdio' configuration
  • sse / acp → discarded with a warn log entry

Next steps