<rss version="2.0">
  <channel>
    <title>Acp on LLBBL Blog</title>
    <link>https://llbbl.blog/categories/acp/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Sat, 18 Jul 2026 10:00:00 -0500</lastBuildDate>
    
    <item>
      <title>Your Coding Agent Should Not Own Your Editor</title>
      <link>https://llbbl.blog/2026/07/18/your-coding-agent-should-not.html</link>
      <pubDate>Sat, 18 Jul 2026 10:00:00 -0500</pubDate>
      
      <guid>http://llbbl.micro.blog/2026/07/18/your-coding-agent-should-not.html</guid>
      <description>&lt;p&gt;Every coding agent wants to become the place where you work. It starts life as a command-line tool. Then it grows a chat interface, a diff viewer, a permission system, a terminal, a model picker, and eventually an editor integration. Meanwhile, every editor has to build a separate adapter for every agent its users might want. Ten editors, ten agents, and suddenly you&amp;rsquo;re staring at a hundred bespoke pairings nobody wants to maintain.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve seen before, it&amp;rsquo;s called a shared boundary.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s what the &lt;strong&gt;Agent Client Protocol&lt;/strong&gt; (ACP) is. An agent implements ACP once. An editor implements ACP once. Now you can run the agent inside the editor without either product having to swallow the other whole. It sounds like plumbing because it is plumbing. Plumbing is also the thing that makes ecosystems possible.&lt;/p&gt;
&lt;h2 id=&#34;acp-in-one-sentence&#34;&gt;ACP in One Sentence&lt;/h2&gt;
&lt;p&gt;ACP is an open protocol for communication between an AI coding agent and the application presenting that agent to you.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s be specific:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;client&lt;/strong&gt; is usually the editor or IDE. It owns the interface, your local environment, and the interaction with you.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;agent&lt;/strong&gt; is the coding-agent process. It owns the model loop, the conversation state, and the tool-use logic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That word &lt;strong&gt;agent&lt;/strong&gt; carries a lot of baggage, so it&amp;rsquo;s worth nailing down. In everyday AI talk it can mean the raw model, a &lt;a href=&#34;https://llbbl.blog/2026/07/01/a-field-glossary-for-agentic.html&#34;&gt;harness&lt;/a&gt; like Claude Code or Opencode that wraps a model, or a &lt;em&gt;subagent&lt;/em&gt; that a larger agent spawns to handle a subtask. ACP means the narrow one: the coding-agent process, the harness itself. You&amp;rsquo;re almost never talking to the model directly in this picture. You talk to the harness, and it drives the model on the other side. An ACP agent also isn&amp;rsquo;t a subagent. Subagents are an internal detail of whatever the harness does behind its own loop, invisible to the protocol. ACP draws its boundary one level up, between the editor and the whole coding-agent process, not between an agent and its helpers.&lt;/p&gt;
&lt;p&gt;In the common local setup, the editor launches the agent as a subprocess and they trade newline-delimited JSON-RPC messages over stdin and stdout.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    U[Developer] &amp;lt;--&amp;gt; C[ACP client&amp;lt;br/&amp;gt;Editor or IDE]
    C &amp;lt;--&amp;gt;|JSON-RPC over stdio| A[ACP agent&amp;lt;br/&amp;gt;Coding-agent process]
    A &amp;lt;--&amp;gt; M[Model provider]
    A &amp;lt;--&amp;gt; T[MCP servers and tools]
    C &amp;lt;--&amp;gt; W[Workspace, buffers, terminals]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The whole design is in that picture: the editor and the agent stay separate programs. The agent doesn&amp;rsquo;t rebuild a serious code-review UI. The editor doesn&amp;rsquo;t reimplement the reasoning loop. Each side keeps the part it already understands.&lt;/p&gt;
