Glossary · A2A concepts

Task state

The TaskState value in an A2A task's status: submitted, working, waiting for input or authorization, or one of four terminal outcomes.

A task state is the TaskState enum value in a task’s status.state field that tells a client where the task is in its lifecycle. A2A v1.0 defines eight lifecycle values, plus TASK_STATE_UNSPECIFIED for an unknown or indeterminate state (a2a.proto).

v1.0 value v0.3 string Kind
TASK_STATE_SUBMITTED submitted In progress: submitted and acknowledged
TASK_STATE_WORKING working In progress: being processed
TASK_STATE_INPUT_REQUIRED input-required Interrupted: needs input from the client
TASK_STATE_AUTH_REQUIRED auth-required Interrupted: needs authorization
TASK_STATE_COMPLETED completed Terminal: finished successfully
TASK_STATE_FAILED failed Terminal: finished with an error
TASK_STATE_CANCELED canceled Terminal: canceled before completion
TASK_STATE_REJECTED rejected Terminal: the agent decided not to perform it

In v0.3, the string unknown played the role of TASK_STATE_UNSPECIFIED.

Encoding. v1.0 JSON follows ProtoJSON, so the state is the enum name as a string (section 5.5). It sits in a TaskStatus object next to an optional status message and a timestamp:

{"state": "TASK_STATE_WORKING", "timestamp": "2026-09-25T14:03:11.482Z"}

Why the groups matter. A blocking Send Message call returns once the task reaches a terminal or an interrupted state (section 3.2.2). A streaming response for a task closes when it reaches a terminal state. Interrupted tasks still accept messages on the same task; terminal tasks do not, and follow-up work needs a new task. Clients can filter List Tasks by state, for example to find every task still in TASK_STATE_WORKING.

Extending states. The A2A extensions guide says extensions should not add values to enums such as this one. An extension that needs a finer-grained status should keep the standard state and put the extra meaning in metadata.

Sources

  1. A2A protocol definition (a2a.proto): TaskState, TaskStatus (accessed )
  2. A2A Protocol Specification, section 3.2.2: SendMessageConfiguration (execution mode) (accessed )
  3. A2A Protocol Specification, section 5.5: JSON Field Naming Convention (accessed )
  4. A2A v0.3.0 type definitions (types.ts): TaskState (accessed )
  5. A2A documentation: Extensions (limitations) (accessed )