a2aproject / a2aproject/A2A

[Extension Proposal] Liveness Attestation — verifiable proof that an agent actually responds

未关闭
#1,934 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Shell
星标
25.7k
派生
2.6k
平均合并
3 天 6 小时
30 天内合并 PR
16

描述

## Abstract

A **data-only extension** that lets an independent verifier publish signed, time-stamped attestations that an agent endpoint actually responds to real A2A traffic (`message/send`), and lets agents and registries embed those attestations in Agent Cards. Anyone can verify an attestation offline against the verifier's published JWKS.

## Motivation

Agent discovery today relies on self-declared Agent Cards and registry "health checks" that only test whether the card URL serves JSON. I measured the gap on 2026-06-12 across all 50 agents listed in a public community A2A registry:

| Check | Result |
|---|---|
| Registry marks agent healthy | 46/50 (92%) |
| Agent Card reachable (what health checks test) | 47/50 |
| **Responds to a real `message/send` with a JSON-RPC reply** | **21/50 (42%)** |
| Returns HTML / non-A2A content on an A2A request | 9/50 |
| Timeout, DNS failure, or 4xx/5xx | 20/50 |

Roughly half of the "healthy" agents cannot complete an A2A exchange at all. A client has no way to distinguish a live agent from an abandoned card without spending a call — which, for x402/paid agents, means spending money. The core protocol cannot fix this by design: liveness is inherently a **third-party claim** about an agent, not something an agent can credibly self-declare. (Methodology and raw probe results available; happy to attach as a gist.)

## Initial technical approach

Data-only extension (no changes to request/response flow, never `required: true`).

**Attestation** — a JWS issued by a verifier after a real probe:

```json
{
"iss": "https://verifier.example",
"sub": "https://agent.example/a2a",
"card_hash": "sha256:...",
"probed_at": "2026-06-12T13:40:00Z",
"result": "responded",
"latency_ms": 412,
"exp": 1765553000
}
```

(`result` is one of `responded | auth_gated | unreachable`.)

**Declaration** — the agent (or a registry, on the agent's behalf) embeds recent attestations:

```json
"capabilities": {
"extensions": [{
"uri": "/v1",
"description": "Signed liveness attestations from independent verifiers",
"required": false,
"params": {
"attestations": ["", "..."],
"verifiers": [{"iss": "https://verifier.example", "jwks": "https://verifier.example/.well-known/jwks.json"}]
}
}]
}
```

**Trust model** — deliberately open: anyone may operate a verifier; which verifiers a client trusts is out of band (analogous to CT logs / ACME CAs). The extension only standardizes the attestation format and its placement, so registries can render "verified live" badges and clients can filter dead endpoints before spending calls.

**Status:** working probe implementation exists (used for the measurement above); a public verifier service and a Python reference package are in development. I'm willing to develop this under an `experimental-ext-` repository if a maintainer is interested in sponsoring.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。