ACP Agent Protocols
A comprehensive enterprise reference to the Agent Client Protocol, the retired Agent Communication Protocol, Agentic Commerce ACP, public implementations, interoperability limits, security controls, and adoption strategy.
Executive path
Understand scope, maturity, and the adoption decision.
Start with the decisionArchitecture path
Review boundaries, controls, ownership, and qualification.
Start with architectureEngineering path
Study lifecycle, failure modes, and release tests.
Start with the wire modelExecutive decision
ACP is valuable as a common control envelope. Enterprise portability requires an external compatibility and governance plane.
Recommended position
Adopt Agent Client Protocol v1 for qualified coding-agent integrations. Place every client–agent pairing behind a managed adapter and compatibility profile. Keep ACP v2 and standardized remote transport feature-flagged until their RFDs stabilize. Do not start new work on the retired Agent Communication Protocol; use A2A. Use Agentic Commerce ACP only for commerce transactions.
A common interaction envelope
Initialization, sessions, prompts, streamed messages, plans, diffs, tool progress, permissions, and MCP configuration.
An enterprise trust plane
Identity binding, rights, authorization, credential brokerage, containment, durable workflow, and complete audit remain external.
Semantic translation
Interoperability failures concentrate in session meaning, cancellation, permissions, context, tool identity, extensions, and cleanup.
The ACP namespace collision
| Protocol | Boundary | Current state | Decision |
|---|---|---|---|
| Agent Client Protocol | IDE, editor, CLI, or coding client ↔ coding agent | Wire v1 latest; v2 active proposal; remote transport active proposal | Adopt v1 selectively behind a control plane. [S01][S03][S09][S11] |
| Agent Communication Protocol | Agent ↔ agent | Archived August 27, 2025 and moved into A2A | Do not select for new work. [S34][S35] |
| Agentic Commerce Protocol | Buyer agent ↔ merchant, checkout, order, and payment systems | Beta; latest released snapshot 2026-04-17 | Evaluate only for commerce. [S37] |
Protocol boundary map
Assign each protocol to the boundary it was designed to standardize. The durable architecture composes them rather than selecting one universal protocol.
Agent Client Protocol
A JSON-RPC interface for coding clients and coding agents, designed to reduce the many-to-many editor–agent integration matrix.
Precise scope
The official protocol defines communication between code editors or IDEs and coding agents. Public implementations extend the pattern into CI, custom frontends, headless harnesses, and orchestration, but the coding/editor assumption remains the normative center. The architecture is MCP-friendly, UX-first, and based on a trusted editor–agent relationship. [S01][S02][S20][S22][S23]
Best analogy
LSP separated editors from language intelligence. ACP attempts to separate coding clients from agent runtimes. Unlike a language server, an agent may modify files, execute processes, call external systems, consume credentials, spend money, and retain long-lived state.
Version and maturity model
ACP has independent release surfaces. Conflating them creates false compatibility assumptions.
| Surface | Research-time value | Meaning | Required handling |
|---|---|---|---|
| Wire major | 1 | Breaking JSON-RPC compatibility level | Negotiate and fail closed. [S03] |
| v1 schema | 1.20.0 | Generated schema release | Pin validation and code generation. [S14][S15] |
| v2 schema | 2.0.0-alpha.2 | Experimental artifact | Feature-flag only. [S14][S15] |
| TypeScript SDK | 1.3.0 | Library API and bundled schemas | Record separately from the wire version. [S15] |
| Rust crate | 1.6.0 | Rust protocol artifact | Pin independently. [S14][S15] |
| Adapter/runtime | Implementation-specific | Semantic translation and vendor behavior | Qualify exact combinations. [S17][S18] |
Confirmed Active is a visibility and focus signal, not final approval. [S08]
Stable v1 lifecycle
V1 keeps the prompt request open through the turn while notifications stream intermediate state. [S03][S04][S05][S06]
Correct initialization shape
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": 1,
"clientInfo": {
"name": "enterprise-agent-workbench",
"version": "1.0.0"
},
"clientCapabilities": {
"fs": { "readTextFile": false, "writeTextFile": false },
"terminal": false
}
}
}Every omitted capability is unsupported. A client must not call optional methods merely because they exist in a newer schema or SDK. [S03]
Correct v1 prompt shape
{
"jsonrpc": "2.0",
"id": 12,
"method": "session/prompt",
"params": {
"sessionId": "sess_abc123",
"prompt": [
{ "type": "text", "text": "Audit the authentication middleware." }
]
}
}V1 does not accept a client-assigned message ID in this request. Message IDs, where present, are agent-generated update metadata. [S05]
“This method is available.”
Useful for syntax-level negotiation and graceful degradation.
“This exact combination passed our tests.”
Required for durability, cleanup, permission, routing, and security claims.
Future v2 direction
V2 is an Active RFD collection. It consolidates lessons from additive v1 evolution and introduces breaking changes. Active indicates maintainer focus, not production stability. [S08][S09]
| Area | V1 | V2 direction | Why it matters |
|---|---|---|---|
| Prompt lifecycle | Request lasts until the turn ends | Request returns when accepted | Supports background work and multi-client updates. [S10][S25] |
| Messages | Mostly chunks; IDs may be optional | Agent-owned IDs and message upserts | Improves replay, sync, and deduplication. |
| Tool calls | Initial and update variants | Unified upsert model | Simplifies reconciliation. |
| File changes | Text before/after | Git patches and structured operations | Supports add, delete, move, copy, and non-text changes. |
| Terminal/filesystem | Client may expose execution APIs | Agent-owned execution; display-only output | Clarifies the security boundary. |
| Session lifecycle | Capability-dependent and uneven | More consistent baseline | Reduces client branching. |
// Proposed v2 semantics
client → agent: session/prompt(...)
agent → client: { "result": {} } // accepted, not completed
agent → client: session/update(user message with agent-owned ID)
agent → client: session/update(state, tools, plans, messages...)
agent → client: session/update(running | requires_action | idle)Public cancellation and compaction failures show that the lifecycle redesign responds to concrete implementation pressure. [S10][S25][S26]
Remote ACP transport
The proposed standard remote transport is Active. It defines a shared /acp endpoint with Streamable HTTP and WebSocket profiles. Authentication remains orthogonal; connection and session headers are identifiers, not credentials. Hardening work remains. [S11]
Do not write “remote ACP” as though it were one deployment profile
Public implementations already vary by carrier, framing, authentication, and lifecycle. Record endpoint, transport, framing, authentication, origin policy, encryption, multiplexing, replay, reconnect, affinity, and revocation.
transport:
family: experimental-acp-http
carrier: websocket
endpoint: /acp
framing: json-rpc
authentication: oauth2
token_binding: dpop
origin_policy: explicit-allowlist
session_affinity: required
replay: unsupported
revocation: gateway-enforced
tested_profile: enterprise-acp-remote-0.3Copilot also exposes a port mode, while Goose has local and remote ACP work. These do not automatically equal the proposed standard transport. [S20][S33][S40]
Implementation evidence
Public repositories confirm real adoption and expose the semantic gaps hidden by a common wire format.
Implementation corpus
| Implementation | Role | Pattern | Significance |
|---|---|---|---|
| Gemini CLI | Native agent | gemini --acp over stdio | Native protocol implementation with MCP and public lifecycle/framing issue history. [S19][S28][S29][S30] |
| GitHub Copilot CLI | First-party agent | Public-preview server; stdio or port | Extends ACP into CI, custom frontends, and multi-agent use. [S20][S31][S32] |
| Codex ACP | Adapter | ACP ↔ Codex App Server | Rich event translation, authentication, models, sandbox, MCP, subagents, and metadata. [S17] |
| Claude Agent ACP | Adapter | ACP ↔ Claude Agent SDK | Permissions, edit review, background terminals, slash commands, MCP, and lifecycle gaps. [S18][S25][S26][S27] |
| Zed | Client | Native editor client | Maintains connection, process, pending-session, capability, auth, dispatch, and debug state. [S21] |
| OpenHands | Host | ACP subprocess backend | Delegates model, tools, execution, and context; documents automatic permission approval. [S22] |
| OpenClaw | Harness manager | Managed external runtimes | Uses allowlists, permission profiles, MCP bridges, background state, and cleanup. [S23][S24] |
| Goose | Agent/platform | Local and remote ACP work | Shows pressure to use ACP as a broader harness boundary and raises remote trust questions. [S33][S40] |
Findings that improve the architecture stance
The visible transcript may not equal model context
A Claude issue documents compaction retained internally while the client sees only a generic completion event. Audit interfaces must distinguish rendered transcript, native transcript, effective model context, and memory summaries. [S26]
The registry is distribution metadata
Registry CI verifies a limited handshake property. It does not establish cancellation, durability, permission enforcement, cleanup, telemetry completeness, or enterprise approval. [S16]
Qualify the tuple, not the acronym
client
× ACP adapter
× underlying runtime
× exact versions and build digests
× negotiated capabilities
× extension profile
× permission profile
× transport profile
× workspace and identity policyAssumption audit
| Initial assumption | Verdict | Improved stance |
|---|---|---|
| ACP is mainly an IDE protocol | Normatively true; operationally narrow | Coding remains central, but ACP is already used in CI, custom frontends, harnesses, and orchestration. [S01][S20][S22][S23] |
| V1 is production-ready | Conditional | Production-usable only for qualified combinations behind external controls. |
| Capabilities provide portability | Syntactic only | Behavioral and security conformance must be tested separately. [S03][S25][S29][S31] |
| Permissions are primarily UX | Confirmed, with higher risk | Adapters can bypass native controls and hosts can auto-approve. Use independent policy and enforcement. [S22][S27][S32] |
| ACP and MCP are complementary | Confirmed | The ACP runtime may still displace the host capability plane; ownership must be explicit. [S02][S22][S23] |
| Adapters are advisable | Understated | A managed compatibility adapter is architecturally mandatory. |
| Registry listing indicates compatibility | False beyond discoverability | Treat registry entries as candidates, not approved agents. [S16] |
| V2 addresses future sophistication | Understated | V1 failures show an immediate need for clearer lifecycle and identity semantics. [S10][S25][S26] |
| Agents become interchangeable | False behaviorally | They become launchable and renderable through a shared envelope, not equivalent. |
| ACP should always replace native integrations | False | Use native integration when ACP loses security-critical hooks, context fidelity, or lifecycle control. |
Enterprise ACP control plane
ACP should terminate inside a governed compatibility layer before work reaches an agent runtime.
The control plane terminates ACP and converts it into an enterprise-owned session and policy model before dispatch. [S17][S21][S22][S23][S25][S27]
Qualification
Approve exact client, adapter, runtime, version, capability, extension, permission, and transport combinations.
Normalization
Translate ACP into canonical enterprise events while retaining raw messages for audit.
Policy mediation
Normalize actions, evaluate policy, bind approvals to immutable operation digests, and enforce at runtime.
Lifecycle supervision
Own startup, heartbeat, cancellation grace, force termination, orphan cleanup, and session expiry.
Credential brokerage
Issue short-lived, audience-bound credentials or local broker handles instead of reusable secrets.
Evidence reconciliation
Correlate protocol, provider, tool, policy, and execution telemetry.
Canonical session model
interface CanonicalAgentSession {
enterpriseSessionId: string;
tenantId: string;
principalId: string;
workloadId?: string;
acp: {
connectionId: string;
sessionId: string;
wireVersion: 1;
schemaVersion: string;
};
runtime: {
adapterName: string;
adapterVersion: string;
adapterDigest: string;
vendor: string;
vendorSessionId?: string;
vendorRuntimeVersion?: string;
};
profile: {
compatibilityProfileId: string;
extensionProfileId: string;
permissionProfileId: string;
transportProfileId: string;
};
workspaceGrantId: string;
policyDecisionRootId: string;
auditTraceId: string;
}
Ownership matrix
| Concern | Enterprise platform | ACP adapter | Agent runtime |
|---|---|---|---|
| Principal and tenant identity | Accountable | Propagates mapped context | Consumes; cannot redefine |
| Authorization and rights | Accountable | Translates protocol flow | Cannot override denial |
| Workspace grants | Defines roots and modes | Maps to runtime | Enforced by sandbox |
| MCP allowlist | Owns approved set | Injects qualified config | Consumes approved servers |
| Context condensation | Requires provenance | Captures boundaries | May perform native compaction |
| Permission UX | Owns policy and approval | Normalizes requests | Requests actions |
| Execution | Supervises limits | Coordinates | Performs in sandbox |
| Cost and usage | Reconciles sources | Reports protocol data | Produces provider/runtime data |
| Session durability | Owns enterprise record | Maps identifiers | Maintains native state |
Security and control model
| Threat | Evidence basis | Required control |
|---|---|---|
| Native policy bypass | Adapter can replace or reroute native tools. [S27] | Test policy equivalence and enforce independently at sandbox and gateway. |
| Auto-approval | Headless hosts may approve requests. [S22][S23][S32] | Risk-tiered machine policy; deny by default for unqualified writes and execution. |
| Cancellation wedge | Protocol cancellation may not stop runtime work. [S05][S25] | Grace timeout, process-group termination, orphan reaping, explicit terminal state. |
| Transcript/context divergence | Compaction can change model memory without exposing the summary. [S26] | Persist context boundaries, summaries, transformations, and ownership. |
| Framing corruption | Non-JSON stdout can break NDJSON. [S28] | Strict stdout isolation, bounded parser, stderr capture, circuit breaker. |
| Session confusion | Process-local mappings can break resume. [S04][S21][S31] | Enterprise IDs, principal/workspace binding, expiry, mapping validation. |
| Remote endpoint abuse | Stable ACP lacks a remote auth model; bridges create new boundaries. [S11][S33] | OIDC/OAuth gateway, origin policy, sender constraints, quotas, revocation, tenant isolation. |
| Supply-chain drift | Examples use first-run package fetches. [S17][S22][S23] | Reproducible builds, SBOM, signing, internal registry, digest pinning, revocation. |
| Untrusted metadata | Native fidelity uses open-ended metadata. [S03][S17][S23] | Namespace registry, schema validation, limits, redaction, and no authority from metadata. |
Permission decision chain
Compatibility profile and release gates
A declared capability becomes enterprise-supported only after behavioral qualification.
Example enterprise profile
profile: enterprise-acp-v1
profileVersion: 1.0.0
wireProtocol: 1
combination:
client: enterprise-workbench@2.4.1
adapter: codex-acp@pinned-digest
runtime: codex@app-server-compatible-version
transport: stdio-supervised
permissionProfile: interactive-medium-risk
extensionProfile: codex-profile-3
required:
- initialize
- session/new
- session/prompt
- session/cancel
- session/update
conditionallyRequired:
- session/list
- session/resume
- session/close
- session/delete
- usage_update
- messageId
prohibited:
- reusable secrets in ACP payloads
- unbounded stdout messages
- authorization from tool title
- unregistered metadata authority
- production v2 without a feature flag
releaseEvidence:
conformanceReport: artifact://reports/acp/codex-profile-3
sbom: artifact://sbom/codex-acp
signature: required
lastQualifiedAt: 2026-07-23
Declared versus verified
| Capability | Declared | Verified behavior | Evidence retained |
|---|---|---|---|
| Session close | Capability advertised | Memory, child processes, MCP connections, and handles released | Trace, process snapshot, resource delta |
| Cancellation | Method available | Prompt settles; child work terminates within bounded grace | Wire trace, process tree, terminal state |
| Resume | Method available | Principal, tenant, workspace, runtime version, and native mapping validated | Mapping record and denial tests |
| Permissions | Requests emitted | Rejection prevents action; changed arguments invalidate approval | Policy decision and operation digest |
| Usage | Updates emitted | Normal, cancelled, cached, and reasoning usage reconciles | Protocol and provider ledger |
Required qualification suite
Initialization and capability truthfulness
- Reject unsupported wire versions and malformed protocol fields.
- Verify every advertised method works and every unadvertised optional method fails safely.
- Compare model, mode, and configuration surfaces between native runtime and ACP path.
- Verify authentication methods in local, remote, interactive, and headless conditions.
Session lifecycle
- Create concurrent sessions and prove update isolation.
- List, paginate, resume, close, and delete where advertised.
- Restart adapter, client, and runtime independently.
- Reject cross-principal, cross-tenant, expired, stale-workspace, and incompatible resume attempts.
Message ordering and routing
- Updates before the client finishes installing local session state.
- Concurrent prompts on different sessions.
- Duplicate, late, unknown, and out-of-order variants.
- Session mismatch and visible-thread switching during streaming.
Cancellation and recovery
- Cancel before work, during model streaming, shell execution, MCP calls, blocking polling, and subagent work.
- Verify prompt settlement and all child-process termination.
- Escalate after the grace period and classify the terminal state.
- Replace a dead adapter without accepting work into a broken session.
Permissions and policy
- Reject and prove no side effect occurred.
- Approve once and verify one-use scope.
- Change command, arguments, working directory, target, or schema and require reapproval.
- Verify native and enterprise deny rules remain effective through the adapter.
- Exercise headless deny, bounded automation, and explicit test-only approval profiles.
MCP composition
- Start approved stdio and HTTP MCP servers; reject unapproved servers.
- Preserve canonical server and tool identity through adapter naming.
- Propagate delegated identity and cancellation.
- Retain result provenance and prevent secrets from entering ACP logs.
Transcript and context integrity
- Compaction, summarization, replay, duplicate chunks, late tool results, and interrupted turns.
- Distinguish rendered transcript, vendor transcript, model-effective context, and memory summary.
- Record context-boundary provenance and transformation ownership.
Transport and process behavior
- Non-JSON stdout, partial lines, CRLF/LF, oversized messages, slow readers, and backpressure.
- Adapter crash, runtime crash, parent exit, and orphan grandchildren.
- Remote origin, authentication, token expiry, revocation, affinity, and reconnect.
Usage and audit
- Normal completion, refusal, cancellation, cache use, reasoning tokens, and context occupancy.
- Reconcile ACP, provider, gateway, tool, and infrastructure usage.
- Validate extension schemas, size limits, and redaction.
Process supervisor requirements
Framing
Clean stdout, stderr isolation, bounded lines, schema validation, and malformed-frame circuit breaking.
Lifecycle
Startup timeout, prompt timeout, cancellation grace, process-group kill, orphan reaping, and deterministic exit reasons.
Resources
CPU, memory, disk, network, output, session, tool-call, and cost quotas.
Adjacent protocols and the other ACPs
Use each protocol at its intended boundary. Do not force one protocol to become the entire agent platform.
| Requirement | Primary protocol or system | Why |
|---|---|---|
| Connect coding agents to IDEs | Agent Client Protocol | Sessions, prompts, plans, diffs, tool progress, permissions, editor context. [S01][S02] |
| Connect a general agent backend to a web or mobile app | AG-UI | General event stream, shared state, frontend tools, and user interaction. [S38] |
| Expose tools, prompts, resources, and data | MCP | Capability boundary behind agents and applications. [S02][S39] |
| Delegate tasks between independent agents | A2A | Discovery, tasks, artifacts, status, streaming, and remote coordination. [S35][S36] |
| Execute agent-mediated checkout | Agentic Commerce ACP | Cart, feed, order, authentication, payment, and merchant flows. [S37] |
| Durable retries, compensation, and state machines | Workflow engine | Agent protocols do not replace durable workflow semantics. |
| Identity, rights, and authorization | Enterprise trust plane | No agent protocol is the complete governance system. |
| Event fan-out | Event platform | Use an event bus rather than stretching ACP into generic messaging. |
Retired Agent Communication Protocol
The BeeAI Agent Communication Protocol repository was archived on August 27, 2025 and states that the work is now part of A2A under the Linux Foundation. New agent-to-agent systems should target A2A. Use a migration adapter only for existing deployments. [S34][S35][S36]
Agentic Commerce Protocol
Agentic Commerce ACP is separately maintained by OpenAI and Stripe. It remains beta and uses complete date-versioned snapshots. The latest released snapshot is 2026-04-17, covering cart, feed, orders, authentication, and MCP. [S37]
AG-UI overlap
AG-UI is a general-purpose, bidirectional, event-based protocol for user-facing applications. It overlaps ACP at the broad “agent ↔ client” layer but is not coding-editor-specific. Use ACP for coding workbenches and AG-UI for general application frontends unless a bridge normalizes both. [S38]
Adoption tiers
Match deployment risk to protocol and implementation maturity.
Local, interactive, supervised v1
- Stdio transport.
- Pinned adapter and runtime.
- Sandboxed execution.
- Governed MCP gateway.
- Human permission mediation.
- Qualified workspace roots and process cleanup.
Headless and background workloads
- Explicit workload identity.
- Non-interactive permission profile.
- Immutable or disposable workspace.
- Execution, cost, and duration quotas.
- Reliable process-tree termination.
Remote and emerging features
- Standard remote transport RFD.
- Vendor-specific TCP or WebSocket profiles.
- ACP v2.
- Multi-client replay.
- MCP-over-ACP and unrestricted extensions.
Uncontrolled execution patterns
- Unpinned first-run package fetches.
- Auto-approval for high-impact work.
- Reusable secrets in ACP payloads.
- Raw remote agent endpoints.
- Authorization from tool titles or metadata.
- Registry listing treated as enterprise approval.
When to prefer a native integration
Use a vendor-native interface when the ACP path removes or obscures security-critical hooks, precise tool identity, context-compaction evidence, provider telemetry, lifecycle controls, or new runtime features. Preserve both ACP and native adapters behind one canonical enterprise runtime interface.
interface EnterpriseAgentRuntime {
initialize(context: IdentityAndPolicyContext): Promise<RuntimeCapabilities>;
createSession(input: CreateSessionInput): Promise<CanonicalAgentSession>;
prompt(sessionId: string, content: CanonicalContent[]): AsyncIterable<CanonicalAgentEvent>;
cancel(sessionId: string, operationId?: string): Promise<CancelResult>;
close(sessionId: string): Promise<CloseEvidence>;
}
class AcpRuntimeAdapter implements EnterpriseAgentRuntime { /* qualified ACP */ }
class NativeCodexAdapter implements EnterpriseAgentRuntime { /* native fidelity */ }
class NativeClaudeAdapter implements EnterpriseAgentRuntime { /* native fidelity */ }
Implementation roadmap
Establish the canonical model
Define enterprise session IDs, events, action identity, approval evidence, context provenance, and terminal states before integrating agents.
Ship local ACP v1
Support initialization, new, prompt, cancel, and update. Add optional methods only after capability negotiation and qualification.
Add the compatibility registry
Track exact builds, digests, capabilities, extensions, permission modes, transport profiles, tests, gaps, and revocation.
Integrate identity, policy, sandbox, and MCP
Do not allow the adapter to become the only enforcement point.
Qualify headless operation
Add workload identity, non-interactive policy, quotas, immutable workspaces, and deterministic cleanup.
Experiment with remote and v2 behind abstractions
Keep draft semantics isolated from downstream products through transport and canonical event adapters.
Success criteria
- Adding one qualified ACP agent does not require a client-specific integration.
- Every privileged action is attributable to principal, agent, adapter, tool, arguments, policy, approval, and execution evidence.
- Cancellation reaches a terminal state within a bounded period, including child-process cleanup.
- Cross-session and cross-tenant routing tests produce zero leakage.
- Provider usage reconciles with protocol telemetry within an explicit tolerance.
- Adapter upgrades can be rolled back without orphaning enterprise session records.
- Native integrations remain available when ACP cannot preserve required control or fidelity.
Claim register
Key conclusions are labeled by evidence state and mapped to the source registry.
Confirmed Confirmed
Directly supported by normative specifications, official releases, public code, or explicit implementation documentation.
Analysis Analysis
Derived from multiple confirmed facts. The inference is stated rather than presented as specification language.
Recommendation Recommendation
Enterprise architecture or operating guidance based on the evidence and risk model.
| ID | State | Claim | Evidence |
|---|---|---|---|
| C01 | Confirmed | ACP is an overloaded acronym covering Agent Client Protocol, retired Agent Communication Protocol, and Agentic Commerce Protocol. | [S01][S34][S37] |
| C02 | Confirmed | Agent Client Protocol v1 is the latest stable wire major; v2 is active but experimental. | [S03][S09][S14][S15] |
| C03 | Confirmed | Wire version, schema release, SDK release, adapter release, and runtime release are separate compatibility dimensions. | [S03][S14][S15][S17][S18] |
| C04 | Confirmed | Stable ACP is strongest for local editor-to-agent JSON-RPC over stdio; standard remote support remains in progress. | [S01][S02][S07][S11] |
| C05 | Analysis | Capabilities advertise syntax-level support but do not prove behavioral equivalence, durability, security, or cleanup. | [S03][S25][S29][S30][S31] |
| C06 | Confirmed | Public adapters are semantic translators and lifecycle supervisors, not thin wire-format wrappers. | [S17][S18][S25][S26] |
| C07 | Recommendation | An ACP session ID should not be the enterprise authorization, tenant, or audit root. | [S04][S21][S31] |
| C08 | Analysis | Permission requests are interaction primitives, not an enterprise authorization system. | [S06][S22][S23][S27][S32] |
| C09 | Confirmed | Adapter architecture can change which native policy and tool controls remain authoritative. | [S22][S23][S27] |
| C10 | Confirmed | V1 cancellation can be accepted while underlying work or child processes remain active. | [S05][S25] |
| C11 | Confirmed | The displayed transcript can diverge from model-effective context after runtime compaction. | [S26] |
| C12 | Confirmed | Private metadata and vendor extension profiles are already the practical fidelity layer above ACP’s common core. | [S03][S17][S18] |
| C13 | Confirmed | Registry inclusion proves discoverability and a limited handshake check, not conformance or enterprise approval. | [S16] |
| C14 | Analysis | Dynamic first-run package execution is unsuitable as an uncontrolled enterprise supply-chain pattern. | [S17][S22][S23] |
| C15 | Recommendation | Qualify the exact client × adapter × runtime × version × capability × extension × permission × transport profile. | [S17][S18][S19][S20][S21][S22][S23] |
| C16 | Confirmed | ACP, AG-UI, MCP, A2A, and Agentic Commerce ACP solve different boundaries and should be composed. | [S02][S34][S35][S37][S38][S39] |
| C17 | Confirmed | Do not select the retired Agent Communication Protocol for new work; A2A is its migration target. | [S34][S35][S36] |
| C18 | Confirmed | Agentic Commerce ACP is beta and separate from coding-agent ACP; its latest released snapshot is 2026-04-17. | [S37] |
| C19 | Recommendation | Describe remote ACP with an exact transport profile rather than the generic phrase “remote ACP.” | [S11][S20][S33][S40] |
| C20 | Recommendation | An enterprise ACP control plane should own qualification, normalization, policy mediation, lifecycle, credentials, telemetry, extensions, and supply chain. | [S17][S21][S22][S23][S25][S27] |
Evidence registry
Primary specifications and releases are authoritative for current state. Public issues identify failure modes, not prevalence.
Evidence hierarchy
- Normative specification and governance.
- Official release records.
- Public source code and official implementation documentation.
- Issue reports and operational observations.
- Cross-source analysis and enterprise recommendations.
Agent Client Protocol — Introduction
Normative orientationAgent Client Protocol
Defines ACP’s coding-client scope, stable local transport, and remote-support maturity.
Agent Client Protocol — Architecture
Normative architectureAgent Client Protocol
Documents JSON-RPC, bidirectional communication, trusted editor-agent assumptions, and MCP composition.
ACP v1 — Initialization
Normative specificationAgent Client Protocol
Defines wire-version negotiation, capabilities, implementation information, and baseline methods.
ACP v1 — Session Setup
Normative specificationAgent Client Protocol
Defines session creation, working directories, MCP configurations, loading, and additional roots.
ACP v1 — Prompt Turn
Normative specificationAgent Client Protocol
Defines prompt lifecycle, streaming updates, stop reasons, and cancellation.
ACP v1 — Tool Calls
Normative specificationAgent Client Protocol
Defines tool-call state, content, permission requests, and stable tool identity limits.
ACP v1 — Transports
Normative specificationAgent Client Protocol
Defines the stable local stdio transport.
Requests for Dialog Process
Governance processAgent Client Protocol
Defines Draft, Active, Preview, Completed, and removal states; Active is not a stability commitment.
ACP v2 Proposal
Active proposalAgent Client Protocol
Tracks planned breaking lifecycle, terminal, message, tool, diff, and permission changes.
ACP v2 — Prompt Lifecycle
Active proposalAgent Client Protocol
Separates prompt acceptance from completion and retains agent ownership of message IDs.
Streamable HTTP & WebSocket Transport
Active proposalAgent Client Protocol
Defines the proposed /acp remote transport and separates connection identifiers from authentication.
https://agentclientprotocol.com/rfds/streamable-http-websocket-transport
Agent Authentication State Query
Draft proposalAgent Client Protocol
Proposes auth/status and clarifies that configured credentials do not prove validity.
ACP Governance
GovernanceAgent Client Protocol
States joint Zed and JetBrains governance and intent to transition to an independent foundation.
ACP Schema and Rust Releases
Release evidenceGitHub — agentclientprotocol
Release record for v1 schema, v2 alpha schema, and Rust artifacts.
https://github.com/agentclientprotocol/agent-client-protocol/releases
ACP TypeScript SDK Releases
Release evidenceGitHub — agentclientprotocol
Release record for the TypeScript SDK and experimental v2 API.
https://github.com/agentclientprotocol/typescript-sdk/releases
ACP Agent Registry
Distribution evidenceGitHub — agentclientprotocol
Documents registry metadata, package refresh, and limited authMethods validation.
Codex ACP Adapter
Public implementationGitHub — agentclientprotocol
Translates ACP to Codex App Server operations and preserves native details through metadata.
Claude Agent ACP Adapter
Public implementationGitHub — agentclientprotocol
ACP adapter for Claude Agent SDK with permissions, background terminals, edit review, and MCP.
Gemini CLI ACP Mode
Public implementation documentationGitHub — google-gemini
Documents Gemini CLI stdio ACP mode, methods, and MCP integration.
https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/acp-mode.md
GitHub Copilot CLI ACP Server
Public implementation documentationGitHub Docs
Documents public-preview ACP support, stdio and port modes, CI, and custom frontend use.
https://docs.github.com/en/copilot/reference/copilot-cli-reference/acp-server
Zed ACP Client Source
Public client codeGitHub — Zed Industries
Shows connection, session, pending-session, capability, authentication, process, and dispatch state.
https://github.com/zed-industries/zed/blob/main/crates/agent_servers/src/acp.rs
OpenHands ACPAgent
Public host implementationOpenHands
Delegates model, tools, execution, and context to an ACP subprocess; documents automatic approvals.
OpenClaw ACP Agents
Public host implementationOpenClaw
Documents allowlists, permission modes, MCP bridges, background lifecycle, and cleanup.
OpenClaw ACP Server Mode
Public implementation documentationOpenClaw
Distinguishes OpenClaw acting as an ACP server from launching external ACP harnesses.
Claude ACP cancellation failure report #680
Implementation observationGitHub issue
Resolved failure where protocol cancellation did not interrupt a blocking background task.
https://github.com/agentclientprotocol/claude-agent-acp/issues/680
Claude ACP compaction visibility report #873
Implementation observationGitHub issue
Documents divergence between the displayed transcript and model-effective compacted context.
https://github.com/agentclientprotocol/claude-agent-acp/issues/873
Claude ACP permission-path report #94
Historical observationGitHub issue
Reported that an adapter path did not honor a native file-read permission setting.
https://github.com/agentclientprotocol/claude-agent-acp/issues/94
Gemini ACP stdout framing report #22647
Implementation observationGitHub issue
Documents plain-text stdout contaminating the JSON-RPC stream.
Gemini ACP sequential prompt report #24017
Implementation observationGitHub issue
Documents response routing and state behavior across sequential prompts.
Gemini ACP session lifecycle request #24811
Implementation observationGitHub issue
Illustrates lag between protocol lifecycle additions and implementation support.
Copilot ACP cross-process session report #1767
Implementation observationGitHub issue
Documents process-local session behavior despite session list/load concepts.
Copilot ACP permission request report #845
Historical observationGitHub issue
Reported tool calls being approved internally rather than surfaced through ACP permission requests.
Goose localhost ACP WebSocket report #8601
Security observationGitHub issue
Raises explicit-authentication and origin concerns around a localhost ACP WebSocket bridge.
Retired Agent Communication Protocol repository
Historical protocol evidenceGitHub — BeeAI
Archived August 27, 2025 and directs implementations to A2A.
A2A Releases
Adjacent release evidenceGitHub — A2A Project
Current stable agent-to-agent release record.
A2A Specification
Adjacent normative specificationA2A Project
Defines agent discovery, messages, tasks, artifacts, status, and transport bindings.
Agentic Commerce Protocol
Separate ACP protocolGitHub — OpenAI and Stripe
Beta commerce standard with date-versioned releases; latest released snapshot is 2026-04-17.
https://github.com/agentic-commerce-protocol/agentic-commerce-protocol
AG-UI Overview
Adjacent protocolAG-UI
Defines a general-purpose event-based agent-to-user application boundary.
Model Context Protocol Specification 2025-11-25
Adjacent normative specificationModel Context Protocol
Stable MCP specification at research time.
Goose Repository
Public implementationGitHub — AAIF
Open-source agent implementation with local and remote ACP integration work.
Update and research procedure
The guide is structured for revalidation without repeating the entire research process.
Update triggers
- A new ACP schema, SDK, Rust crate, or wire major.
- V2 or remote transport moves to Preview or Completed.
- Authentication, tool identity, proxy, MCP-over-ACP, or session RFD maturity changes.
- Governance moves to an independent foundation or decision authority changes.
- A major client or runtime changes ACP support.
- A2A, MCP, AG-UI, or Agentic Commerce ACP changes protocol boundaries.
- A security issue changes the recommended trust model.
Repeatable update workflow
Refresh normative state
Check protocol pages, releases, RFDs, governance, and registry.
Refresh implementation state
Review Codex, Claude, Gemini, Copilot, Zed, OpenHands, OpenClaw, Goose, and newly material implementations.
Run qualification profiles
Execute the contract suite against exact approved tuples and compare declared with verified capability records.
Reconcile adjacent protocols
Verify A2A, MCP, AG-UI, and Commerce ACP release state and boundaries.
Update claims and provenance
Change source mappings, evidence states, limitations, artifact version, timestamp, and embedded manifest.
Red-team the recommendation
Test whether new native capabilities, control gaps, governance changes, or failures change the adoption tier.
Current watchlist
Protocol
- V2 stabilization and migration guidance.
- Remote transport hardening and security audit.
- Authentication status and richer auth methods.
- Canonical tool identity and extension conventions.
- Replay, multi-client, and reconnect semantics.
Ecosystem
- Depth of implementation versus registry presence.
- Conformance tooling or certification.
- Foundation transition and governance consistency.
- Native/ACP parity for major agents.
- Signed distribution and supply-chain practices.
Methodology and limitations
This synthesis prioritizes official specifications, governance, releases, public source code, and official implementation documentation. Issue reports identify concrete failure modes. They do not establish prevalence and may describe resolved defects. No neutral conformance suite was executed against every implementation for this artifact. Some vendor runtime internals are not fully public. Version statements should be revalidated after the generated timestamp.