ACPAgent Protocols ReferenceArchitecture, implementation evidence, and adoption guidance
Final research synthesis

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.

Decision: adopt ACP v1 as a qualified harness interfaceDo not treat it as: authorization, sandbox, workflow engine, or universal agent busEvidence: 40 primary and public-code sources
01
Orientation

Executive 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.

ACP provides

A common interaction envelope

Initialization, sessions, prompts, streamed messages, plans, diffs, tool progress, permissions, and MCP configuration.

ACP does not provide

An enterprise trust plane

Identity binding, rights, authorization, credential brokerage, containment, durable workflow, and complete audit remain external.

Primary risk

Semantic translation

Interoperability failures concentrate in session meaning, cancellation, permissions, context, tool identity, extensions, and cleanup.

The ACP namespace collision

ProtocolBoundaryCurrent stateDecision
Agent Client ProtocolIDE, editor, CLI, or coding client ↔ coding agentWire v1 latest; v2 active proposal; remote transport active proposalAdopt v1 selectively behind a control plane. [S01][S03][S09][S11]
Agent Communication ProtocolAgent ↔ agentArchived August 27, 2025 and moved into A2ADo not select for new work. [S34][S35]
Agentic Commerce ProtocolBuyer agent ↔ merchant, checkout, order, and payment systemsBeta; latest released snapshot 2026-04-17Evaluate only for commerce. [S37]
Three unrelated protocol families use the acronym ACPACPambiguous acronymAgent Client Protocolcoding client ↔ coding agentACTIVE · V1 STABLEAgent CommunicationProtocolagent ↔ agentRETIRED → A2AAgentic CommerceProtocolbuyer agent ↔ merchantBETA · 2026-04-17

Always use the full protocol name in architecture, code, policy, and procurement. [S01][S34][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 protocol boundary mapDeveloper or userhuman intentIDE / coding clientcoding experienceGeneral applicationagent-user experienceCoding agentruntime and planningGeneral agentapplication backendCapability planetools, data, resourcesOther agentsdelegationCommercemerchant + paymentACPAG-UIMCPA2ACommerce ACPEnterprise trust and governance planeidentity · policy · rights · credentials · sandbox · audit

ACP covers the coding-client boundary. AG-UI covers general application frontends. MCP exposes capabilities. A2A delegates to independent agents. Commerce ACP covers transactions. [S02][S35][S37][S38][S39]

02
Normative 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.

Wire protocol
1
Stable major negotiated during initialize
Schema artifacts
1.20.0
Latest v1 schema; v2.0.0-alpha.2 is prerelease
TypeScript SDK
1.3.0
Released July 21, 2026 with experimental v2 API
SurfaceResearch-time valueMeaningRequired handling
Wire major1Breaking JSON-RPC compatibility levelNegotiate and fail closed. [S03]
v1 schema1.20.0Generated schema releasePin validation and code generation. [S14][S15]
v2 schema2.0.0-alpha.2Experimental artifactFeature-flag only. [S14][S15]
TypeScript SDK1.3.0Library API and bundled schemasRecord separately from the wire version. [S15]
Rust crate1.6.0Rust protocol artifactPin independently. [S14][S15]
Adapter/runtimeImplementation-specificSemantic translation and vendor behaviorQualify exact combinations. [S17][S18]
DraftChampion accepted the proposal. Design or implementation may be incomplete.
ActiveMaintainer focus exists. This is not a stability commitment.
PreviewImplemented and seeking broad review.
CompletedImplementation is merged; this is the relevant stabilization signal.

Confirmed Active is a visibility and focus signal, not final approval. [S08]

Stable v1 lifecycle

ACP v1 session lifecycleClientACP agentMCP / runtimeinitialize(version, capabilities)chosen version + capabilities + auth methodssession/new(cwd, MCP servers)sessionIdsession/prompt(content blocks)tool / MCP / shell worksession/update: plan, message, tool, diffsession/request_permission(options)selected optionId or cancelledtool result / runtime eventprompt result + stopReasonoptional list / resume / close when advertised

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]

Declared capability

“This method is available.”

Useful for syntax-level negotiation and graceful degradation.

Qualified capability

“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]

AreaV1V2 directionWhy it matters
Prompt lifecycleRequest lasts until the turn endsRequest returns when acceptedSupports background work and multi-client updates. [S10][S25]
MessagesMostly chunks; IDs may be optionalAgent-owned IDs and message upsertsImproves replay, sync, and deduplication.
Tool callsInitial and update variantsUnified upsert modelSimplifies reconciliation.
File changesText before/afterGit patches and structured operationsSupports add, delete, move, copy, and non-text changes.
Terminal/filesystemClient may expose execution APIsAgent-owned execution; display-only outputClarifies the security boundary.
Session lifecycleCapability-dependent and unevenMore consistent baselineReduces 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.3

