Three steps, then it is running.
Change one line
Point your existing client at Permisyn. No rewrite, no wrapper SDK, and your provider keys stop living in application code.
Hand your team one snippet
A shareable header bundle carries the team, the agent and its passport. A teammate fills in only their own name.
Every decision comes back signed
Allowed or denied, each call leaves an Ed25519 receipt that anyone can check against your public key.
Run both and they join up: Intent binding matches a tool call to the model decision that asked for it.
Everything else it does, doing it.
Stop everything, now
One button freezes every agent across the org, on the next call, with no redeploy. It works on every plan, including a lapsed trial.
Or kill one agent
Halt a single agent, one team, or one accountable user. Everything else keeps running.
A sandbox that cannot reach production
A separate partition with its own keys and its own data, one click away.
Secrets it can never print
Register a secret and only its fingerprint leaves your browser — we never hold the plaintext. Any call carrying a match is redacted in flight, in both directions.
Even we cannot backdate it
Seal the audit log's Merkle root and stamp it to Bitcoin through OpenTimestamps. Confirmation takes hours, so a fresh anchor honestly reads pending — and what it leaves behind is a standard .ots file, checkable with the public client rather than with us.
Compliance evidence
Framework readiness assessed against real traffic, exported as a signed attestation.
Dependency graph
Which agent calls what, built from the traffic rather than a diagram someone drew.
Waste ledger
What you paid for calls that broke your own rules, were discarded, or ran twice.
Chain of custody
Every multi-agent handoff signed, with each delegation provably narrower than its parent.