THINKING · 25 JULY 2026

Who approved that?

Now that AI agents do real work beside humans, authorization and accountability have quietly become the audit question. Most of today's answers fail it.

ProofKey concept preview — a customer-held USB-C authorization device with trusted display, physical confirm and cancel buttons, secure element, and the seven-step approval flow into Proofpane's hash-chained evidence log
ProofKey × Proofpane: designed as a pair. Proofpane software defines and enforces policy and records tamper-evident evidence; ProofKey, a customer-held hardware root, protects the authority to change the rules. Software and hardware, one cryptographic chain of governance: every approval independently verifiable offline. Concept preview only, subject to change; industrial design and final form factor will vary with the OEM and secure-element supplier. Click any image to enlarge.

The composition of work changed faster than the paperwork did.

Two years ago, "the team" meant people. Today almost every knowledge task has AI in the loop: drafting the contract, triaging the inbox, reconciling the invoices, pushing the fix. The org chart still says forty employees. The activity log tells the truth: forty humans and a few hundred agent identities, acting around the clock.

Most of that is good news. Here's the part that isn't settled: when humans and AI produce work together, authorization and accountability stop being obvious. And unlike most unsettled questions, this one has a deadline, because it gets asked, retroactively, by people with checklists: auditors, regulators, insurers, incident reviewers, courts.

  • The agent issued the refund. Who approved it?
  • The agent "fixed" the source data so validation would pass. Who authorized that?
  • The model's summary was wrong and a customer relied on it. Which human signed off, and what exactly were they looking at when they did?

"An AI did it" has no standing anywhere that matters. Accountability always lands on a person. The only question is whether your systems can show which person, what they authorized, and what they saw when they authorized it.

Why today's answers fail the audit

Logs record what happened, not who meant it. Every platform has an activity trail. Almost none can distinguish "a human with authority deliberately approved this specific action" from "a request arrived from a session bearing this human's cookies." Those are different facts, and after an incident they're the only fact that matters: stolen sessions, over-privileged service accounts and rubber-stamp fatigue all collapse the first into the second.

Blanket delegation isn't authorization. "The agent is allowed to handle refunds" is a policy. It is not an answer to "who approved this refund, of this amount, to this customer." When the delegation chain runs human → agent → action, accountability needs per-action anchors somewhere in that chain, or every incident review ends in a shrug.

And the vendor's word isn't evidence. If the only proof of an approval lives inside the vendor's own database, the audit answer amounts to "the system being audited says it's fine." That includes your cloud's built-in approval workflows: an approval that exists only in the platform's own logs is the audited system grading itself. Evidence that matters has to be verifiable by a third party who trusts neither the vendor nor the platform: offline, after the fact, years later if needed.

Approvals that scale: the frequency law

The failure mode on the other side is just as real: drown people in confirmation dialogs and they will click yes to everything. Accountability theatre. The design rule I keep coming back to:

Assurance should scale with blast radius divided by frequency.

Frequent actions must stay light or people stop reading them. Catastrophic actions must be rare enough that a deliberate ritual is affordable. Mapped onto how organizations actually operate:

How oftenTypical actionsRight levelWhy this level
Many times a day Release a paused agent action · accept a redaction · approve one step of a workflow R0Software confirmation Blast radius is small and reversible. Added friction here doesn't add safety; it trains the reflex to click yes.
A few times a month Activate a policy version · change a model or provider · register a governed device · export evidence externally · elevate a role R1 · R2Per-action signature These change the rules for everything downstream. Each one deserves a signature bound to that exact action. Five seconds on a phone or laptop — and that is the honest limit of a phone: it signs, but it lands on the lower of the two signature rungs. A hardware claim the device asserts about itself is R1; only an authenticator whose attestation verifies and chains to a FIDO-certified root is labelled hardware-backed and reaches R2, which in practice means a security key. Measured, not assumed: a laptop Secure Enclave credential came back l2_standard; a FIDO2 key came back l2_high.
A few times a year Create a tenant root · break-glass / disable governance · rotate root keys · recovery R3Dedicated-device ceremony Catastrophic blast radius. Rarity is exactly what makes a deliberate, witnessed ceremony affordable. The device lives in a safe, not a pocket.
Where regulation demands The same boundary changes, in regulated or high-impact deployments R4Multi-party + attestation No single person, device or vendor should be sufficient: dual control plus an attested runtime.

Banking arrived at this junction first, and it's worth noticing why: the industry with the most hardened infrastructure is the one that wrote human transaction signing into law (PSD2's dynamic linking; chipTAN's independent displays). Trusted machines didn't remove the need for provable human authorization. They made it the standard.

The assurance ladder, level by level