Copilot 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]

03
Public code and operations

Implementation evidence

Public repositories confirm real adoption and expose the semantic gaps hidden by a common wire format.

Implementation corpus

ImplementationRolePatternSignificance
Gemini CLINative agentgemini --acp over stdioNative protocol implementation with MCP and public lifecycle/framing issue history. [S19][S28][S29][S30]
GitHub Copilot CLIFirst-party agentPublic-preview server; stdio or portExtends ACP into CI, custom frontends, and multi-agent use. [S20][S31][S32]
Codex ACPAdapterACP ↔ Codex App ServerRich event translation, authentication, models, sandbox, MCP, subagents, and metadata. [S17]
Claude Agent ACPAdapterACP ↔ Claude Agent SDKPermissions, edit review, background terminals, slash commands, MCP, and lifecycle gaps. [S18][S25][S26][S27]
ZedClientNative editor clientMaintains connection, process, pending-session, capability, auth, dispatch, and debug state. [S21]
OpenHandsHostACP subprocess backendDelegates model, tools, execution, and context; documents automatic permission approval. [S22]
OpenClawHarness managerManaged external runtimesUses allowlists, permission profiles, MCP bridges, background state, and cleanup. [S23][S24]
GooseAgent/platformLocal and remote ACP workShows pressure to use ACP as a broader harness boundary and raises remote trust questions. [S33][S40]

Findings that improve the architecture stance

1

Adapters are compatibility products

Codex ACP translates to a separate App Server and preserves native fidelity through namespaced metadata. Claude ACP maps background terminals, permissions, edit review, and runtime events. The adapter owns semantic translation, not merely serialization. [S17][S18]

2

Session identity is implementation-local

An ACP session can map to a vendor thread, SDK query, process-local conversation, durable record, host binding, or several at once. Cross-process behavior is not guaranteed. [S04][S21][S31]

3

Cancellation needs escalation beyond JSON-RPC

A resolved Claude issue documented a blocking background task that did not stop through the effective cancellation path. A supervisor needs a grace timeout, process-group kill, and orphan reaping. [S05][S25]

4

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]

5

Adapter paths can bypass native controls

A historical Claude issue reported file-read behavior that did not honor a native settings permission. OpenHands delegates tool ownership to the ACP server and auto-approves requests. Control ownership must be explicit. [S22][S27]

6

Stdio is simple but operationally fragile

Gemini issue history includes non-JSON stdout corrupting the wire and prompt-routing state failures. Hosts need strict framing, stderr isolation, message limits, process control, and crash classification. [S28][S29]

7

Extensions carry native fidelity

Codex uses namespaced metadata for subagents and other native details. Hosts add permission profiles, model settings, and private methods. Portability declines as native fidelity increases. [S03][S17][S23]

8

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 policy

Assumption audit

Initial assumptionVerdictImproved stance
ACP is mainly an IDE protocolNormatively true; operationally narrowCoding remains central, but ACP is already used in CI, custom frontends, harnesses, and orchestration. [S01][S20][S22][S23]
V1 is production-readyConditionalProduction-usable only for qualified combinations behind external controls.
Capabilities provide portabilitySyntactic onlyBehavioral and security conformance must be tested separately. [S03][S25][S29][S31]
Permissions are primarily UXConfirmed, with higher riskAdapters can bypass native controls and hosts can auto-approve. Use independent policy and enforcement. [S22][S27][S32]
ACP and MCP are complementaryConfirmedThe ACP runtime may still displace the host capability plane; ownership must be explicit. [S02][S22][S23]
Adapters are advisableUnderstatedA managed compatibility adapter is architecturally mandatory.
Registry listing indicates compatibilityFalse beyond discoverabilityTreat registry entries as candidates, not approved agents. [S16]
V2 addresses future sophisticationUnderstatedV1 failures show an immediate need for clearer lifecycle and identity semantics. [S10][S25][S26]
Agents become interchangeableFalse behaviorallyThey become launchable and renderable through a shared envelope, not equivalent.
ACP should always replace native integrationsFalseUse native integration when ACP loses security-critical hooks, context fidelity, or lifecycle control.
04
Reference architecture

Enterprise ACP control plane

ACP should terminate inside a governed compatibility layer before work reaches an agent runtime.

Enterprise ACP control plane reference architectureACP clientIDE · CLI · portalEnterprise ACP control planetermination · qualification · policy · lifecycle · evidenceTransport adapterstdio / qualified remoteProtocol validatorschema · limits · orderingCompatibility profilecapabilities · extensionsCanonical sessionsenterprise IDs · mappingPolicy mediatorrights · approvals · grantsCredential brokerdelegation · short-lived tokensProcess supervisortimeouts · reaping · limitsAudit and telemetryprovenance · usage · evidenceQualified adapterCodex · Claude · Gemini · Copilotversion + digest + profileSandboxed runtimefilesystem · process · networkresource and secret boundariesGoverned capability planeMCP gateway · tools · datarights-aware enforcementACPIdentity · tenant · rights · geography · purpose · risk · approval · audit contextNo protocol identifier is accepted as proof of authority.

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

