The Agent Client Protocol Overview
February 1, 20262 minute read
With the explosion of AI coding agents—Claude Code, Gemini CLI, OpenCode, Goose, Codex CLI, we've entered an era where every major AI lab ships their own terminal-based coding assistant. But there is one problem. Each agent has its own events or outputs.
The Agent Client Protocol (ACP) is an an open standard abstracts the events and outputs of AI agents and provides a common interface for editors to interact with them. Similar to MCP but for agent to client (UI) communication.
ACP is a JSON-RPC 2.0 protocol with a simple premise:
- Clients (editors like Zed, JetBrains or Obsidian) manage the user environment
- Agents (Claude Code, Gemini CLI, OpenClaw (prev. Clawdbot)) Thinking and tool execution
- They communicate over stdio (agent runs as subprocess) or HTTP (remote agents)

Protocol Events
| Method | Direction | Purpose |
|---|---|---|
initialize | Client → Agent | Negotiate protocol version & capabilities |
session/new | Client → Agent | Create new conversation session |
session/load | Client → Agent | Resume existing session |
session/prompt | Client → Agent | Send user message |
session/set_mode | Client → Agent | Switch agent operating mode |
fs/read_text_file | Agent → Client | Read file (includes unsaved edits) |
fs/write_text_file | Agent → Client | Write/create file |
terminal/create | Agent → Client | Start shell command |
terminal/output | Agent → Client | Get command output |
terminal/wait_for_exit | Agent → Client | Wait for command completion |
terminal/kill | Agent → Client | Terminate running command |
terminal/release | Agent → Client | Clean up terminal |
session/request_permission | Agent → Client | Request user approval for action |
Notifications (One-Way)
| Notification | Direction | Purpose |
|---|---|---|
session/update | Agent → Client | Stream progress, messages, tool calls |
session/cancel | Client → Agent | Abort current operation |
Session Update Types
| Update Type | Description | Content |
|---|---|---|
plan | Agent's execution plan | List of steps with status |
agent_message_chunk | Streamed text response | Text content block |
user_message_chunk | Echo of user input | Text content block |
thought_message_chunk | Agent's reasoning | Text content block |
tool_call | New tool invocation | ID, title, kind, status |
tool_call_update | Tool progress/result | Status change, content |
available_commands | Slash commands | List of available commands |
mode_change | Mode switch | New mode info |
Tool Call Status Flow

Protocol Flow
Complete Lifecycle

Terminal Execution Flow

Permission Request Flow
