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.
{
"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/incompletefinds overdue execution or effect evidence.- When an independent anchor provider is configured,
GET /v1/audit/anchors/latestreturns its latest receipt, trusted timestamp, and local integrity checks. Until then, the endpoint returns404instead 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.