AI agent execution receipts

An approval says an AI agent may act. An execution receipt connects that approval to the exact request sent and the result observed afterward.

Maetra uses the same canonical action hash across the proposal, signed decision, execution authorization, provider attempts, and effect evidence. If one of those links is missing, the lifecycle is marked incomplete.

Authorize the exact execution#

Call POST /v1/executions/authorize immediately before the external side effect. The endpoint consumes an approved capability once and rejects a changed payload, wrong workspace or executor, expired or revoked approval, changed policy digest, or replay.

JSON
{
  "decision_token": "eyJ…",
  "action_envelope": {
    "schema": "maetra.govern.action-envelope.v1",
    "workspaceId": "workspace_123",
    "agent": { "id": "agent_42", "name": "Treasury agent" },
    "action": "transfer_funds",
    "target": { "provider": "payments-provider", "id": "acct_9931" },
    "payload": { "amount": 5000, "currency": "USD" },
    "taskAuthorization": { "taskId": "task_42", "externalActionId": "pay_001" },
    "runtime": { "toolName": "payments.transfer", "toolVersion": "3.4.1" },
    "executorAudience": "payments-worker"
  },
  "idempotency_key": "transfer-2026-08-11-001",
  "provider": "payments-provider",
  "operation": "transfers.create",
  "request": { "amount": 5000, "currency": "USD", "to": "acct_9931" }
}

The response is signed and includes the action hash, policy digest, executor API-key identity, downstream request hash, and evidence deadlines. Execution authorization fails closed when the envelope omits the agent, target, task authorization, or versioned model/tool runtime needed for replay.

Preserve retries and provider results#

Append every attempt with POST /v1/executions/{id}/attempts. Each signed attempt keeps its retry number, request and response hashes, provider status and transaction ID, error class, and timestamps.

Verify what happened#

Append observed state with POST /v1/executions/{id}/effects. Evidence can be provider-signed, read back from a ledger, hardware-attested, stake-backed, linked to Task Guard, or marked self-reported. Self-reported evidence remains unverified rather than being presented as independent proof. Provider, ledger, hardware, and stake-backed results only become verified after a configured independent verifier returns a signed receipt bound to the exact evidence.

Investigate gaps#

  • GET /v1/executions/{id} reconstructs the full lifecycle.
  • GET /v1/executions/incomplete finds overdue execution or effect evidence.
  • When an independent anchor provider is configured, GET /v1/audit/anchors/latest returns its latest receipt, trusted timestamp, and local integrity checks. Until then, the endpoint returns 404 instead of presenting a local record as third-party proof.

Use govern:checkpoints:write to authorize or append evidence and govern:checkpoints:read to investigate receipts.

Maetra AI DocsGovern agents before they act.