Stop Switching Clients: Run Claude's Agent SDK From Any ACP-Compatible Tool
You know the drill—you've built a workflow around one AI client, and now you're locked in. Want to try a different editor, a new terminal tool, or a custom frontend? You're stuck rewriting integrations or losing features. The Claude Agent SDK is powerful, but it's tied to Anthropic's own interfaces. What if you could use it from any client that speaks the Agent Client Protocol? That's exactly what this project—the ACP adapter for the Claude Agent SDK—solves. It's a bridge that lets your favorite ACP-compatible client drive Claude's agent under the hood.
What It Does
This is an npm package (@agentclientprotocol/claude-agent-acp) that implements an ACP agent by wrapping the official Claude Agent SDK. If you're not familiar, ACP (Agent Client Protocol) is a standard that lets different AI clients and agents talk to each other. This adapter makes Claude's SDK look like any other ACP-compliant agent, so any client that supports the protocol can use it without custom glue code.
Under the hood, it's a TypeScript library that translates between ACP messages and the Claude Agent SDK's native API. The feature list is substantial: you get context @-mentions, image support, tool calls with permission requests, follow-up turns, edit review, TODO lists, and even nested subagent transcripts. It also handles interactive and background terminals, custom slash commands, and client-side MCP servers. There's support for long-running session-scoped goals through a provider-neutral goal extension, plus opt-in extensions for structured errors/recovery and fine-grained tool permission controls.
One interesting architectural detail: subagent sessions are exposed only after bilateral capability negotiation. The adapter checks whether the client advertises support (either through a draft clientCapabilities.subagents field or a JetBrains-specific _meta.jetbrains.air.capabilities flag) and mirrors that capability back. If neither signal is present, it falls back to legacy tool-call representations. It's a pragmatic approach to handling a protocol that's still evolving.
Why It's Cool
It decouples the agent from the interface. The whole point of ACP is that you shouldn't care which agent is behind your client. This adapter is a concrete demonstration of that idea—it takes a proprietary SDK and makes it portable. You get Claude's agent capabilities without being forced into Anthropic's default UI.
The feature parity is genuinely impressive. This isn't a thin wrapper that only handles basic chat. We're talking about interactive terminals, edit review workflows, TODO lists, and nested subagent transcripts. These are the features that make an agent actually usable in a development workflow, not just a toy. The fact that they all survive the ACP translation is a real engineering effort.
The extension system is thoughtful. Rather than trying to cram everything into the base protocol, the project offers opt-in extensions. The goal extension handles long-running session-scoped tasks. The session failure extension provides structured errors, recovery, and warnings. The permission extension gives you editable tool permission choices with durable effects. This is good protocol design—keep the core lean, let clients opt into what they need.
It respects the ecosystem's growing pains. The subagent capability negotiation is a good example. The protocol isn't finalized, so the adapter supports multiple signaling mechanisms and falls back gracefully. It's honest about the current state of things rather than pretending everything is settled.
How to Try It
Head to the GitHub repository to get started. The package is published on npm, so installation is straightforward:
npm install @agentclientprotocol/claude-agent-acp
From there, you'll want to check the docs in the repository for setup details. The README points to specific documentation for the extensions (docs/goal-extension.md, docs/session-failure-extension.md, docs/permission-extension.md), and the Agent Client Protocol site has details on compatible clients and the protocol itself.
The basic idea is: run this adapter as your ACP agent, then point any ACP-compatible client at it. If you're already using a client that supports ACP, this should be a drop-in replacement for whatever agent you're currently using. If you're building your own client, this gives you a fully-featured agent to test against without implementing Claude's SDK yourself.
Final Thoughts
This project is best for developers who are building ACP-compatible tools or who want to standardize their AI client setup. If you're happy with Anthropic's own interfaces, you might not need it. But if you're tired of being locked into one client or you're building something that needs to work across multiple agents, this adapter is a solid piece of infrastructure. It's well-scoped, handles a lot of edge cases, and respects the fact that the protocol is still maturing. The no-CLA contribution policy is a nice touch too—they just ask you to confirm you have the rights to your code. Worth a look if you're in the ACP ecosystem.
Follow @githubprojects for more developer tools and open source projects.