{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/philschmid-de/2026-02-01-the-agent-client-protocol-overview/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "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.\n\nThe [Agent Client Protocol (ACP)](https://agentclientprotocol.com/get-started/introduction) 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.\n\nACP is a JSON-RPC 2.0 protocol with a simple premise:\n\n1. **Clients** (editors like Zed, JetBrains or Obsidian) manage the user environment\n2. **Agents** (Claude Code, Gemini CLI, OpenClaw (prev. Clawdbot)) Thinking and tool execution\n3. They communicate over **stdio** (agent runs as subprocess) or **HTTP** (remote agents)\n\n![acp](https://www.philschmid.de/static/blog/acp-overview/acp.png)\n\n## Protocol Events\n\n| Method                       | Direction      | Purpose                                   |\n| ---------------------------- | -------------- | ----------------------------------------- |\n| `initialize`                 | Client → Agent | Negotiate protocol version & capabilities |\n| `session/new`                | Client → Agent | Create new conversation session           |\n| `session/load`               | Client → Agent | Resume existing session                   |\n| `session/prompt`             | Client → Agent | Send user message                         |\n| `session/set_mode`           | Client → Agent | Switch agent operating mode               |\n| `fs/read_text_file`          | Agent → Client | Read file (includes unsaved edits)        |\n| `fs/write_text_file`         | Agent → Client | Write/create file                         |\n| `terminal/create`            | Agent → Client | Start shell command                       |\n| `terminal/output`            | Agent → Client | Get command output                        |\n| `terminal/wait_for_exit`     | Agent → Client | Wait for command completion               |\n| `terminal/kill`              | Agent → Client | Terminate running command                 |\n| `terminal/release`           | Agent → Client | Clean up terminal                         |\n| `session/request_permission` | Agent → Client | Request user approval for action          |\n\n### Notifications (One-Way)\n\n| Notification     | Direction      | Purpose                               |\n| ---------------- | -------------- | ------------------------------------- |\n| `session/update` | Agent → Client | Stream progress, messages, tool calls |\n| `session/cancel` | Client → Agent | Abort current operation               |\n\n### Session Update Types\n\n| Update Type             | Description            | Content                    |\n| ----------------------- | ---------------------- | -------------------------- |\n| `plan`                  | Agent's execution plan | List of steps with status  |\n| `agent_message_chunk`   | Streamed text response | Text content block         |\n| `user_message_chunk`    | Echo of user input     | Text content block         |\n| `thought_message_chunk` | Agent's reasoning      | Text content block         |\n| `tool_call`             | New tool invocation    | ID, title, kind, status    |\n| `tool_call_update`      | Tool progress/result   | Status change, content     |\n| `available_commands`    | Slash commands         | List of available commands |\n| `mode_change`           | Mode switch            | New mode info              |\n\n### Tool Call Status Flow\n\n![tool](https://www.philschmid.de/static/blog/acp-overview/tool.png)\n\n## Protocol Flow\n\n### Complete Lifecycle\n\n![protocol](https://www.philschmid.de/static/blog/acp-overview/full.png)\n\n### Terminal Execution Flow\n\n![terminal](https://www.philschmid.de/static/blog/acp-overview/terminal.png)\n\n### Permission Request Flow\n\n![permission](https://www.philschmid.de/static/blog/acp-overview/permission.png)\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<p>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.</p>\n<p>The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://agentclientprotocol.com/get-started/introduction\">Agent Client Protocol (ACP)</a> 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.</p>\n<p>ACP is a JSON-RPC 2.0 protocol with a simple premise:</p>\n<ol>\n<li><strong>Clients</strong> (editors like Zed, JetBrains or Obsidian) manage the user environment</li>\n<li><strong>Agents</strong> (Claude Code, Gemini CLI, OpenClaw (prev. Clawdbot)) Thinking and tool execution</li>\n<li>They communicate over <strong>stdio</strong> (agent runs as subprocess) or <strong>HTTP</strong> (remote agents)</li>\n</ol>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/acp-overview/acp.png\" alt=\"acp\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Protocol Events</h2>\n<table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Direction</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>initialize</code></td>\n<td>Client → Agent</td>\n<td>Negotiate protocol version &amp; capabilities</td>\n</tr>\n<tr>\n<td><code>session/new</code></td>\n<td>Client → Agent</td>\n<td>Create new conversation session</td>\n</tr>\n<tr>\n<td><code>session/load</code></td>\n<td>Client → Agent</td>\n<td>Resume existing session</td>\n</tr>\n<tr>\n<td><code>session/prompt</code></td>\n<td>Client → Agent</td>\n<td>Send user message</td>\n</tr>\n<tr>\n<td><code>session/set_mode</code></td>\n<td>Client → Agent</td>\n<td>Switch agent operating mode</td>\n</tr>\n<tr>\n<td><code>fs/read_text_file</code></td>\n<td>Agent → Client</td>\n<td>Read file (includes unsaved edits)</td>\n</tr>\n<tr>\n<td><code>fs/write_text_file</code></td>\n<td>Agent → Client</td>\n<td>Write/create file</td>\n</tr>\n<tr>\n<td><code>terminal/create</code></td>\n<td>Agent → Client</td>\n<td>Start shell command</td>\n</tr>\n<tr>\n<td><code>terminal/output</code></td>\n<td>Agent → Client</td>\n<td>Get command output</td>\n</tr>\n<tr>\n<td><code>terminal/wait_for_exit</code></td>\n<td>Agent → Client</td>\n<td>Wait for command completion</td>\n</tr>\n<tr>\n<td><code>terminal/kill</code></td>\n<td>Agent → Client</td>\n<td>Terminate running command</td>\n</tr>\n<tr>\n<td><code>terminal/release</code></td>\n<td>Agent → Client</td>\n<td>Clean up terminal</td>\n</tr>\n<tr>\n<td><code>session/request_permission</code></td>\n<td>Agent → Client</td>\n<td>Request user approval for action</td>\n</tr>\n</tbody>\n</table>\n<h3>Notifications (One-Way)</h3>\n<table>\n<thead>\n<tr>\n<th>Notification</th>\n<th>Direction</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>session/update</code></td>\n<td>Agent → Client</td>\n<td>Stream progress, messages, tool calls</td>\n</tr>\n<tr>\n<td><code>session/cancel</code></td>\n<td>Client → Agent</td>\n<td>Abort current operation</td>\n</tr>\n</tbody>\n</table>\n<h3>Session Update Types</h3>\n<table>\n<thead>\n<tr>\n<th>Update Type</th>\n<th>Description</th>\n<th>Content</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>plan</code></td>\n<td>Agent's execution plan</td>\n<td>List of steps with status</td>\n</tr>\n<tr>\n<td><code>agent_message_chunk</code></td>\n<td>Streamed text response</td>\n<td>Text content block</td>\n</tr>\n<tr>\n<td><code>user_message_chunk</code></td>\n<td>Echo of user input</td>\n<td>Text content block</td>\n</tr>\n<tr>\n<td><code>thought_message_chunk</code></td>\n<td>Agent's reasoning</td>\n<td>Text content block</td>\n</tr>\n<tr>\n<td><code>tool_call</code></td>\n<td>New tool invocation</td>\n<td>ID, title, kind, status</td>\n</tr>\n<tr>\n<td><code>tool_call_update</code></td>\n<td>Tool progress/result</td>\n<td>Status change, content</td>\n</tr>\n<tr>\n<td><code>available_commands</code></td>\n<td>Slash commands</td>\n<td>List of available commands</td>\n</tr>\n<tr>\n<td><code>mode_change</code></td>\n<td>Mode switch</td>\n<td>New mode info</td>\n</tr>\n</tbody>\n</table>\n<h3>Tool Call Status Flow</h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/acp-overview/tool.png\" alt=\"tool\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Protocol Flow</h2>\n<h3>Complete Lifecycle</h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/acp-overview/full.png\" alt=\"protocol\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Terminal Execution Flow</h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/acp-overview/terminal.png\" alt=\"terminal\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Permission Request Flow</h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/acp-overview/permission.png\" alt=\"permission\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n",
  "content_markdown": "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.\n\nThe [Agent Client Protocol (ACP)](https://agentclientprotocol.com/get-started/introduction) 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.\n\nACP is a JSON-RPC 2.0 protocol with a simple premise:\n\n1. **Clients** (editors like Zed, JetBrains or Obsidian) manage the user environment\n2. **Agents** (Claude Code, Gemini CLI, OpenClaw (prev. Clawdbot)) Thinking and tool execution\n3. They communicate over **stdio** (agent runs as subprocess) or **HTTP** (remote agents)\n\n![acp](https://www.philschmid.de/static/blog/acp-overview/acp.png)\n\n## Protocol Events\n\n| Method                       | Direction      | Purpose                                   |\n| ---------------------------- | -------------- | ----------------------------------------- |\n| `initialize`                 | Client → Agent | Negotiate protocol version & capabilities |\n| `session/new`                | Client → Agent | Create new conversation session           |\n| `session/load`               | Client → Agent | Resume existing session                   |\n| `session/prompt`             | Client → Agent | Send user message                         |\n| `session/set_mode`           | Client → Agent | Switch agent operating mode               |\n| `fs/read_text_file`          | Agent → Client | Read file (includes unsaved edits)        |\n| `fs/write_text_file`         | Agent → Client | Write/create file                         |\n| `terminal/create`            | Agent → Client | Start shell command                       |\n| `terminal/output`            | Agent → Client | Get command output                        |\n| `terminal/wait_for_exit`     | Agent → Client | Wait for command completion               |\n| `terminal/kill`              | Agent → Client | Terminate running command                 |\n| `terminal/release`           | Agent → Client | Clean up terminal                         |\n| `session/request_permission` | Agent → Client | Request user approval for action          |\n\n### Notifications (One-Way)\n\n| Notification     | Direction      | Purpose                               |\n| ---------------- | -------------- | ------------------------------------- |\n| `session/update` | Agent → Client | Stream progress, messages, tool calls |\n| `session/cancel` | Client → Agent | Abort current operation               |\n\n### Session Update Types\n\n| Update Type             | Description            | Content                    |\n| ----------------------- | ---------------------- | -------------------------- |\n| `plan`                  | Agent's execution plan | List of steps with status  |\n| `agent_message_chunk`   | Streamed text response | Text content block         |\n| `user_message_chunk`    | Echo of user input     | Text content block         |\n| `thought_message_chunk` | Agent's reasoning      | Text content block         |\n| `tool_call`             | New tool invocation    | ID, title, kind, status    |\n| `tool_call_update`      | Tool progress/result   | Status change, content     |\n| `available_commands`    | Slash commands         | List of available commands |\n| `mode_change`           | Mode switch            | New mode info              |\n\n### Tool Call Status Flow\n\n![tool](https://www.philschmid.de/static/blog/acp-overview/tool.png)\n\n## Protocol Flow\n\n### Complete Lifecycle\n\n![protocol](https://www.philschmid.de/static/blog/acp-overview/full.png)\n\n### Terminal Execution Flow\n\n![terminal](https://www.philschmid.de/static/blog/acp-overview/terminal.png)\n\n### Permission Request Flow\n\n![permission](https://www.philschmid.de/static/blog/acp-overview/permission.png)\n",
  "dateCreated": "2026-09-27T19:29:15.293681927+00:00",
  "date_created": "2026-02-01T00:00:00+00:00",
  "date_modified": "2026-02-01T00:00:00+00:00",
  "date_published": "2026-02-01T00:00:00+00:00",
  "description": "The Agent Client Protocol (ACP) is 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.",
  "external_url": "https://www.philschmid.de/acp-overview",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/philschmid-de/2026/02/2026-02-01-the-agent-client-protocol-overview.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/philschmid-de/2026/02/2026-02-01-the-agent-client-protocol-overview.md"
  },
  "id": "urn:aggr:item:03ad04a9e577a614afe758b81c5044e8f5726aab",
  "isBasedOn": {
    "@id": "https://www.philschmid.de/acp-overview"
  },
  "mainEntity": {
    "@id": "https://www.philschmid.de/acp-overview",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/philschmid-de/2026-02-01-the-agent-client-protocol-overview/#webpage"
    },
    "dateModified": "2026-02-01T00:00:00+00:00",
    "datePublished": "2026-02-01T00:00:00+00:00",
    "headline": "The Agent Client Protocol Overview",
    "timeRequired": "PT2M",
    "url": "https://www.philschmid.de/acp-overview",
    "wordCount": 333
  },
  "name": "Archived snapshot: The Agent Client Protocol Overview",
  "preview": null,
  "reading_minutes": 2,
  "replicated_at": null,
  "source": "philschmid-de",
  "source_name": "philschmid.de - RSS feed",
  "summary": "The Agent Client Protocol (ACP) is 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.",
  "tags": [],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "The Agent Client Protocol Overview",
  "url": "https://aggr.aymericbeaumet.com/items/philschmid-de/2026-02-01-the-agent-client-protocol-overview/",
  "word_count": 333
}