(Numbered R0–R4, matching architecture spec v1.2.0 §16.3. This page numbered the same ladder R1–R4 until 2026-08-08, and L1–L4 before that; the lettering keeps it from ever being conflated with the spec’s conformance Level 1–3, which is a different ladder. Mapping from the older numbering: the click was R1 and is now R0; the single signature rung R2 splits into R1 when the hardware claim is self-asserted and R2 when attestation chains to an independently certified root; R3, R3-dev and R4 are unchanged.)

The ladder only works if you're honest about what each rung proves, and what it doesn't:

These R-numbers mean one thing only: how hard an approval is to fake. The architecture has a separate conformance ladder — observed, governed, provable — about how much of your AI work is reached at all. It used to be numbered too, which made merging the two almost inevitable; the numbers there are gone for that reason. A deployment can be fully provable and still approve everything with R0 clicks.

LevelMechanismWhere the key livesWhat it provesWhat it does not prove
R0Software confirm R0 — Proofpane desktop tray approval card: release paused agent action, Approve / Hold Authenticated session + explicit click; event recorded in the audit trail — (session credential) The account holder's session confirmed, in the flow of work That the person, rather than whoever holds their session, meant it
R1 · R2Per-action key signature
two rungs, and the difference is measured R1 — phone approval sheet: the exact action summary, confirmed with Face ID unlocking a device-bound key. A phone signs, and classifies at R1: its hardware claim is self-asserted R1 · l2_standard
phone or laptop biometric
R2 — a screenless FIDO2 security key in a laptop port, gold touch contact, while the action summary 'Activate policy v2.4.1 · hash 9A7F-98D2' is shown on the laptop screen. The key has no display, which is exactly why the honest limit at R1 and R2 alike is that the summary is app-rendered R2 · l2_high
security key, attestation chains to a certified root
A device-bound, non-exportable key signs this one action, with nonce and expiry. Which rung it lands on is not a choice: a phone or laptop biometric (Secure Enclave / TPM) classifies l2_standard and sits at R1, because nothing independent confirms what the key is. l2_highR2, the one we call hardware-backed — additionally requires the authenticator’s attestation to verify and chain to a FIDO-certified root, which in practice means a security key, screen or no screen. Inside your phone or laptop’s protected hardware, or on a key you hold The key's holder authorized this exact payload: replay-proof, per-action Display integrity on a compromised device: the summary is app-rendered — look at the key in the picture, it has no screen, so what it signs is whatever the computer handed it. The biometric is the unlock, never the root. Removing that assumption is the entire reason R3 has its own display
R3Dedicated-device ceremony R3 — ProofKey concept device: USB-C signer with trusted display showing the exact action, physical Confirm and Cancel buttons A standalone signer with its own display and physical confirm/cancel; separate smartcard-class secure element (chip-level EAL5+/6+ certified parts) Inside the dedicated device; it never leaves An authorized human saw this action on an independent display and physically confirmed it That the policy itself is wise; anything happening outside the governed surface
R4Multi-party + attested execution R4 — dual control 2-of-3: two approvers signed, one pending, executes on attested runtime 2-of-3 or dual-control approval, plus runtime attestation of the executing environment Split across independent custodians No single actor could have fabricated the approval; the approved code ran unmodified Provider conduct beyond the boundary; the hardware supply chain itself

The phone step, precisely: the biometric is the unlock, never the root

When people hear "approve it on your phone," many picture the app scanning your face or matching your voice. They're right to be suspicious of that picture, especially now. An app-managed camera or microphone flow is exactly what AI has learned to beat: synthetic faces, cloned voices, replayed clips. And even when recognition works, all it produces is a yes/no from the app: nothing that binds you to this specific action.

The signature rungs — R1 and R2 — are built the other way around:

✗ What a signature rung is not: recognition as authorization✓ What R1 and R2 are: a biometric-gated key signature
The app processes camera, voice or fingerprint data and decides "it's you" The operating system's own biometric check (Face ID, Touch ID, Windows Hello, Android BiometricPrompt) runs entirely inside the platform. The app never sees biometric data
The output is a boolean "matched": it says who, never what Success unlocks a private key that lives in the Secure Enclave / TPM / hardware keystore and cannot be exported
Beatable at a distance: a deepfaked face, a cloned voice, a replayed recording That key signs the exact canonical action: target, payload hash, nonce, expiry. The signature is the authorization, not the face-match
Nothing lands in evidence except the app's word for it The signed payload lands in the hash-chained log, verifiable offline by anyone, years later