ConcernEnterprise platformACP adapterAgent runtime
Principal and tenant identityAccountablePropagates mapped contextConsumes; cannot redefine
Authorization and rightsAccountableTranslates protocol flowCannot override denial
Workspace grantsDefines roots and modesMaps to runtimeEnforced by sandbox
MCP allowlistOwns approved setInjects qualified configConsumes approved servers
Context condensationRequires provenanceCaptures boundariesMay perform native compaction
Permission UXOwns policy and approvalNormalizes requestsRequests actions
ExecutionSupervises limitsCoordinatesPerforms in sandbox
Cost and usageReconciles sourcesReports protocol dataProduces provider/runtime data
Session durabilityOwns enterprise recordMaps identifiersMaintains native state

Security and control model

ThreatEvidence basisRequired control
Native policy bypassAdapter can replace or reroute native tools. [S27]Test policy equivalence and enforce independently at sandbox and gateway.
Auto-approvalHeadless hosts may approve requests. [S22][S23][S32]Risk-tiered machine policy; deny by default for unqualified writes and execution.
Cancellation wedgeProtocol cancellation may not stop runtime work. [S05][S25]Grace timeout, process-group termination, orphan reaping, explicit terminal state.
Transcript/context divergenceCompaction can change model memory without exposing the summary. [S26]Persist context boundaries, summaries, transformations, and ownership.
Framing corruptionNon-JSON stdout can break NDJSON. [S28]Strict stdout isolation, bounded parser, stderr capture, circuit breaker.
Session confusionProcess-local mappings can break resume. [S04][S21][S31]Enterprise IDs, principal/workspace binding, expiry, mapping validation.
Remote endpoint abuseStable 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 driftExamples use first-run package fetches. [S17][S22][S23]Reproducible builds, SBOM, signing, internal registry, digest pinning, revocation.
Untrusted metadataNative fidelity uses open-ended metadata. [S03][S17][S23]Namespace registry, schema validation, limits, redaction, and no authority from metadata.

Permission decision chain

ACP permission requests feed enterprise policy and runtime enforcementAgent actionrequestedNormalizetool · args · cwd · targetPolicy decisionidentity · rights · riskHuman approvalwhen policy requiresMachine approvalbounded low-risk grantRuntime enforcementsandbox · gateway · targetdeny or invalidate changed operation

The ACP response is an interaction step. Authority comes from enterprise policy and enforcement, not an agent-supplied label. [S06][S22][S23][S27][S32]

05
Qualification

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

CapabilityDeclaredVerified behaviorEvidence retained
Session closeCapability advertisedMemory, child processes, MCP connections, and handles releasedTrace, process snapshot, resource delta
CancellationMethod availablePrompt settles; child work terminates within bounded graceWire trace, process tree, terminal state
ResumeMethod availablePrincipal, tenant, workspace, runtime version, and native mapping validatedMapping record and denial tests
PermissionsRequests emittedRejection prevents action; changed arguments invalidate approvalPolicy decision and operation digest
UsageUpdates emittedNormal, cancelled, cached, and reasoning usage reconcilesProtocol 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.

06
Protocol selection

Adjacent protocols and the other ACPs

Use each protocol at its intended boundary. Do not force one protocol to become the entire agent platform.

RequirementPrimary protocol or systemWhy
Connect coding agents to IDEsAgent Client ProtocolSessions, prompts, plans, diffs, tool progress, permissions, editor context. [S01][S02]
Connect a general agent backend to a web or mobile appAG-UIGeneral event stream, shared state, frontend tools, and user interaction. [S38]
Expose tools, prompts, resources, and dataMCPCapability boundary behind agents and applications. [S02][S39]
Delegate tasks between independent agentsA2ADiscovery, tasks, artifacts, status, streaming, and remote coordination. [S35][S36]
Execute agent-mediated checkoutAgentic Commerce ACPCart, feed, order, authentication, payment, and merchant flows. [S37]
Durable retries, compensation, and state machinesWorkflow engineAgent protocols do not replace durable workflow semantics.
Identity, rights, and authorizationEnterprise trust planeNo agent protocol is the complete governance system.
Event fan-outEvent platformUse 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]

07
Decision and execution

Adoption tiers

Match deployment risk to protocol and implementation maturity.

Tier 1 · Approved

Local, interactive, supervised v1

  • Stdio transport.
  • Pinned adapter and runtime.
  • Sandboxed execution.
  • Governed MCP gateway.
  • Human permission mediation.
  • Qualified workspace roots and process cleanup.
