The canonical source of truth is spec/SPEC.md in the repository.

Agent Work Attestation Protocol — v0.1

Status: Draft, 2026-04-27. Editor: Lex Oleksiienko (@AItoolerylab). License: Open spec (CC0 / public domain). Reference implementations MIT-licensed.


Abstract

This document specifies a portable, signature-based attestation format for autonomous AI agent work. The format enables any third party — payment gateway, regulatory auditor, insurance underwriter, downstream agent — to cryptographically verify that an agent completed a specified task without requiring access to confidential payload contents. The protocol is platform-neutral and supports chain-of-proof for multi-hop delegation.

The attestation is the on-the-wire artifact. A separate companion specification (Section 6) describes a public ledger format for storing and querying attestations to compute agent reputation.


1. Motivation

Autonomous AI agents now execute tasks with real-world consequences: they move money, write code that ships, respond to customers, file regulatory documents. Three classes of stakeholder need provable evidence of that work:

  1. Downstream agents and orchestrators about to depend on the output need to verify it was produced by the claimed agent against the claimed specification.
  2. Regulators require auditable records under EU AI Act Article 19 (effective 2026-08-02) and equivalent emerging US frameworks.
  3. Insurance and bonding underwriters pricing AI liability policies need standardized telemetry, not vendor-specific log formats.

Today, every platform (OpenAI, Anthropic, Google, Stripe, Cloudflare) is shipping its own logging. Cross-vendor agents cannot transact without a neutral attestation layer. This specification fills that gap.


2. Conformance

The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in RFC 2119.

A producer is conformant if it emits attestations that validate against attestation-v0.1.schema.json.

A verifier is conformant if it rejects attestations that fail schema validation, signature verification, or canonicalization round-trip.


3. Attestation Object

Each attestation is a single JSON object conforming to attestation-v0.1.schema.json. The required top-level fields are:

Field Type Description
version string Spec version. Currently the literal "0.1.0".
attestation_id string Globally unique ID. Format: att_ + 22-char URL-safe base64 of 16 random bytes.
agent object Identity of the agent that produced the work.
task object Task-level metadata, including hashed spec and optional delegation parent.
input object Hashed input descriptor with optional confidentiality policy.
output object Hashed output descriptor with self-reported verdict.
tool_calls array Ordered log of external tool calls. May be empty.
timestamps object RFC 3339 timestamps for task start, completion, attestation emission.
signature object Producer signature. Ed25519 RECOMMENDED.
zk_proof object OPTIONAL zero-knowledge proof for confidential attestations.
reputation_tags array OPTIONAL self-reported policy/compliance claims.
co_signatures array OPTIONAL signatures from auditors/regulators/insurers.

4. Canonicalization

Before signing or hashing, attestations and hashed payloads MUST be canonicalized using JCS (JSON Canonicalization Scheme), RFC 8785. Specifically:

The signature value covers the canonicalized form of the attestation excluding the signature.value field itself but including all other signature subfields.


5. Hashes

All hashes are SHA-256, hex-encoded, prefixed with sha256:. Future versions of this spec MAY register additional hash functions; verifiers MUST reject unknown prefixes.

sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

6. Identity and Key Resolution

The signature.key_id field MUST resolve to a public key. Conforming verifiers SHOULD support at least one of:

The protocol does NOT mandate a single identity backend; verifiers MAY accept any combination they trust.


7. Chain of Proof for Multi-Hop Delegation

When Agent A delegates a sub-task to Agent B, Agent B's attestation SHOULD set task.delegation_parent to Agent A's attestation_id. Verifiers can walk the chain to reconstruct the full delegation tree.

This enables verifying composite tasks: "Agent A booked a flight, which required Agent B to negotiate with a vendor, which required Agent C to lookup historical pricing." Each link is independently verifiable; together they form an auditable chain.

A separate envelope attestation MAY be issued by the orchestrator to commit to the entire chain.


8. Confidentiality and Zero-Knowledge Mode

For tasks where the input or output cannot be revealed (medical records, financial trades, M&A diligence), producers MAY:

  1. Set redaction_policy to zk-only on the relevant payload object.
  2. Provide a zk_proof object with a system, circuit_id, and proof bytes.

The circuit MUST commit to (a) the spec hash from task.spec_hash, and (b) the same input/output hashes published in the attestation. Verifiers without access to the payload can still gain cryptographic certainty that work conforming to the published specification was performed.

This specification does NOT prescribe a specific ZK system. Implementations are RECOMMENDED to use Groth16 or PLONK for compactness, or STARK for post-quantum resistance.


9. Reputation Tags

The reputation_tags array carries self-reported claims about the agent's compliance posture (e.g. hipaa-eligible, eu-ai-act-article-19, soc2-tier-1). These are HINTS, not proof. Verifiers MUST NOT treat reputation tags as authoritative without an independent attestor's co_signatures entry confirming the claim.

A reputation registry (Section 11) aggregates verified tags across an agent's history.


10. Example Attestation

{
  "version": "0.1.0",
  "attestation_id": "att_x7QrJ8k2pL4mN9vBfH3wXa",
  "agent": {
    "id": "asst_kn4XJZ8K2pLm9N",
    "platform": "openai",
    "model": "gpt-5o-2026-04-15",
    "operator": "https://example-fintech.com"
  },
  "task": {
    "type": "fintech.kyc.verify-identity",
    "spec_hash": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
  },
  "input": {
    "hash": "sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824",
    "size_bytes": 2048,
    "redaction_policy": "full-redacted"
  },
  "output": {
    "hash": "sha256:486ea46224d1bb4fb680f34f7c9ad96a8f24ec88be73ea8e5a6c65260e9cb8a7",
    "verdict": "success",
    "redaction_policy": "fields-redacted"
  },
  "tool_calls": [
    {
      "tool": "stripe:identity.verify",
      "input_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "output_hash": "sha256:01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b",
      "timestamp": "2026-04-27T18:15:23.451Z",
      "duration_ms": 1240
    }
  ],
  "timestamps": {
    "task_started": "2026-04-27T18:15:22.000Z",
    "task_completed": "2026-04-27T18:15:24.812Z",
    "attestation_emitted": "2026-04-27T18:15:24.890Z"
  },
  "signature": {
    "alg": "ed25519",
    "key_id": "https://example-fintech.com/.well-known/agent-keys.json#ops-2026",
    "value": "MEUCIQDxyz...truncated..."
  },
  "reputation_tags": ["soc2-tier-2", "kyc-verified", "stripe-identity-eligible"]
}

11. Companion Ledger Specification (Section to be expanded in v0.2)

A reference public ledger MUST:

The reference implementation lives in lib/.


12. Security Considerations


13. Privacy Considerations

The hashed-payload design ensures that publishing attestations to a public ledger does not expose payload contents. Hashes are one-way and salted by the canonical encoding of the surrounding context (timestamps, agent ID, signature). For very small input spaces (e.g. binary verdicts), implementations SHOULD use ZK proofs instead of plain hashes to prevent dictionary attacks.


14. IANA Considerations

This specification has not yet been submitted to IANA. Future versions intended for IETF standardization will request:


15. Open Questions for v0.2

Feedback welcome via GitHub Issues at the canonical repository.