Skip to content

A2A v1 Compatibility Matrix

Last reviewed: 2026-08-10.

This matrix records the repository-backed compatibility status for the Agent2Agent v1 line. A2A Mesh targets the official v1.0 method surface and keeps selected legacy aliases only where they are already covered by tests.

Method surface

A2A operationRuntimeClient SDKCLIREST bindingSSEWebSocketgRPCVerificationStatus
message/sendhandleRpcRequestsendMessagea2amesh sendPOST /message:sendNot requiredContract transportContract transportUnit, integration, conformance, examplesSupported
message/streamSSE handlersendMessageStreamConformance commandPOST /message:streamCanonical pathContract transportContract transportUnit, integration, conformance, transport contractSupported
tasks/getTask lookup with authzgetTaska2amesh task statusGET /tasks/{taskId}N/AContract transportContract transportUnit, integration, transport contractSupported
tasks/listTask listing with tenant/context filterslistTasksRegistry/task flowsGET /tasksN/AContract transportContract transportUnit, performance smoke, transport contractSupported
tasks/cancelLifecycle transition guardcancelTaskTask command pathPOST /tasks/{taskId}:cancelN/AContract transportContract transportUnit, integration, transport contractSupported
tasks/resubscribeStreaming reattachsubscribeTaskConformance commandGET /tasks/{taskId}:subscribeCanonical pathContract transportContract transportUnit, conformance, transport contractSupported
tasks/pushNotificationConfig/createCallback config normalization and storagecreatePushNotificationConfigN/APOST /tasks/{taskId}/pushNotificationConfigsN/AContract transportContract transportUnit, integration, transport contractSupported
tasks/pushNotificationConfig/getConfig lookupgetPushNotificationConfigN/AGET /tasks/{taskId}/pushNotificationConfigs/{configId}N/AContract transportContract transportUnit and transport contractSupported
tasks/pushNotificationConfig/listConfig list resultlistPushNotificationConfigsN/AGET /tasks/{taskId}/pushNotificationConfigsN/AContract transportContract transportUnit and transport contractSupported
tasks/pushNotificationConfig/deleteConfig removaldeletePushNotificationConfigN/ADELETE /tasks/{taskId}/pushNotificationConfigs/{configId}N/AContract transportContract transportUnit and transport contractSupported
GetExtendedAgentCardOfficial-v1 mapping to authenticated card lookupgetExtendedAgentCardN/AGET /extendedAgentCardN/ANot exposedNot exposedUnit, integration, conformanceSupported
agent/getAuthenticatedExtendedCardMesh compatibility method retainedgetAuthenticatedExtendedCardN/AJSON-RPC onlyN/ANot exposedNot exposedUnit, integration, conformanceMesh compatibility
agent/authenticatedExtendedCardLegacy alias retainedauthenticatedExtendedCardN/AJSON-RPC onlyN/ANot exposedNot exposedUnit and integration testsLegacy alias

Protocol negotiation and metadata

CapabilityImplementationVerificationStatus
A2A-Version header negotiationRuntime HTTP middleware, client headers, WebSocket query negotiation, gRPC metadata pathsUnit, transport, and compatibility testsSupported
application/a2a+json REST media typeREST binding responses and protocol-version errorsUnit testsSupported
Required extension rejectionRuntime message configuration validationUnit and integration testsSupported
Optional extension passthroughTask/message extension propagationUnit tests and golden tracesSupported
Agent Card signingRuntime/registry signing and verification helpersUnit tests and registry hardening testsSupported
JSON-RPC error normalizationOfficial-v1 response projection plus REST semantic/status mapping; mesh codes stay compatibleUnit, fuzz, and integration testsSupported
Tenant-aware task authorizationRuntime and registry request context filtersUnit and integration testsSupported

Official v1 JSON-RPC method names are projected to the A2A v1 error identities at the response boundary. GetTask task misses use TaskNotFoundError (-32001), terminal CancelTask requests use TaskNotCancelableError (-32002), terminal message/subscribe lifecycle failures use UnsupportedOperationError (-32004), and required-extension failures use ExtensionSupportRequiredError (-32008). The equivalent REST routes use the same semantic mapping for HTTP status and problem details. Legacy Mesh JSON-RPC method names retain their historical internal error codes for compatibility.

The conformance fixtures additionally execute the exact public Agent Card discovery path, validate interface and extension metadata, reject unsupported required extensions and protocol versions, and compare JSON-RPC/REST task and push configuration results. SSE version rejection runs in the same suite. WebSocket and gRPC implement the canonical A2A v1 operation set declared by the shared transport contract. Transport-specific framing, authentication hooks, malformed input handling, stream cleanup, and version rejection are exercised by their package tests.

Fixture ownership

Fixture surfaceRepository evidenceProfile/classificationOwning areaRequired gate
Version negotiationtests/conformance/fixtures/compatibility/version-negotiation.jsonOfficial v1.0 default, legacy 0.3, experimental v1.2 opt-inProtocol and runtimeConformance plus shared transport contract
Authenticated extended cardtests/conformance/fixtures/compatibility/authenticated-extended-card.jsonCanonical official method, Mesh compatibility method, and legacy aliasRuntime and securityConformance
Signed Agent Card trusttests/conformance/fixtures/compatibility/signed-agent-card.jsonOfficial v1.0Security and interopConformance and schema checks
Cross-transport version rejectiontests/transport-contract/transportContract.tsShared HTTP/SSE, WebSocket, and gRPC behaviorTransport maintainersTransport contract and package unit tests

The compatibility fixtures are offline and checked in. Signed-card evidence contains only public keys, compact JWS values, the canonical payload, and its SHA-256 digest. Private keys must never be committed. When rotating fixture keys, security reviewers own the trust-failure cases, protocol reviewers own the canonical payload and profile classification, and transport maintainers own their contract adapters. The detailed fixture maintenance rules live beside the fixtures in tests/conformance/fixtures/compatibility/README.md.

Compatibility policy

  • Official v1.0 methods must be covered by at least one runtime test and one integration or conformance test before they are marked supported.
  • Legacy aliases may remain only when they are documented and covered by tests.
  • Experimental v1.2 features must require explicit opt-in and must not replace the v1.0 default path.
  • New transports must share the same task lifecycle, error, version-negotiation, and authorization semantics as HTTP JSON-RPC.

Released under the Apache-2.0 License.