$ verify.py ./the-agent-that-held-your-keys.aep.json
A correctly-signed action can still be an unauthorized action — and you can catch it.
The setup
So who checks that it stayed inside the job you actually gave it?
The lay of the land
Why the ground is shifting
The once-esoteric TLS fingerprinting that made bot-detection an expert's game — cipher ordering, JA3/JA4, automation signals — is now a couple of prompts away.
Large language models made the expertise ambient. “Is there a human?” stops being a question worth defending.
So the question moves up
What did the agent actually do?
Under whose grant did it act?
Was the act inside the mandate it was given?
The sandbox
Three layers, weakest first, so the room can feel what each one buys — and where it gives. A fresh clone ships the public trust store and pre-signed samples: breaking it without the private keys is the game.
Layer 1 · unsigned hash chain
Live breakThe lesson, on purpose: hashing without anchoring is un-anchored legitimacy in miniature. Catch it in your own logging pipelines.
Layer 2 · signed AEP + scoped mandate
verifier checks all three + the scope + freshness + one-shot replay → ALLOW / DENY
The attack matrix
The first six are the ones cryptography already closes. The seventh — every signature valid, still refused — is the point.
Layer 3 · TPM-bound outcome
Forging the outcome, or replaying a stale quote, dies at tpm2_checkquote.
Honest on stage: this is an emulated TPM (swtpm), not a hardware root of trust. I show exactly where that seam sits rather than hand-waving it.
The whole thesis, in one command
$ verify.py samples/exceed-scope.aep.json → DENY:scope_violation
The agent is not its own judge.
Why this is the hard part
Mint or widen the mandate itself. Cryptography catches this — bad issuer, bad signature, done.
A real, correctly-signed grant — used past its intent. Only mandate-conformance checking catches this.
Design principle, not magic: the agent must never be the sole and final judge of its own mandate.
What I'm honest about
Offline evidence proves integrity, authority and scope. Whether a mandate still stands needs short-lived mandates or signed status lists.
Remote attestation attests the platform — not the act-under-mandate.
Macaroons, biscuits, UCAN authorize actions but leave no offline per-action evidence.
Break it live
CTF · from your seatA refund over the cap · a method off the allow-list · an issuer outside the trust anchor. My own four-lens pre-publication bypass hunt found no key-free bypass. Prove me wrong — during the talk.
The sentence to bring home