{"slug": "agent-client-protocol-acp-is-the-most-important-ai-coding-standard-nobody-s", "title": "Agent Client Protocol (ACP) is the most important AI coding standard nobody's talking about", "summary": "Zed's Agent Client Protocol (ACP), which JetBrains joined in October 2025 to bring to IntelliJ, lets any ACP-speaking editor drive any ACP-speaking coding agent, and GetPullRequest now runs eight agents through it — Cursor, Claude Code, Codex, Kiro, OpenCode, Qwen, Cline and Copilot — by treating a phone as an ACP client. ACP replaces the M × N editor-to-agent integrations with M + N, using JSON-RPC over stdin/stdout for local agents, and in January Zed and JetBrains launched the ACP Registry, which shipped with Claude Code, Codex CLI, GitHub Copilot CLI and OpenCode. ACP is distinct from MCP: ACP connects a client such as an editor or phone to the agent, while MCP connects the agent to tools and data.", "body_md": "# Agent Client Protocol (ACP) is the most important AI coding standard nobody's talking about\n\nACP is the protocol Zed started and JetBrains joined so any editor can talk to any coding agent. How it differs from MCP, why a phone can be an ACP client, and the 8 agents GetPullRequest runs through it.\n\nThe Agent Client Protocol is a standard way for a code editor to talk to a coding agent. Zed started it in 2025. JetBrains joined in October 2025 to bring it to IntelliJ and the rest. If an agent speaks ACP, any ACP editor can drive it. If an editor speaks ACP, it gets every ACP agent for free.\n\nWe built GetPullRequest (GPR) on it. Slightly odd, because GPR isn't an editor. It's a phone app that runs coding agents on your own machine. Protocol first, then what we did with it.\n\n**TL;DR:** ACP is to coding agents what LSP was to language tooling. Agents implement it once, clients implement it once. GPR treats your phone as an ACP client and runs eight agents through it: Cursor, Claude Code, Codex, Kiro, OpenCode, Qwen, Cline and Copilot.\n\n## The problem the Agent Client Protocol solves\n\nBefore ACP, every editor that wanted an agent wrote its own integration, and every agent that wanted to be in an editor did the same backwards. M editors, N agents, **M × N** bits of glue, each broken in its own way. ACP makes it **M + N**.\n\nSame trick the Language Server Protocol pulled. It's why your editor can autocomplete Rust without anyone at your editor's company knowing much Rust.\n\n## How it works\n\nFor a local agent, the client starts the agent as a subprocess and they swap JSON-RPC messages over stdin and stdout. Remote transports over HTTP or WebSocket are still being worked out in the spec. The messages carry what a coding UI needs: the plan, tool calls and their results, file diffs, terminal output, permission requests, slash commands, model choices. Where it can, ACP reuses MCP's JSON shapes, and adds its own types for coding-specific UI like diffs.\n\nThe [spec and SDKs are at agentclientprotocol.com](https://agentclientprotocol.com). Not every agent speaks it natively. Claude Code and Codex get wrapped by small adapter binaries that translate.\n\nIn January Zed and JetBrains also launched the [ACP Registry](https://zed.dev/blog/acp-registry): an agent registers once and shows up in every ACP client, installed about the way you'd install an extension. Claude Code, Codex CLI, GitHub Copilot CLI and OpenCode were in it at launch. That's the point where ACP stopped being a Zed thing and started looking like the default.\n\n## Agent Client Protocol vs MCP\n\nThe names rhyme, so people mix them up.\n\n|  | ACP | MCP | \n|---|---|---|\n| **Connects** | A client (editor, phone) to the agent | The agent to tools and data | \n| **Typical messages** | Plans, diffs, tool calls, permission requests | Tool calls, resources, prompts | \n| **Example** | Zed or GPR driving Claude Code | Claude Code reading your database | \n\nIn a normal setup the editor talks ACP to the agent and the agent talks MCP to its tools. You use both.\n\n## How we found it\n\nGPR doesn't ship its own coding agent. Nearly every developer already pays for one or two: Cursor, a Claude plan, ChatGPT for Codex, Copilot through work. Making them buy another before they can try GPR is friction, and paying twice. We wanted to reuse what people already have. We just didn't know how without writing and maintaining one integration per agent.\n\nThen we watched [a video where Ben Brandt from Zed and people from JetBrains walk through ACP](https://www.youtube.com/watch?v=n11pDnBXPgk). Our exact problem, solved for editors, and nothing in it required the client to be an editor.\n\n**A phone could be just another client.**\n\n## What GPR does with ACP\n\nGPR's daemon runs on your machine and talks ACP to the agent over stdio, same as Zed would. The daemon dials out to our relay over a WebSocket, so nothing on your machine listens for incoming connections, and the relay passes the same messages on to the app. It keeps the stream, so a phone that dropped off in a lift picks up from the last event it saw, and it sends a push when the agent needs you. **So the phone isn't screen-scraping a terminal.** It gets plans, tool calls, diffs and terminal output as structured messages, and that's why one mobile UI works for every agent.\n\nThe daemon recognises **eight** today: Cursor (`cursor-agent`), Claude Code, Codex, Kiro, OpenCode, Qwen, Cline, Copilot. We built GPR with four of them (Cursor, Claude Code, Kiro, OpenCode) and nobody had to agree on one. `gpr discover` tells you which are ready, which are installed but missing an adapter, which aren't installed. Pick one per workspace. Switch with a dropdown. We don't pull agents from the ACP Registry yet. Anything listed there already speaks the protocol, though, so adding one is a small job for us rather than a new integration.\n\nSome things just fall out of using the protocol properly. The slash commands in the app are whatever the agent advertises over ACP, not a list we maintain, so a new command just shows up. Model switching uses ACP's config options, and if an agent also advertises a models slash command, the app hides it so there's one way to switch everywhere. Agents can send their own extension messages; Cursor and Kiro both do, and they were the first two we supported properly, in July. Not every extension earns its place. In September we hid Kiro's MCP status widget from the chat. It was noise.\n\n## Agent Client Protocol with Claude Code\n\nPeople search for this specifically. Claude Code doesn't speak ACP natively. It goes through an adapter that sits next to the `gpr` binary, and the installer puts it there. That's also why it was late for us: Cursor and Kiro speak ACP out of the box and got proper support in July, while Claude Code (and Codex) landed on September 18.\n\nThe adapter route has one nice side effect. If you run Claude Code on an API key, or through OpenRouter or a company gateway, you set that in GPR's `agents.json` and it just works. Anthropic's own Remote Control refuses all of those setups. The [Claude Code post](https://www.getpullrequest.com/blogs/claude-code-remote-control-from-phone) has the details.\n\n## What the protocol doesn't fix\n\nACP standardises the conversation. It doesn't standardise how agents behave as processes, and running them unattended for hours shows it.\n\n**Agents that won't stop.** Stop some agents halfway through startup and they ignore the polite signal and keep running. Start several at once and they can trip over the same config file. In August that combination left **52 agent processes** on one of our machines, about 300 MB each (the Cursor post has the story). The daemon now gives an agent two seconds to exit, then kills it.\n\n**Agents that go quiet.** Some stop talking mid-turn without saying why. GPR fails the task after 90 seconds of silence rather than wait forever, so it shows up on your phone as failed instead of sitting at \"running\" all afternoon.\n\nThese tools mostly weren't built to be long-running background processes, and a protocol can't change that. Somebody has to absorb it. For us that's the daemon.\n\n## Your keys stay where they are\n\nYour own agent means your own login. Anthropic key, `codex login`, Cursor account, all stay on your machine, and any keys or gateway settings the daemon needs go in `~/.gpr/agents.json` there too ([reference](https://www.getpullrequest.com/docs/reference/agents-json)). GPR's backend never sees them, and your model bill doesn't change.\n\n## Try it\n\nGPR is free for projects, sessions, and the GitHub and Slack connections. You pay only for more workspaces or more tasks running at once. Get the app on [Google Play](https://play.google.com/store/apps/details?id=com.pullrequest&utm_source=blog&utm_medium=organic&utm_campaign=agent-client-protocol), then:\n\n```\ncurl -fsSL https://getpullrequest.com/install | bash\ncd ~/code/your-repo && gpr setup\ngpr discover\n```\n\nAgent-specific guides: [Claude Code](https://www.getpullrequest.com/blogs/claude-code-remote-control-from-phone), Codex, Cursor. Running several at once across machines: parallel coding agents.\n\n## Keep reading\n\nNew here? The launch post, [Your AI coding agent is stuck in a terminal you have to babysit. So we built GetPullRequest](https://www.getpullrequest.com/blogs/why-we-built-getpullrequest), is the why. The pillar, We ditched cloud AI coding agents. Our laptops were faster, and already paid for, is the how.\n\n- [Claude Code Remote Control is great. It's also not enough](https://www.getpullrequest.com/blogs/claude-code-remote-control-from-phone)\n- Codex CLI remote control: stop babysitting the terminal and let it ship PRs while you're out\n- Cursor background agents charge you twice for compute you already own\n- Run parallel coding agents on every machine you own, from one phone\n- [AI can run the software factory. It can't turn the lights off yet](https://www.getpullrequest.com/blogs/software-factory-dark-factory)", "url": "https://wpnews.pro/news/agent-client-protocol-acp-is-the-most-important-ai-coding-standard-nobody-s", "canonical_source": "https://getpullrequest.com/blogs/agent-client-protocol", "published_at": "2026-10-06 07:10:19+00:00", "updated_at": "2026-10-16 09:39:10.872763+00:00", "lang": "en", "topics": ["agent-protocols", "ai-agents", "developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["Agent Client Protocol", "Zed", "JetBrains", "GetPullRequest", "Cursor", "Claude Code", "Codex", "GitHub Copilot CLI"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/agent-client-protocol-acp-is-the-most-important-ai-coding-standard-nobody-s", "markdown": "https://wpnews.pro/news/agent-client-protocol-acp-is-the-most-important-ai-coding-standard-nobody-s.md", "text": "https://wpnews.pro/news/agent-client-protocol-acp-is-the-most-important-ai-coding-standard-nobody-s.txt", "jsonld": "https://wpnews.pro/news/agent-client-protocol-acp-is-the-most-important-ai-coding-standard-nobody-s.jsonld"}}