Seal

The Refusal Ledger

Actions AI agents were not permitted to take.

Every audit system records what happened. Only a boundary that evaluates before execution can create direct evidence of a prevented action. Each entry below is a real refusal from the production gateway: signed at the moment of decision, before the tool or provider was ever reached, and verifiable offline against the published key. A prevented action is evidence too.

Entries 1Latest 2026-08-22Format ACTION-v1Key published

ENTRY 001

Sat, 22 Aug 2026 20:43:25 GMT
Production record · ACTION-v1open record.json ↗

git.push_production was refused before it ran.

Authority
policy_demo_no_prod_push · policy_demo_require_intent
Signed
Sat, 22 Aug 2026 20:43:25 GMT · published key
Transparencychecking in your browser…
View signed record ↓
toolgit.push_production
outcomeBLOCKED
policy_appliedpolicy_demo_no_prod_push, policy_demo_require_intent
intent_hash27b603d4a361df01ce45…e12bda7e
session_iddemo-mcp-1787431402
action_id05e9c6e2-ef87-49aa-a823-aa2b0ee4942c
public_key9Y3Eiq6V8QjRDU…FdvWa4
signaturevjqoIEKioLfnATGevz1s…0LAZ1OAA

An agent session, bound to a registered intent, worked through ordinary development tools behind the boundary: reading code, writing a fix, committing it, each step authorised and signed. Then it proposed deploying to production. Policy refused the action before anything ran, and the refusal itself was signed. The deployment never happened, and this record is how anyone can know that without asking us.

Check it yourself, no account

curl -sL https://app.aqta.ai/samples/sample-action.json -o record.json
npx aqta-verify-receipt record.json --profile action-1 --key <published key>

It reports valid. Change one character of the file and the signature fails. The check runs on your machine and contacts nothing.

What this ledger proves, and what it deliberately does not

Each entry proves itself

The signature covers every field, the key is published, and the check needs nothing from us. It is also why this page cannot usefully be cloned: copy it and the records remain ours, verifying only against Aqta's published key, so a clone either republishes our attribution or fails the very check it invites.

The ledger does not prove completeness

Entries are chosen by us, so this page shows that these refusals happened, never that they are all of them. Our own adversary model names selective disclosure as an attack class and treats it as one; see ISSUER-ADVERSARY.md.

The agent named in a record is caller-asserted

Recorded, never verified. The specification states which fields the issuer attests and which it merely records.

A refusal proves a control operated, nothing more

It does not mean the agent was malicious, the policy was correct, or the action was harmful. It means: under this declared boundary, this action was not permitted. Permission and judgement are different claims, and we sign only the first.

The ledger grows as production refuses things. No schedule is promised, and nothing here is staged: an entry is either a real record from the live gateway or it does not appear.