You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: gRPC errors do not include google.rpc.ErrorInfo #731
gRPC errors from the SUT do not include google.rpc.ErrorInfo in the status details, which is required by the A2A specification for all A2A-specific errors.
Requirement
ID: GRPC-ERR-001
Section: 10.6 — A2A errors include ErrorInfo in status details
For A2A-specific errors, implementations MUST include a google.rpc.ErrorInfo message in the status.details array with:
reason: The A2A error type in UPPER_SNAKE_CASE without the "Error" suffix (e.g., TASK_NOT_FOUND)
domain: Set to "a2a-protocol.org"
metadata: Optional map of additional error context
Expected behavior
When the SUT returns an A2A-specific error (e.g., TaskNotFoundError), the gRPC response should include a google.rpc.Status with a google.rpc.ErrorInfo message in the details array, encoded in the grpc-status-details-bin trailing metadata. The ErrorInfo should have reason set to the error type in UPPER_SNAKE_CASE (e.g., TASK_NOT_FOUND) and domain set to "a2a-protocol.org".
Actual behavior
The SUT returns a plain gRPC NOT_FOUND status with a message string but does not include google.rpc.ErrorInfo in the status details. The grpc-status-details-bin trailing metadata is missing or does not contain an ErrorInfo entry.
Reproducer
# Trigger TaskNotFoundError by requesting a non-existent task
grpcurl -plaintext -d '{"id": "tck-nonexistent-task-001"}' \
localhost:9999 lf.a2a.v1.A2AService/GetTask
# Expected: gRPC NOT_FOUND with google.rpc.ErrorInfo in status.details:# reason: "TASK_NOT_FOUND"# domain: "a2a-protocol.org"## Actual: gRPC NOT_FOUND without ErrorInfo in grpc-status-details-bin
This looks fixed by #743 (2026-03-25) — GrpcHandler.handleError() already builds google.rpc.ErrorInfo{reason: errorCode.name(), domain: "a2a-protocol.org"} and packs it into status.details. Ran GrpcHandlerTest#testOnGetTaskNotFound on current main: ErrorInfo is present with domain=a2a-protocol.org and reason=TASK_NOT_FOUND (verified the exact value, not just non-empty). Can this be closed?
Activity
fix: Include google.rpc.ErrorInfo in gRPC error status details
serhiy-bzhezytskyy commentedon Sep 16, 2026
This looks fixed by #743 (2026-03-25) —
GrpcHandler.handleError()already buildsgoogle.rpc.ErrorInfo{reason: errorCode.name(), domain: "a2a-protocol.org"}and packs it intostatus.details. RanGrpcHandlerTest#testOnGetTaskNotFoundon currentmain:ErrorInfois present withdomain=a2a-protocol.organdreason=TASK_NOT_FOUND(verified the exact value, not just non-empty). Can this be closed?