A2A vs ACP: how IBM's agent protocol merged into A2A
IBM's Agent Communication Protocol merged into A2A in August 2025. What ACP was, how its concepts map to A2A, and what ACP users were told to do.
A2A (Agent2Agent) is for letting independent agents, often run by different organizations, discover each other and hand work to one another as tracked tasks. ACP (Agent Communication Protocol) was IBM Research’s REST protocol for running agents and exchanging messages with them, built to power the BeeAI platform.
The comparison is now mostly history. On August 25, 2025, the ACP team announced that it would wind down active development and contribute its technology and expertise to A2A. On August 29, 2025, a joint post by IBM Research and Google on the LF AI & Data blog said ACP was officially merging with A2A under the Linux Foundation. The ACP repository is archived, and the BeeAI platform, since renamed Agent Stack, now builds on A2A. For new work, A2A is the protocol ACP’s own maintainers point to.
A note on names: “ACP” also abbreviates the Agentic Commerce Protocol from OpenAI and Stripe, an unrelated checkout specification. That one is covered in AP2 vs Agentic Commerce Protocol.
What ACP was for
IBM Research launched ACP in March 2025. Its OpenAPI 3.1 description, at API version 0.2.0, defined a small REST surface for listing agents and running them:
| Endpoint | Purpose |
|---|---|
GET /agents, GET /agents/{name} |
List the agents on a server and read one agent’s manifest |
POST /runs |
Start a run in sync, async or stream mode |
GET /runs/{run_id} |
Read a run’s status and output |
POST /runs/{run_id} |
Resume a run that is waiting for input |
POST /runs/{run_id}/cancel |
Cancel a run |
GET /runs/{run_id}/events |
Read the events a run produced |
GET /session/{session_id} |
Read session state |
A run moved through seven statuses: created, in-progress, awaiting, cancelling, cancelled, completed and failed. The awaiting status let an agent pause for outside input, and sessions carried state from one run to the next. Messages were built from parts that could hold text, code, files and other media.
Discovery rested on an agent manifest. ACP’s documentation describes four ways to find one: query a running server’s /agents endpoint, read a public manifest at /.well-known/agent.yml, look it up in a registry, or read metadata embedded in a package so that an agent can be found while it is not running. The OpenAPI document declares no security scheme, so authentication was left to each deployment.
What A2A is for
Google announced A2A in April 2025, and the Linux Foundation launched the Agent2Agent project in June 2025. The current protocol version is 1.0. Release v1.0.0 shipped on March 12, 2026, and the v1.0.1 patch on May 28, 2026. A2A treats each agent as opaque: a client sees the agent’s published card, the tasks it creates and the artifacts it returns, never its internal tools or memory.
An A2A server publishes an Agent Card, usually at /.well-known/agent-card.json. The card lists endpoints in supportedInterfaces, the agent’s skills, and the security schemes clients must use. Work happens in tasks with states such as TASK_STATE_WORKING, TASK_STATE_INPUT_REQUIRED and TASK_STATE_COMPLETED. Clients follow progress by polling, streaming or push notifications, over JSON-RPC 2.0, gRPC or HTTP+JSON. What is the A2A protocol? covers the whole protocol.
Side by side
| ACP (Agent Communication Protocol) | A2A (Agent2Agent) | |
|---|---|---|
| Purpose | Run agents and exchange messages with them over REST, first for the BeeAI platform | Let independent agents discover each other and delegate tracked tasks |
| Layer | Application protocol over HTTP | Application protocol over HTTP(S), with three bindings |
| Who talks to whom | Clients, applications and agents calling agents hosted on an ACP server | A client agent calling a remote agent, often across organizations |
| Transport | REST endpoints, with streamed run output | JSON-RPC 2.0, gRPC or HTTP+JSON; Server-Sent Events for streaming; webhooks for push |
| Discovery | Agent manifest via /agents, /.well-known/agent.yml, registries or embedded metadata |
Agent Card at /.well-known/agent-card.json, registries or direct configuration |
| Auth | Not defined in the OpenAPI document; left to the deployment | Declared in the card: API key, HTTP auth, OAuth 2.0, OpenID Connect or mutual TLS; cards can be signed |
| State | Runs with seven statuses, awaiting for input, sessions across runs |
Tasks with a defined lifecycle; contextId groups related tasks and messages |
| Governance and status | IBM Research open source project, Apache 2.0; merged into A2A in August 2025; repository archived | Linux Foundation project; version 1.0 is current |
How ACP concepts map to A2A
ACP and A2A solved overlapping problems, so most ACP ideas have an A2A counterpart. The table below is our reading of the two specifications. It is not an official conversion table, and the operations do not line up one to one.
| ACP | Closest A2A equivalent |
|---|---|
| Agent manifest | Agent Card |
GET /agents listing many agents on one server |
One Agent Card per agent, plus a registry or catalog to list many |
| Run | Task |
awaiting status, resumed with POST /runs/{run_id} |
TASK_STATE_INPUT_REQUIRED, continued by a new message that carries the same taskId |
| Session | contextId |
sync run mode |
SendMessage, which by default waits for a terminal or interrupted state |
async run mode |
SendMessage with returnImmediately, then GetTask or push notifications |
stream run mode |
SendStreamingMessage, or SubscribeToTask for an existing task |
POST /runs/{run_id}/cancel |
CancelTask |
| Message parts | Text, file and data parts |
One difference has no row in the table. ACP’s specification declared no authentication scheme, while an A2A card states which schemes a client must use, and A2A defines how a card can be signed.
What happened to ACP users
The ACP team gave users three things when it announced the merger:
- Adapters in the BeeAI Framework.
A2AServermakes a BeeAI agent reachable as an A2A server.A2AAgentlets a BeeAI application call external A2A agents. - A migration guide. The Agent Stack guide for moving from ACP to A2A (for Agent Stack v0.3.x and later) replaces the
acp-sdkdependency withagentstack-sdk, swaps ACP’sMetadatafor anAgentDetailA2A extension, declares skills with A2A’sAgentSkilltype, and moves trajectory and citation output into A2A extensions. - Continuity of people. Kate Blair of IBM Research, who led ACP, joined the A2A Technical Steering Committee on behalf of IBM.
The announcement gave no end-of-life date for existing deployments. It said documentation updates were on the way and that work to bring ACP features into A2A had started as issues in the A2A repository.
When to use each
Use A2A for new work. It is the maintained protocol, it has a Linux Foundation home, and ACP’s own team now contributes to it. If you need agents from different vendors or organizations to find each other and exchange tasks, publish an Agent Card and an A2A endpoint.
ACP only matters for systems that already run it. If you have ACP clients or servers in production, treat them as legacy. The archived repository takes no further changes, so plan the move to A2A with the migration guide above.
Using both during a migration
There is no reason to switch every client on one day. A service can keep its ACP endpoints for existing callers while it publishes an Agent Card and an A2A endpoint for new ones, then retire the ACP surface once traffic has moved. The BeeAI adapters exist for this kind of staged move. Keep the two surfaces backed by the same agent logic so their behaviour does not drift.
Common misconceptions
“ACP is a competing standard you have to choose against A2A.” That was a fair reading in mid-2025. Since August 2025 ACP has been part of the A2A effort, and its repository is archived.
“A2A absorbed ACP’s REST API.” The merger moved people and ideas into A2A. ACP’s /runs endpoints did not come with it. A2A kept its own data model, operations and bindings, so ACP code has to be rewritten against A2A operations.
“ACP and the Agentic Commerce Protocol are the same thing.” They share an abbreviation and nothing else. One was IBM’s agent messaging protocol. The other is a checkout specification from OpenAI and Stripe.
“Moving to A2A settles authentication.” A2A makes a server declare its security schemes and lets it sign its card. Which credentials to issue, and what a caller may do once authenticated, remain decisions for each deployment.
Questions
- When did ACP merge into A2A?
- The ACP team announced on August 25, 2025 that it would wind down active development and contribute its work to A2A. A joint IBM Research and Google post on the LF AI & Data blog confirmed the merger under the Linux Foundation on August 29, 2025.
- Is ACP still maintained?
- No. The ACP GitHub repository is archived and read-only. The BeeAI platform that ACP was built for is now Agent Stack, which is built on A2A.
- Is this ACP the same as the Agentic Commerce Protocol?
- No. The Agentic Commerce Protocol, maintained by OpenAI and Stripe, is a checkout and payment specification that shares the abbreviation. It has nothing to do with IBM's Agent Communication Protocol.
Sources
- ACP Joins Forces with A2A Under the Linux Foundation's LF AI & Data, LF AI & Data blog, August 29, 2025 (accessed )
- ACP Joins Forces with A2A Under the Linux Foundation (i-am-bee GitHub discussion #5, August 25, 2025) (accessed )
- Agent Communication Protocol repository (archived) (accessed )
- ACP OpenAPI specification (openapi.yaml, API version 0.2.0) (accessed )
- ACP documentation: Agent Discovery (accessed )
- Agent Stack: ACP to A2A Migration Guide (accessed )
- Agent Stack repository (formerly BeeAI Platform) (accessed )
- A2A Protocol Specification (accessed )
- A2A protocol definition (a2a.proto) (accessed )
- A2A releases on GitHub (accessed )
- Linux Foundation Launches the Agent2Agent Protocol Project, June 23, 2025 (accessed )