&lt;h2 id=&#34;the-lsp-analogy-only-gets-you-halfway&#34;&gt;The LSP Analogy Only Gets You Halfway&lt;/h2&gt;
&lt;p&gt;The usual pitch borrows from the Language Server Protocol, and the economics do rhyme. Before LSP, editors built language support one language at a time. After, one language server worked across many editors. ACP applies the same trick to agents: agents stop maintaining an integration per editor, editors stop maintaining one per agent, and you can swap agents without changing where you review code.&lt;/p&gt;
&lt;p&gt;But don&amp;rsquo;t take the analogy too literally. A language server answers bounded questions. Where is this symbol defined? What completions apply here? A coding agent is a long-running, stateful thing. It streams text, announces plans, calls tools, asks permission, edits files, starts processes, and sometimes needs to be interrupted mid-turn. So ACP has to standardize more than request-and-answer. It standardizes enough of the &lt;em&gt;experience of supervising an agent&lt;/em&gt; for the client to render it well.&lt;/p&gt;
&lt;h2 id=&#34;what-happens-in-a-session&#34;&gt;What Happens in a Session&lt;/h2&gt;
&lt;p&gt;A connection opens with &lt;code&gt;initialize&lt;/code&gt;, where both sides negotiate a version and advertise capabilities. This is deliberately not all-or-nothing. Both programs are expected to cope with optional features being absent.&lt;/p&gt;
&lt;p&gt;Then the client opens a conversation with &lt;code&gt;session/new&lt;/code&gt; and gets a session ID back. One connection can carry several independent sessions. The client sends your message with &lt;code&gt;session/prompt&lt;/code&gt;, and while the agent works it streams &lt;code&gt;session/update&lt;/code&gt; notifications: assistant chunks, thoughts and progress, a plan and edits to that plan, tool calls and their status, mode changes. If a tool call needs a sign-off, the agent sends &lt;code&gt;session/request_permission&lt;/code&gt; and the editor shows you the choice. Cancel a turn and the client fires &lt;code&gt;session/cancel&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That bidirectional flow is the whole difference between ACP and a thin chat API. The agent isn&amp;rsquo;t just handing back text. It&amp;rsquo;s exposing a structured account of what it&amp;rsquo;s doing so the editor can turn that into something you can watch and steer.&lt;/p&gt;
&lt;h2 id=&#34;the-editor-stops-being-a-chat-window&#34;&gt;The Editor Stops Being a Chat Window&lt;/h2&gt;
&lt;p&gt;An agent in a plain terminal sees the files on disk. An editor knows more than disk. It has unsaved buffers, syntax highlighting, diagnostics, symbol navigation, a diff UI, and a model of what you&amp;rsquo;re reviewing right now. ACP&amp;rsquo;s filesystem methods let the agent ask the client to read or write text &lt;em&gt;including&lt;/em&gt; editor state that hasn&amp;rsquo;t hit disk yet. Its terminal methods let the agent request a command, get a handle, read bounded output, wait for exit, or kill it, while the editor keeps ownership of the process and shows output in its own native terminal.&lt;/p&gt;
&lt;p&gt;That split is a lot healthier than every agent inventing its own janky approximation of an IDE. The agent brings intent and execution. The editor brings visibility and control.&lt;/p&gt;
&lt;h2 id=&#34;acp-and-mcp-are-not-the-same-thing&#34;&gt;ACP and MCP Are Not the Same Thing&lt;/h2&gt;
&lt;p&gt;People mix these up because both use JSON-RPC and both show up in agent tooling. They sit on different boundaries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP&lt;/strong&gt; answers: what can the agent &lt;em&gt;use&lt;/em&gt;? Databases, issue trackers, browsers, internal APIs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACP&lt;/strong&gt; answers: where and how do &lt;em&gt;you&lt;/em&gt; work with the agent?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They&amp;rsquo;re complementary. During &lt;code&gt;session/new&lt;/code&gt;, the ACP client can hand MCP server config to the agent, which then connects to those servers itself. Tools arrive through MCP. Agent work arrives through ACP. Clean.&lt;/p&gt;
&lt;h2 id=&#34;the-interface-is-becoming-its-own-layer&#34;&gt;The Interface Is Becoming Its Own Layer&lt;/h2&gt;
&lt;p&gt;Strip away the JSON-RPC and the method names and the idea is simple: the coding agent and the interface you use to supervise it are different products. Improve the editor without waiting on every agent vendor. Stay in the environment where your code, terminal, and review workflow already live.&lt;/p&gt;
&lt;p&gt;We should want coding agents to get better. We should also want the things we use to control them to get better. Those two will move faster if they&amp;rsquo;re allowed to move apart. That&amp;rsquo;s the actual promise of ACP. Not one universal agent, but a boundary that stops any single agent from owning the entire way we work.&lt;/p&gt;
&lt;h2 id=&#34;sources--references&#34;&gt;Sources &amp;amp; References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://agentclientprotocol.com/get-started/introduction&#34;&gt;Agent Client Protocol introduction&lt;/a&gt; and &lt;a href=&#34;https://agentclientprotocol.com/get-started/architecture&#34;&gt;architecture&lt;/a&gt; — overview, subprocess model, sessions, permissions, and the relationship to LSP and MCP.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/agentclientprotocol/agent-client-protocol/blob/main/docs/protocol/v1/overview.mdx&#34;&gt;ACP v1 overview&lt;/a&gt;, &lt;a href=&#34;https://github.com/agentclientprotocol/agent-client-protocol/blob/main/docs/protocol/v1/session-setup.mdx&#34;&gt;session setup&lt;/a&gt;, and &lt;a href=&#34;https://github.com/agentclientprotocol/agent-client-protocol/blob/main/docs/protocol/v1/prompt-turn.mdx&#34;&gt;prompt turn&lt;/a&gt; — methods, streaming updates, cancellation, and MCP handoff.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/agentclientprotocol/agent-client-protocol/blob/main/docs/protocol/v1/file-system.mdx&#34;&gt;ACP filesystem&lt;/a&gt; and &lt;a href=&#34;https://github.com/agentclientprotocol/agent-client-protocol/blob/main/docs/protocol/v1/terminals.mdx&#34;&gt;terminal&lt;/a&gt; methods — unsaved editor state, tracked writes, and process control.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zed.dev/blog/acp-registry&#34;&gt;The ACP Registry is Live&lt;/a&gt; — distribution for compatible agents and clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;d appreciate a follow. You can subscribe with your email below. The emails go out once a week, or you can find me on Mastodon at &lt;a href=&#34;https://micro.blog/llbbl?remote_follow=1&#34;&gt;@logan@llbbl.blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
  </channel>
</rss>