Concepts / agent ↔ editor

ACP stable

Agent Client Protocol · Zed; open specification with JetBrains as co-maintainer

Spec
v1 · public registry
Published
Reviewed

What it is

ACP does for coding agents what the Language Server Protocol did for language tooling. An agent implements ACP once and runs inside any editor that speaks it, instead of shipping its own UI. Zed created it in June 2025. It was the headline feature of Zed 1.0 in April 2026, is built into JetBrains IDEs, and has community clients for Neovim, Emacs and VS Code.

How it works

The editor launches the agent as a subprocess and they exchange JSON-RPC over stdio.

  • The editor is the client. It creates a session and sends prompts.
  • The agent streams session updates: text, tool calls, plans, diffs.
  • File reads and writes go through the editor, so unsaved buffers and the editor’s own permissions apply.
  • The agent asks the editor for permission before risky actions. The editor decides how to prompt the user.
  • The agent can request a terminal and the editor renders it.

A public registry, launched with JetBrains in January 2026, lets an agent register once and appear in every ACP client. More than 50 agents are listed, including Cursor, which joined as an agent rather than a host.

When to use it

You are building a coding agent. Implement ACP and you get every ACP editor as a surface. If you are building an editor or IDE plugin, implement the client side and you get every agent.

Watch out for

  • The name collides with the Agentic Commerce Protocol and with IBM’s earlier Agent Communication Protocol. Say “Zed’s ACP” when it matters.
  • Agents get tools from the editor via MCP, so you still need MCP.

Related

In the guide

  • 1. Set up your tools Pick one coding agent, write the instruction file for your repo, connect the MCP servers your stack already has, and put the agent in your editor.

Sources

  1. Zed: Agent Client Protocol
  2. The ACP Registry is live (Zed blog)
  3. How the community is driving ACP forward (Zed blog)

Suggest a fix to this page →