Authproof gives every agent action a cryptographic receipt that existed before execution started. Not reconstructed from logs. Not the operator's word against yours. Math.
# JavaScript npm install authproof # Python pip install authproof-py
Want managed infrastructure? cloud.authproof.dev — free tier available.
Read the white paper →Right now there is no cryptographic record of what you actually told your agent to do. The company running it can say anything.
An operator can substitute a modified model after authorization. Standard receipts don't detect this. Ours do.
Logs can be written after the incident. A Delegation Receipt exists before the first action. That is not the same thing.
Azure TDX and AWS Nitro Enclaves supported. Execution happens inside hardware-attested confidential compute — verifiable from outside the operator's stack.
Adaptive risk-aware authorization. Trust decay, sensitivity classification, real-time threat scoring.
Noise vs signal scoring. Threshold recalibration. Approval fatigue detection.
Seven verification checks. Every one must pass before execution proceeds. Scope defined from observed behavior, not guesswork.
Three scenarios. Watch the decision happen in real time.
One client. One receipt. Every subsequent action is locked to it.
import { AuthProofClient, ScopeSchema } from 'authproof' const receipt = await client.delegate({ scope: new ScopeSchema({ allowedActions: [{ operation: 'read', resource: 'email' }], deniedActions: [{ operation: 'delete', resource: '*' }] }), operatorInstructions: 'Summarize inbox only', expiresIn: '2h' }) // Agent cannot act outside this receipt // Operator cannot claim broader authorization // Model substitution is detected automatically
I am Ryan Nelson. HVAC technician at Arctic Air. Accounting student at Oklahoma State University. Father of a daughter turning three in June.
I spent the last month building Authproof because the PocketOS incident showed what happens when AI agents act without cryptographic proof of what they were authorized to do. Nobody else was solving this at the protocol layer.
IETF Internet-Draft filed April 2026. 1,229 tests. MIT licensed.
Full time job. Full time school. Built it anyway.