BuildNot yet confirmed elsewhere1 publisher2 min readPublished
A2A ships an official CLI after its community and SDK clients drifted apart
A2A has shipped a2a, an official command-line client built from its Go SDK's CLI, as one command surface for every A2A Protocol v1.0 agent. Scripts that broke when moved between drifting community and SDK clients now get one target to code against.
The Engineer · Build desk

What happened
- The project says shell scripts, scheduled jobs, build steps and test harnesses had no easy way to discover an agent's capabilities, message it or follow a task to completion.
- From a terminal, a2a fetches an agent card, sends a message and streams real-time task updates.
- A coding assistant given the a2a tool can hand work to specialized remote A2A agents without bespoke integration code, according to the project.
- Two built-in server modes ship with it: --echo returns the message as a connectivity check, and --exec serves any stdin-to-stdout program as an A2A agent.
- The project labels --echo and --exec as tools for learning, demos and testing, and says they are not for production.
Why it matters
- capability Integration tests for A2A clients can run against a script-backed agent, so a test suite no longer needs an SDK or a hand-written server to have something to call.
- constraint Because exit status decides task outcome, a wrapped script that exits non-zero on a mere warning will report a failed task to every client that calls it.
- decision Teams already scripting against a community or SDK client have to choose between porting to the official surface now and waiting to see whether their client converges on it.
Under `--exec`, the contract has three rules. The CLI writes the incoming message to the program's stdin and returns whatever it prints on stdout as the response [9]. Exit 0 succeeds and any non-zero code fails [9]. Stderr is logged and attached to the failure [9]. By that contract, `cat` is an A2A agent [13].
We think tying task outcome to process exit status is the right design. Exit status is the signal a CI runner already checks. Attaching stderr to the failure keeps the error text with the task that failed [9].
Streaming depends on the wrapped program too. Without `--chunk`, the server waits for the script to exit and returns everything it printed as one response [10]. With `--chunk` set to a newline, each line goes out as its own streamed piece [10]. That puts the program's output buffering inside the streaming path. The project's sample script calls `sys.stdout.flush()` after every line, and its docstring says to run it with `python3 -u` "so stdout is unbuffered and chunks stream promptly" [11].
For pipelines, the post promises protocol-native JSON output and predictable exit codes [1]. Output shape was one of the things the older community and SDK clients disagreed on, along with command names, flags and transport handling [4]. Building the official client from the Go SDK's CLI [5] makes that SDK's choices the reference point. In our view the official label ends the drift only when the clients in other languages converge on it or retire. The post does not say whether any of them will be deprecated.
What to watch
- Whether the other A2A SDKs retire their own CLIs or realign their commands, flags and output to the official a2a surface.
- Publication of the exit-code table and JSON output schema that CI jobs built on a2a would parse.
- Whether a2a handles agents that do not yet speak A2A Protocol v1.0.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence40
- Adoption
- Insufficient
- Hype gap+15
- Incentives65
- Confidence50
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
Protocol-native JSON output and predictable exit codes make a2a easy to drop into pipelines, bridging non-A2A systems to A2A agents.
ReportedSupportedSource: A2A project blog2 sources— create a free account to open themView cited source - [2]
From the terminal, the CLI can fetch an agent card, send a message and stream real-time updates.
ReportedSupportedSource: A2A project blog2 sources— create a free account to open themView cited source - [3]
The A2A CLI (a2a) is the official command-line client: one standard command surface for every A2A agent.
- [4]
As the ecosystem grew, community and SDK-provided CLIs appeared across languages and drifted apart, with different command names, flags, output shapes and transport handling; a script written for one did not work with another.
- [5]
The A2A CLI is built on the CLI from the A2A Go SDK and speaks A2A Protocol v1.0.
- [6]
Given the a2a tool, a coding agent can offload work to specialized remote A2A agents with no bespoke integration code.
- [7]
The CLI ships two built-in server modes: --echo sends the message straight back, a 'ping' for A2A and the fastest way to confirm a connection; --exec turns any program that reads stdin and writes stdout into a working A2A server.
- [8]
--echo and --exec are built for learning, demos and testing, not for production.
- [9]
Under --exec, the CLI passes the incoming message on stdin and turns whatever the program prints on stdout into the response. Exit 0 succeeds; non-zero fails. stderr is logged and attached to the failure. Any language that can read stdin and write stdout qualifies.
- [10]
Without --chunk, --exec waits for the script to finish and returns everything it printed as one response; with --chunk set to a newline, each line is delivered as its own streamed piece.
- [11]
The project's sample script calls sys.stdout.flush() after each line, and its docstring says: Use `python3 -u` "so stdout is unbuffered and chunks stream promptly."
- [12]
Shell scripts, scheduled jobs, build steps, test harnesses and people at a terminal cannot easily discover an agent's capabilities, send it a message, or follow a task to completion.
- [13]
Under the --exec contract, a program such as cat, which reads stdin, writes the text to stdout and exits 0, would be served as a working A2A agent.
Sources
1 independent publisher whose own reporting we read for this story.
- Meet the A2A CLI: discover, message, and manage agents from your terminal
a2a-protocol.org
1 article · October 10, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- Developer command-line toolsFollow
- Agent Interoperability ProtocolsFollow