Skip to content

feat: add --a2a-version to select the A2A protocol version #32

Description

@msampathkumar

Goal: Let a caller choose and pin the A2A protocol version the CLI uses to talk to an agent.
User story: As an operator talking to a version-sensitive agent, I want to pin the protocol version via a flag or config, so that my calls use the version the agent expects instead of a silent default.

Priority: P2 · Area: CLI code

Problem

There is no way to set the protocol version the CLI signals to a server:

$ a2a send ... --a2a-version 1.0 'hi'
Error: unknown flag: --a2a-version

Without an explicit value, a server may assume an older default, and callers cannot pin a version to talk to agents that require a specific one.

Proposed behavior

  • Add a --a2a-version <version> flag.
  • Make it a configurable default too: A2ACLI_A2A_VERSION (env / .env), overridable with the standard precedence (flag > env > file > built-in).
  • The chosen version is signaled on every request across transports (HTTP header or gRPC metadata).
  • Absent an explicit value, negotiate to the highest version supported by both the tool and the agent.
  • Surface a version-unsupported error clearly rather than silently downgrading.
  • a2a config show reports the effective value and where it resolved from.

Who benefits

  • Callers talking to agents that require a specific protocol version.
  • Operators who want a fixed version across a fleet via a single env var or .env.

Acceptance criteria

  • --a2a-version flag and A2ACLI_A2A_VERSION config setting exist with correct precedence.
  • The version is signaled on every request.
  • a2a config show reports the effective value and its source.

Environment

  • CLI version: a2a version v0.0.0-…1e29dfe94f95+dirty
  • OS: Linux x86_64

Notes

Check whether version negotiation is already handled inside the underlying a2a-go/v2 SDK (transport factory) so the flag wires through rather than duplicating logic. Related work may be in flight in PR #23 — coordinate to avoid duplication.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Priority 2 — ergonomics/polish with a workaroundenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions