github a2aproject/a2a-go v2.8.0

one hour ago

2.8.0 (2026-11-06)

Features

  • a2aacp: add an A2A agent executor for Agent Client Protocol (ACP) agents (#491, #492, #493, #494, #530, #545, #548, #552, #562)
  • a2agrpc: add GRPCConnectionPool for gRPC client connection reuse (fixes #109) (#382) (a2411f7)
  • a2asrv: add NewErrorSanitizer, an opt-in interceptor which logs request errors in full and sends clients only A2A errors (#552) (ece71bc)
  • a2asrv: agent card HTTP caching (ETag/304, opt-in Cache-Control) (#496) (313efd9)
  • implement structured input extension (#490) (367f987)

Bug Fixes

  • a2aclient: honor API key security scheme Location (#497) (c59beb5)
  • a2aclient: honor configured HTTP authentication schemes (#502) (413de0c)
  • a2aclient: normalize service param keys set by the client and AuthInterceptor (#479) (96f4df0)
  • a2aclient: return JSON-RPC errors from non-200 responses (#559) (97f1fac)
  • a2acrypto: reject malformed Unicode before signing (#450) (ec6cb14)
  • a2aevent: preserve input-required history order (#501) (72f94a3)
  • a2aevent: recover the whole artifact when it changes in place (#485) (4d61739)
  • a2a: round-trip null data and nil raw parts through JSON (#513) (186decc)
  • a2asrv: make ServiceParams.With nil-safe (#544) (c6042b8)
  • a2asrv: preserve escaped tenant REST paths (#514, #562) (f86cf6c)
  • a2asrv: preserve numeric precision in raw card ETags (#546) (18c2e72)
  • a2asrv: reject HEAD before creating task subscriptions (#481) (e641e3c)
  • a2asrv: split comma-separated A2A-Extensions values (#519) (db83820), closes #516
  • a2av0: keep security schemes and v0.3 interface in extended agent cards (#558) (196d4bb), closes #556
  • client: accept cached status and artifact stream events (#508) (ea78132)
  • client: honor streaming interceptor error recovery (#507) (737b626)
  • client: keep propagated tenants local to each call (#495) (0eaf017)
  • client: preserve escaped REST path segments (#488) (8880d8f)
  • compare and send A2A-Version as Major.Minor (#555) (b5ea753)
  • don't fail CancelTask when the canceled execution ends first (#521) (1613ae6), closes #518
  • don't move a task to FAILED when cancelation retries run out (#522) (247933b)
  • jsonrpc: return empty result for successful push config deletion (#525) (42d0738)
  • pass CancelTask metadata over REST (#520) (a104b2e), closes #517
  • pbconv: preserve JSON data part values (#503) (7c040e0)
  • pbconv: send pkceRequired for authorization code flows (#542) (cb2c30b)
  • push: cap push notification configs per task (#405) (6bb5a68)
  • report executions or cancelations in progress, and messages to terminal tasks in cluster mode, as UnsupportedOperation (#552) (ece71bc)
  • sse: ignore a leading UTF-8 byte order mark (#511) (248f628)
  • taskexec: keep the error when broadcasting an event fails (#536) (636fa9f)
  • taskexec: report canceler panics during concurrent cancelation (#535) (7ffc680)
  • taskexec: skip heartbeats for non-positive intervals (#543) (c4158ae)
  • taskexec: wait for the cancelation result of input-required tasks (#560) (3194abe)

Don't miss a new a2a-go release

NewReleases is sending notifications on new releases.