Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Product release notes: [docs.proofable.me/changelog](https://docs.proofable.me/c

### Changed

- **One Evidence page.** [Evidence](/evidence) opens on four charted results: every unauthorized action stopped in 8 of 8 live tests, 150 of 150 forged records caught, a reused result about 750 times faster than redoing it, and 48 of 48 AgentGovBench scenarios. Each result links to its signed record and a way to check or rerun it, and security reviewers get the OWASP, EU AI Act, NIST and CAIP-380 mapping in one section. `/benchmarks` and `/use-cases/authority-at-dispatch` now open it.
- **One Evidence page.** [Evidence](/evidence) opens on five results: a reused result about 750 times faster than redoing it, 48 of 48 AgentGovBench scenarios beside the agent tools teams already use, every unauthorized action stopped in 8 of 8 live tests, 6 of 6 data-theft attempts refused by a scoped permission in the prompt injection test, and 150 of 150 forged records caught. Its charts switch to a stacked layout on phones. Each result links to its signed record and a way to check or rerun it, and security reviewers get the OWASP, EU AI Act, NIST and CAIP-380 mapping in one section. `/benchmarks` and `/use-cases/authority-at-dispatch` now open it.
- **Two checks you can run on the published records.** `public/evidence/checks/tamper-check.mjs` forges each signed record ten ways and confirms every copy is rejected offline; `reuse-check.mjs` times reading and verifying a finished result with no account.
- **One current version of the public case set.** Superseded evidence packets are no longer carried alongside the current one, so a reader finds a single up-to-date set.

Expand Down
29 changes: 15 additions & 14 deletions evidence.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,31 @@ description: "How much agent time and spend Proofable saves, and what it stops,
icon: certificate
---

Agents pay again for work that is already done: a result they produced earlier, or one another agent handed them. With Proofable, every finished result carries a signed receipt, so the next agent checks it in milliseconds instead of paying to redo it.
With Proofable, every finished agent job carries a signed receipt. The next agent checks the receipt instead of paying to redo the job.

## What it saves you

<img className="block dark:hidden" src="/images/evidence/save-reuse-light.svg" alt="750 times faster to check a Proofable receipt than to redo the job: redoing it took 2.79 seconds, checking the receipt took 3.7 milliseconds." />
<img className="hidden dark:block" src="/images/evidence/save-reuse-dark.svg" alt="750 times faster to check a Proofable receipt than to redo the job: redoing it took 2.79 seconds, checking the receipt took 3.7 milliseconds." />
<img className="block dark:hidden" src="/images/evidence/save-reuse-stacked-light.svg" alt="750 times faster to check a Proofable receipt than to redo the job: redoing it took 2.79 seconds, checking the receipt took 3.7 milliseconds." />
<img className="hidden dark:block" src="/images/evidence/save-reuse-stacked-dark.svg" alt="750 times faster to check a Proofable receipt than to redo the job: redoing it took 2.79 seconds, checking the receipt took 3.7 milliseconds." />

One finished agent job on the live service, timed October 20, 2026. Redoing it also used 2,426 AI tokens, and checking it used none.
One finished agent job on the live service, timed October 20, 2026. Redoing it also used 2,426 AI tokens; checking the receipt used none.

## What it stops

<img className="block dark:hidden" src="/images/evidence/stop-governance-light.svg" alt="48 of 48 agent governance scenarios handled correctly by Proofable, against 46 for the benchmark maintainers' own gateway, 20 for a gate that allows everything and 5 with no governance." />
<img className="hidden dark:block" src="/images/evidence/stop-governance-dark.svg" alt="48 of 48 agent governance scenarios handled correctly by Proofable, against 46 for the benchmark maintainers' own gateway, 20 for a gate that allows everything and 5 with no governance." />
<img className="block dark:hidden" src="/images/evidence/stop-tools-light.svg" alt="48 of 48 agent governance scenarios for Proofable beside the agent tools teams already use: on their own they handled 13, Cursor with the ACP gateway 37, and Claude Code or Codex with ACP 43." />
<img className="hidden dark:block" src="/images/evidence/stop-tools-dark.svg" alt="48 of 48 agent governance scenarios for Proofable beside the agent tools teams already use: on their own they handled 13, Cursor with the ACP gateway 37, and Claude Code or Codex with ACP 43." />
<img className="block dark:hidden" src="/images/evidence/stop-tools-stacked-light.svg" alt="48 of 48 agent governance scenarios for Proofable beside the agent tools teams already use: on their own they handled 13, Cursor with the ACP gateway 37, and Claude Code or Codex with ACP 43." />
<img className="hidden dark:block" src="/images/evidence/stop-tools-stacked-dark.svg" alt="48 of 48 agent governance scenarios for Proofable beside the agent tools teams already use: on their own they handled 13, Cursor with the ACP gateway 37, and Claude Code or Codex with ACP 43." />

The open AgentGovBench scenario library, current version, run October 20, 2026 against the policy code the live service runs. ACP is the gateway built by the benchmark's maintainers.
AgentGovBench is the open benchmark for agent governance: 48 scenarios such as a sub-agent reaching past its parent's limits or one customer's data reaching another. The agent-tool rows are the maintainers' published results on the earlier version of the library, where Claude Code, Codex CLI and Cursor each handle 13 on their own. On the current version, run October 20, 2026 against the policy code the live service runs, Proofable handles all 48 and ACP, the maintainers' own gateway, handles 46.

<img className="block dark:hidden" src="/images/evidence/stop-tools-light.svg" alt="48 of 48 for Proofable beside the agent tools teams already use: Claude Code, Codex CLI and Cursor on their own handled 13, Cursor with the ACP gateway 37, and Claude Code or Codex with ACP 43." />
<img className="hidden dark:block" src="/images/evidence/stop-tools-dark.svg" alt="48 of 48 for Proofable beside the agent tools teams already use: Claude Code, Codex CLI and Cursor on their own handled 13, Cursor with the ACP gateway 37, and Claude Code or Codex with ACP 43." />
**8 of 8 permission tests passed on the live service.** Every action outside the agent's permission was stopped before it ran, and the actions it was allowed to take ran.

The maintainers' published results for Claude Code, Codex CLI and Cursor, on the earlier version of the same library. The OpenAI and Anthropic agent SDKs, CrewAI and LangGraph also handled 13 on their own.
**When an agent was taken over, a scoped permission refused 6 of 6 attempts to send private data out, before they ran; an all-purpose key let all 6 through.** The scoped agent still finished every task and never used a tool it did not need; under the all-purpose key, 14 of 36 runs did. Self-run: 84 runs, five published attack templates, two models, a signed record for each run. [Run the test on your own agent](https://github.com/proofable/mcp/tree/main/examples/injection-test).

On the live service itself, all eight permission tests passed. Every action outside the agent's permission was stopped before it ran, and the actions it was allowed to take ran.
**150 of 150 forged records caught.** We changed each of our 15 real records ten ways. Every changed copy failed verification and every real record passed.

## Test it in a minute

Expand All @@ -41,7 +44,7 @@ node reuse-check.mjs

It reads a finished agent job by its id, verifies the signed receipt locally, and prints the time and the AI tokens used. Expect a few milliseconds and zero tokens. Pass any public record id to time that record instead.

To put receipts on your own agents' work, [get started](/).
To put receipts on your own agent's work, [add Proofable to your AI tool](/mcp/setup).

## Details for reviewers

Expand All @@ -64,7 +67,7 @@ To put receipts on your own agents' work, [get started](/).
| [Revoked permission reused](https://proofable.me/proof/0x1d987781eb519337fa9e62043831ee187340f6e589f217b16b99ed98be5acfbc) | Stopped every time |
| [Revoked mid-job](https://proofable.me/proof/0x05ef986ee3817a6fd56b327b1de3523ab7f65c11c4ff386d34c16f93d11c0045) | The running step finished; the next was stopped |

To rerun the same eight tests on a Pro account you control, create an access key under [Profile, Account tab, Access keys](https://proofable.me/profile?tab=account), then:
To rerun the same eight tests on any account you control, create an access key under [Profile, Account tab, Access keys](https://proofable.me/profile?tab=account), then:

```sh
git clone --depth 1 https://github.com/proofable/docs
Expand Down Expand Up @@ -127,9 +130,7 @@ To put receipts on your own agents' work, [get started](/).
| Cursor with ACP over MCP | 37 of 48 |
| Claude Code, Codex CLI, Cursor, the OpenAI or Anthropic agent SDK, CrewAI or LangGraph on its own | 13 of 48 |

The agent-tool rows are the maintainers' [published results](https://github.com/agentic-control-plane/agentgovbench/tree/main/results), run end to end against their gateway and not re-measured on the current library. The Proofable rows call the policy code directly. The scenarios and scorer are the same and the setups are not, so read the tables as a comparison of what each approach covers, not as a ranking.

What separates the results is the kind of control. An agent tool on its own asks a person to approve each call and keeps no record a reviewer can check. A gateway adds rules in front of the tools. Proofable decides each action against the permission its owner signed, and every decision is a signed record anyone can verify offline. It also handles the one scenario ACP declines: holding a sub-agent to a narrower task than its parent.
The agent-tool rows are the maintainers' [published results](https://github.com/agentic-control-plane/agentgovbench/tree/main/results), run end to end against their gateway and not re-measured on the current library. The Proofable rows call the policy code directly. The scenarios and scorer are the same and the setups are not, so read the tables as a comparison of what each approach covers, not as a ranking. Proofable also handles the one scenario ACP declines: holding a sub-agent to a narrower task than its parent.
</Accordion>

<Accordion title="Standards each result maps to">
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions images/evidence/stop-tools-stacked-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions images/evidence/stop-tools-stacked-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -1113,6 +1113,19 @@ a.card:hover {
}
}

/* Evidence charts ship a wide and a stacked variant; phones get the stacked one so labels stay legible. */
@media (max-width: 639px) {
.mdx-content img[src*="/images/evidence/"]:not([src*="-stacked-"]) {
display: none !important;
}
}

@media (min-width: 640px) {
.mdx-content img[src*="/images/evidence/"][src*="-stacked-"] {
display: none !important;
}
}

/*
Mobile docs shell (NEU-262).
Mintlify keeps a fixed two-row header (logo row + hamburger/title chip).
Expand Down
Loading