Two consequences worth spelling out. Privacy: nothing biometric is ever captured, stored or transmitted by the governance layer: no face images, no fingerprint templates, no voiceprints. The platform keeps the biometrics; the governance layer only ever sees a signature, so there is nothing biometric to breach. And the AI-era point: a synthetic face can beat a camera; it cannot conjure a signature from a key it does not hold. Even a fooled biometric on a stolen phone still requires that physical phone, in hand; remote, scaled attack has nothing to grab. And even on the day deception wins, the record it leaves is not “the AI silently did X.” It is “this person was shown exactly this, and confirmed.” Accountability survives the failure of judgment; that is the entire design goal. Voice is never an approval factor here; at most it's an accessibility aid.

"This is just passkeys," a security veteran will say. Same silicon, same gesture, different job. WebAuthn proved this hardware path years ago. But a passkey answers login ("is the account holder's device present?") once, at the start of a session; everything after that first hello rides on the session. Accountability needs the other end of the interaction: a signature over this action (this refund, this policy version, this export), minted at the moment of decision. Authentication opens the door; authorization signs the deed. Banking regulators drew exactly this line when PSD2 refused to accept "logged in" as approval and demanded a fresh signature dynamically linked to each transaction.

And one fair objection deserves a straight answer: isn't the Secure Enclave still Apple's silicon, a chip maker's root by another name? The distinction that matters is custody versus manufacture. The enclave vendor built the vault, but your key is generated inside your device, holds no copy anywhere, and signs nothing without you present. The manufacturer cannot produce your signature today, and cannot retroactively forge yesterday's. Attestation is different in kind: there the chip maker's own provisioned key actively signs every claim, so the vendor sits in the verification loop forever. You do still trust the safe-maker's engineering at R1 and R2. That is exactly why R3 exists: a dedicated device built around a smartcard-class secure element, the kind that ships with chip-level EAL5+/EAL6+ Common Criteria certification (the same tier as banking cards and passports) from a vendor you choose. And why R4 splits authority across devices and vendors. No layer removes trust; each layer shrinks it, diversifies it, and keeps custody with you.

Two boundaries, stated plainly. First: at R1 and R2 alike, what binds "what you saw" to "what was signed" is app-level: a fully compromised phone can lie about the summary it shows. Only R3's independent display closes that gap, which is exactly why R3 exists and why it's reserved for the actions that deserve it. Second: none of this makes a bad policy good, and none of it governs activity that bypasses the agreed surface. Anyone who tells you a device solves governance is selling the device, not the governance.
Where this stands today, honestly: Proofpane ships R0 in production: explicit human approvals in the desktop tray, each on the SHA-256 hash-chained record. R1 and R2 — a per-action WebAuthn signature — are built and offline-verifiable end to end: challenge → device signature → the exact-action gate → an Ed25519-signed Evidence Pack whose standalone verifier re-proves it with no backend. It works in two honest rungs: R1, WebAuthn-backed, on a synced platform passkey (Touch ID / Windows Hello), and R2, hardware-backed, only where the authenticator's attestation is verifiable and chains to a FIDO-certified root — a check strict enough to reject an emulated TPM, so the tier can't be faked. Both paths have been exercised on real devices — a FIDO2 security key classifies as hardware-backed with its attestation chaining to a FIDO-certified root; a second key taught us that listed in the metadata service is not certified by it, and the check was tightened to match the label. R3-dev — a signature over text the operator read on the device's own screen — is also measured now, on an off-the-shelf device (the -dev qualifier is load-bearing: unqualified R3 is reserved for a purpose-built device and is not claimed). It leaves the FIDO stack to get there: txAuthSimple was dropped and CTAP2 carries no field for the action text, which is why a security key shows you app.proofpane.com and not what you are approving. So the chain holds the exact text the operator read, verbatim, not a hash. One thing it does not hold: proof that the text was rendered. A device with blind signing enabled shows a hash and signs byte-identical content, so the display rests on photographs and the operator's account — and that gap, not a preference for building hardware, is what a purpose-built device would close. The ladder above is the design framework we build against.

The chain has to end at a root your organization holds

The machine side of trust is genuinely improving: attested execution and confidential computing can increasingly prove that approved code ran unmodified. That end of the stack is being mapped well by practitioners like Imran Siddique, creator of the Agent Governance Toolkit. But every root in those chains belongs to a chip maker or a cloud. The human side (who had the authority, and did they really exercise it) can't be outsourced to either.

That's the direction we're building toward at Proofpane: agents governed by policy in the middle, every event landing in a tamper-evident log a third party can verify offline, and at the top, human authority anchored to keys the customer organization itself holds. We've been sketching that top layer as ProofKey, the customer-held hardware root previewed at the top of this piece. It's a concept, not a product; but concepts are where standards start.

Software defines and enforces policy.
Hardware protects the authority to change it.
Evidence proves what happened.
The customer holds the final key.