What happened?
Server does not validate A2A-Version header — missing VersionNotSupportedError for unsupported versions
Summary
The a2a-python SDK server does not validate the A2A-Version request header. Requests with unsupported versions (e.g., 99.0) are processed normally instead of returning a VersionNotSupportedError, failing on both JSON-RPC and HTTP+JSON transports.
Requirement
Specification
Agents MUST process requests using the semantics of the requested A2A-Version (matching Major.Minor). If the version is not supported by the interface, agents MUST return a VersionNotSupportedError.
Expected behavior
When a request includes A2A-Version: 99.0, the server should reject it with a VersionNotSupportedError:
- JSON-RPC: error response with code
-32009
- HTTP+JSON: HTTP
400 Bad Request
Actual behavior
The server ignores the A2A-Version header entirely and processes the request normally, returning a successful result (HTTP 200) on both transports. The SDK defines VersionNotSupportedError and its error code mappings (src/a2a/utils/errors.py) but the server request handlers (jsonrpc_handler.py, rest_handler.py) never read or validate the header.
Reproducer
# 1. Verify the agent is running
curl -s http://localhost:9999/.well-known/agent-card.json | jq '.supportedInterfaces'
# 2. JSON-RPC: Send a request with unsupported A2A-Version 99.0
# Expected: JSON-RPC error with code -32009
# Actual: successful result with task data
curl -s -X POST http://localhost:9999 \
-H "Content-Type: application/json" \
-H "A2A-Version: 99.0" \
-d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"role":"ROLE_USER","parts":[{"text":"version test"}],"messageId":"ver-repro-001"}}}' | jq .
# 3. HTTP+JSON: Send a request with unsupported A2A-Version 99.0
# Expected: HTTP 400 with VersionNotSupportedError
# Actual: HTTP 200 with successful task result
curl -s -w "\nHTTP_STATUS: %{http_code}\n" -X POST http://localhost:9999/a2a/rest/message:send \
-H "Content-Type: application/json" \
-H "A2A-Version: 99.0" \
-d '{"message":{"role":"ROLE_USER","parts":[{"text":"version test"}],"messageId":"ver-repro-002"}}'
TCK test
tests/compatibility/core_operations/test_error_handling.py::TestVersionErrors::test_unsupported_version_returns_error_jsonrpc
tests/compatibility/core_operations/test_error_handling.py::TestVersionErrors::test_unsupported_version_returns_error_rest
Relevant log output
Code of Conduct
What happened?
Server does not validate A2A-Version header — missing VersionNotSupportedError for unsupported versions
Summary
The a2a-python SDK server does not validate the
A2A-Versionrequest header. Requests with unsupported versions (e.g.,99.0) are processed normally instead of returning aVersionNotSupportedError, failing on both JSON-RPC and HTTP+JSON transports.Requirement
Specification
Expected behavior
When a request includes
A2A-Version: 99.0, the server should reject it with aVersionNotSupportedError:-32009400 Bad RequestActual behavior
The server ignores the
A2A-Versionheader entirely and processes the request normally, returning a successful result (HTTP 200) on both transports. The SDK definesVersionNotSupportedErrorand its error code mappings (src/a2a/utils/errors.py) but the server request handlers (jsonrpc_handler.py,rest_handler.py) never read or validate the header.Reproducer
TCK test
Relevant log output
Code of Conduct