Control your AI agents before they control prod.
Catch a rogue agent action before it reaches prod — and contain the ones that slip through. It all runs in one sealed box that keeps a tamper-proof record of everything your agent did, so you can prove to an auditor exactly what happened.
No proof, no prod.
Every agent action lands in a signed audit trail — the record for compliance, incident review, and proving it wasn't your fault. See the proof →
Your agent is one call away from deleting prod.
The agent failures that make the news aren't malware — they're a trusted agent doing something catastrophic nobody asked for, with no real sandbox between it and your data.
“This was a catastrophic failure on my part. I destroyed months of work in seconds.”
“I ran a destructive action without being asked.”
“Claude executed rm -rf tests/ patches/ plan/ ~/ — the trailing ~/ wiped their entire Mac.”
None of this needed malware — just an agent with real permissions doing the wrong ordinary thing. You can't check your way back from a sent email or a dropped table. It isn't only databases, either: an agent emailing from your address can form legally binding contracts in your name. It never needed root. It needed Send. That's why it can't touch prod in the first place.
A signed audit trail — we call it a Trust Receipt.
The sealed box caught the attack and blocked it. This receipt is signed, so no one can change what it says after the fact — it's tamper-proof.
Every Trust Receipt is signed and on the record — re-check any of them yourself, offline, on The Proof.
Caught in a sealed box. Signed for the record.
One real attack — caught, and signed for the record.
Clear an agent before it ships. Keep it boxed after.
The Gate clears an agent before it ships; the Runtime keeps it boxed in production — one box, two modes, three tiers of containment. Pick a tier below to watch it morph.
See how one box covers both modes, and every agent protocol →
Boot it inside the box. Attack it. Watch the walls hold.
It boots inside a sealed box that never sees your real secrets. We drive a pinned attack corpus at it, block its behaviour in real time, and a signed verdict drops out.
- Live outbound control: leak attempts hit a dead end we control instead of the attacker's, and die inside the box — blocked before anything leaves.
- Freeze-on-catch: it misbehaves, the VM halts, the bytes land in a signed catch-record.
- Real secrets never enter: 0 leaks across 11 tested ways to steal data.
Every other check is cheap-but-guessing or sound-but-slow.
One AI grading another AI just gives an opinion. Our check executes the real action in a sealed box and signs what happened — so the verdict comes from the system that actually ran it, not another model's guess.
Four lenses on the same claim
Returns to parallelism are capped by verifier throughput — the sixteenth agent's work is noise wearing a suit. Probity is the check that turns confident unverified output into evidence.
Two ways to run it. One receipt. Re-check it yourself.
Run the Gate in your CI or host your agents on our Runtime — either way you get the same signed Trust Receipt, and a free open verifier anyone can re-check it with.
Every pull request runs the Gate; a failed or incomplete verdict blocks the merge.
View snippet
- name: Probity gate
run: probity gate ./server.oci
# fails the build on any catchNo infra to manage: your live agents run boxed on our fleet, always-on, gated and signed.
View status
Everything your agent did, tamper-evident and signed — the audit trail for compliance, accountability, and proof that can't be denied later.
An npm package or GitHub Action re-checks any receipt from scratch — no account, no server, not even us. You never have to trust our word for a verdict.
Where it runsReincarnate the session — and prove the reincarnation is faithful.Pause an agent mid-thought. Resume it on another machine, byte for byte, with a signed proof that nothing changed while it slept.
On a host with hardware virtualization (Linux via KVM, or macOS on Apple Silicon), in your own cloud account or your data center. The Gate runs in your infrastructure: we don't host your code there, we issue the cryptographic proof of what it did. Prefer not to run it? The Runtime is the hosted option. We keep your live agents boxed on our fleet, always-on. The receipt itself travels anywhere, and re-checking it never needs us.
The evidence your auditor needs — and the attacks we find first.
One run produces the pass/fail AND the evidence your auditor asks for, mapped to the frameworks your buyers already require, without weeks of manual SOC 2 or FedRAMP work.
EU AI Act Article 12 requires high-risk AI systems to keep automatic event logs, with the high-risk deadline now deferred to 2 December 2027. But the Article is satisfied by a system's own self-reported logs — and self-reported logs are exactly what an auditor can't take on trust. A gate run emits signed, offline-re-verifiable evidence: more than Article 12 asks for.
Since 1 June 2023 the CA/Browser Forum has required the private key behind every publicly-trusted code-signing certificate to be generated and held in certified hardware. It is a real mandate, and it binds everyone who ships publicly-trusted signed code.
It is also not what failed at SolarWinds. The backdoored Orion update carried a genuine signature from SolarWinds' own uncompromised signing process, because the malicious code was swapped in during the build, upstream of signing. The key was never stolen. The signature was real. The backdoor shipped anyway.
Hardware custody is the compliance floor, not the security ceiling. Custody proves who held the key; it never proves what the key was asked to sign. A gate run proves what the code actually did, observed from outside the machine that ran it, and re-verified offline by anyone who was not in the room.
✓ the 6 ticked mappings are re-verifiable offline today with nothing but a public key; the 4 on the roadmap are mapped, not yet emitted. Open predicate standard · Which control each maps to →
Catching known attacks is table stakes. The real signal is finding attack classes nobody has named yet: this URL-smuggling trick is the first of a research pipeline, not a one-off.
Built for the people who answer for what their agents do.
One dev or a whole bank. Same box, same proof. We built it to scale both ways.
Frequently asked questions
It runs your AI agent in a sealed box, attacks it, and hands you a signed pass or fail — before you ship it, and while it runs in production. Probity secures an agent at two moments: it tests it before you ship, and it contains it while it runs in production. Whether your team built the agent or pulled one in, once it has real access it can be talked into misusing it. Other tools read the code (and miss what only happens when it runs) or dump raw logs. Probity runs it in a sealed box, attacks it, decides, and signs the result so anyone can re-check it. The Gate blocks a compromised agent from shipping; the Runtime keeps the same sealed box around it in production, so an agent that turns bad later is stopped and the catch is signed.
If your app runs an AI agent — one you built or one you pulled in — yes. You don't have to be a bank; you just have to be giving an agent real access. Any agent with reach into your systems can be talked into misusing that access, and if you also load someone else's MCP server or skill, you're running code nobody security-checked on top of that. Probity runs the agent in a sealed box, throws real attacks at it, and gives you a one-line CI check that blocks a compromised agent or a booby-trapped dependency before it ships. The same sealed box then contains the live agent in production. No security team required. A regulated enterprise runs the same command; they just also want the compliance paperwork.
One line in the CI you already run. Add `probity gate ./server.oci`. The first run is zero-config (sane defaults, leak attempts caught by a dead-end we control), so you get a green or a real finding without writing any policy. An allowlist is opt-in, for tuning a finding, not a precondition to your first green. A full run takes a minute or two, and warn mode never blocks while you dial it in. On a real catch it fails the build and emits a bundle your pipeline reads directly. In production, the same sealed box stays on as the Runtime: one field in your deployment config.
Not in any way you'll notice. Your agent's time goes to the model, not to us. An AI agent spends most of its life waiting on model inference, hundreds of milliseconds to seconds per step. The box's tax sits well under that: a lightweight microVM around the process, a host-side check on each outbound action, and no LLM anywhere in the enforcement path. Signing stays off the hot path too. The boot cost lands once, at the start of a run, and clones come off copy-on-write snapshots. The one time you actually feel the Runtime is when it freezes an agent mid-violation, and that is the product working, not overhead. The Gate's full attack run costs a minute or two in CI, where nobody is waiting on it.
All of them. If it ships as a container, we can run it. The box runs your agent's container image and watches its behavior from outside, so there is nothing to integrate: no SDK, no code changes, no language bindings. Python, Node, Go, Rust, or whatever else is in the image works already. Frameworks are the same story, since LangChain, CrewAI, AutoGen, and next month's framework all sit inside the box while we gate at a boundary they can't route around: the process, the filesystem, the network; swap frameworks and the boundary stays put. One substrate covers MCP servers, A2A agents, and agent skills, and the verifier runs anywhere: Node, pure Python, or right in your browser.
A curated, taxonomy-mapped set of real agent attacks — prompt injection, tool poisoning, data theft, secret theft, excessive agency — run against your agent for real, not simulated. Thirty known CVEs, raw-protocol fuzzing, and the SAFE-MCP technique library, maintained by our security research team and mapped to the catalogs your auditor already knows: MITRE ATLAS and the OWASP GenAI Top 10. So a PASS reads as “these classes were thrown and contained.” We also ship original research: we disclosed a new agent vulnerability class and released MIT-licensed detection rules for it before any public advisory. The one honest bound we always state: a PASS is coverage-bounded — it means the attacks we ran were contained, not that the agent is “safe” against something we didn't throw. Enterprise teams can review corpus contents and coverage and bring their own threat-model cases; the verdict is deterministic and you re-verify it yourself.
The verdict carries digests, not contents — and with self-host, your image and secrets never leave your boundary at all. The agent only ever sees a decoy credential. The real one is injected host-side, to a single allowlisted destination, at the instant of use — any attempt to send it elsewhere hits a dead-end we control and is sealed into a signed catch-record. Your source code never enters the box; each run gets its own sealed box. The verdict carries only digests — never your code, memory, or secret — signed with a key that never touches a public log. To keep real secrets out of our reach entirely, run the gate with test credentials (it still exercises the leak paths) or self-host, so the image and the real credential never leave your infrastructure.
Scanners read the code; sandboxes run it and hand you logs; inline gateways filter with a model and keep no portable proof; Probity runs it, contains it, and signs a verdict anyone re-checks offline. Probity sits in the empty quadrant: real execution, real-time containment, and a signed verdict you re-verify offline with just a public key. The hard part to copy isn't the signature — that's table-stakes — it's the byte-identical substrate that makes the proof reproducible on any host. A sealed box, some attack scripts, and a signing step are a weekend; a cross-host byte-identity substrate plus a maintained adversary corpus is not.
Proof, not promises.
This is a real signed record from an actual run — check it yourself right now, no account, then open the full proof vault.
A signed Trust Receipt from a real run — check the signature yourself, right here in your browser.
The question isn't how smart your agents get. It's how little human verification you can get away with, at this level of risk.
The agent economy stalls on one wall: nobody can prove what a third-party agent will actually do, so deals die in committee. The more work you hand to agents, the more the thing you're buying is the proof, not the model.
We're building the TLS handshake for agent trust: the re-checkable proof an agent passes through once, so anyone can trust it without taking the vendor's word. We don't host your code; we issue the proof of behaviour. That is the standard we're setting, not a network we claim already exists.
See what your agents do, then contain them.
Tell us what your agents touch, and we'll show you exactly what we catch.