Tier 2 · Conditional

Headless and background workloads

  • Explicit workload identity.
  • Non-interactive permission profile.
  • Immutable or disposable workspace.
  • Execution, cost, and duration quotas.
  • Reliable process-tree termination.
Tier 3 · Experimental

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.
Prohibited without remediation

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

1

Establish the canonical model

Define enterprise session IDs, events, action identity, approval evidence, context provenance, and terminal states before integrating agents.

2

Ship local ACP v1

Support initialization, new, prompt, cancel, and update. Add optional methods only after capability negotiation and qualification.

3

Add the compatibility registry

Track exact builds, digests, capabilities, extensions, permission modes, transport profiles, tests, gaps, and revocation.

4

Integrate identity, policy, sandbox, and MCP

Do not allow the adapter to become the only enforcement point.

5

Qualify headless operation

Add workload identity, non-interactive policy, quotas, immutable workspaces, and deterministic cleanup.

6

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.
08
Auditability

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.

IDStateClaimEvidence
C01ConfirmedACP is an overloaded acronym covering Agent Client Protocol, retired Agent Communication Protocol, and Agentic Commerce Protocol.[S01][S34][S37]
C02ConfirmedAgent Client Protocol v1 is the latest stable wire major; v2 is active but experimental.[S03][S09][S14][S15]
C03ConfirmedWire version, schema release, SDK release, adapter release, and runtime release are separate compatibility dimensions.[S03][S14][S15][S17][S18]
C04ConfirmedStable ACP is strongest for local editor-to-agent JSON-RPC over stdio; standard remote support remains in progress.[S01][S02][S07][S11]
C05AnalysisCapabilities advertise syntax-level support but do not prove behavioral equivalence, durability, security, or cleanup.[S03][S25][S29][S30][S31]
C06ConfirmedPublic adapters are semantic translators and lifecycle supervisors, not thin wire-format wrappers.[S17][S18][S25][S26]
C07RecommendationAn ACP session ID should not be the enterprise authorization, tenant, or audit root.[S04][S21][S31]
C08AnalysisPermission requests are interaction primitives, not an enterprise authorization system.[S06][S22][S23][S27][S32]
C09ConfirmedAdapter architecture can change which native policy and tool controls remain authoritative.[S22][S23][S27]
C10ConfirmedV1 cancellation can be accepted while underlying work or child processes remain active.[S05][S25]
C11ConfirmedThe displayed transcript can diverge from model-effective context after runtime compaction.[S26]
C12ConfirmedPrivate metadata and vendor extension profiles are already the practical fidelity layer above ACP’s common core.[S03][S17][S18]
C13ConfirmedRegistry inclusion proves discoverability and a limited handshake check, not conformance or enterprise approval.[S16]
C14AnalysisDynamic first-run package execution is unsuitable as an uncontrolled enterprise supply-chain pattern.[S17][S22][S23]
C15RecommendationQualify the exact client × adapter × runtime × version × capability × extension × permission × transport profile.[S17][S18][S19][S20][S21][S22][S23]
C16ConfirmedACP, AG-UI, MCP, A2A, and Agentic Commerce ACP solve different boundaries and should be composed.[S02][S34][S35][S37][S38][S39]
C17ConfirmedDo not select the retired Agent Communication Protocol for new work; A2A is its migration target.[S34][S35][S36]
C18ConfirmedAgentic Commerce ACP is beta and separate from coding-agent ACP; its latest released snapshot is 2026-04-17.[S37]
C19RecommendationDescribe remote ACP with an exact transport profile rather than the generic phrase “remote ACP.”[S11][S20][S33][S40]
C20RecommendationAn enterprise ACP control plane should own qualification, normalization, policy mediation, lifecycle, credentials, telemetry, extensions, and supply chain.[S17][S21][S22][S23][S25][S27]
09
Provenance

Evidence registry

Primary specifications and releases are authoritative for current state. Public issues identify failure modes, not prevalence.

Evidence hierarchy

  1. Normative specification and governance.
  2. Official release records.
  3. Public source code and official implementation documentation.
  4. Issue reports and operational observations.
  5. Cross-source analysis and enterprise recommendations.
10
Maintenance

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

1

Refresh normative state

Check protocol pages, releases, RFDs, governance, and registry.

2

Refresh implementation state

Review Codex, Claude, Gemini, Copilot, Zed, OpenHands, OpenClaw, Goose, and newly material implementations.

3

Run qualification profiles

Execute the contract suite against exact approved tuples and compare declared with verified capability records.

4

Reconcile adjacent protocols

Verify A2A, MCP, AG-UI, and Commerce ACP release state and boundaries.

5

Update claims and provenance

Change source mappings, evidence states, limitations, artifact version, timestamp, and embedded manifest.

6

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.