Threefold · governance for coding agents
Stop bad agent writes before they reach your code.
With the hook installed, deterministic gates on AWS check supported tool calls from Claude Code, Codex, Antigravity and Muse. Architecture rules start in Observe; teams promote selected rules to Enforce.
Asking this stack through POST /evaluate-tool-call, the route every hook calls.
A refusal is measured to stop the write in Claude Code and Antigravity, in Codex once, over its patch tool only, and in Muse over its file-write, edit and shell tools.
Proof
At work on this stack, and measured in a benchmark
Reading, as this page loads, from GET /api/overview and GET /proof.json
How it works
The agent asks, Threefold decides, you see everything
Plain code decides. Bedrock explains verdicts and drafts rules for review.
-
Step one
The hook asks
The hook checks supported calls. Known credentials and hook-disabling attempts are refused locally.
-
Step two
Threefold judges, on AWS
Gates check layering, known credentials, repeats and caller-declared token budgets. Refusals explain why, with a checked fix where one can be made.
-
Step three
The dashboard shows
The ledger shows refusals, would-refuse calls and rules ready to enforce.
Observe first. Promote trusted rules.
Review what architecture rules would refuse, promote selected rules to Enforce and demote with one click.
-
Observe
Architecture rules observe first. Credential and hook-protection checks remain active locally.
-
Review
Mark each would-refuse correct or a false alarm. A rule whose every flag was correct reads Ready.
-
Enforce
Promote the ready rules and they refuse. The rest keep observing.
Demote is one click back to Observe, whenever a rule misbehaves.
-
Claude CodeMeasured: the write is stopped
A deny from the hook “stops the write in Claude Code 2.1.220 on this platform, over both the file tool and the shell.”
Measured on disk, 2026-09-21Read the evidence
-
AntigravityMeasured: the write is stopped
The deny stops the write “in the Antigravity desktop app over
write_to_file”: the file was not created.Measured on disk, 2026-09-21Read the evidence
-
CodexMeasured once, over its patch tool
In one run “the real hook refused it”, and the governed file “had the same sha256 afterwards as before.” Codex CLI 0.155.0; its shell route is not measured.
Measured on disk, 2026-09-23Read the evidence
-
MuseMeasured over write, edit and shell
A deny stops the write in Muse 1.4.0, and “stops the edit over
edit_fileand the shell command overpowershell”: refused files unchanged on the disk, a clean file passed.Measured on disk, 2026-09-28Read the evidence
Measured on one Windows machine by what was on disk afterwards, not by what the agent said: two open bug reports say a deny can be ignored.
Built on AWS
Serverless from the edge to the ledger
One function behind an edge that filters and throttles, one table for every verdict, and a model that explains but never decides.
Edge in us-east-1, service in eu-west-1. The scheduler runs only on the public demo, where it feeds the synthetic Acme fleet.
The architecture, in depthWatch the gates
Watch the gates refuse, with no account
Four scenarios and the universal adapter. Each calls the live service and shows what came back. The circuit breaker halting a loop (Scenario 1) and a governance certificate (Scenario 4) take one click each, both in under 60 seconds.
Result
Pick a scenario above
// Ready. Each scenario sends real calls to this stack and prints what comes back; with no answer, the first four replay a recorded run.
1 · Loop POST /simulate-loop
2 · Credential POST /simulate-secret
3 · Architecture POST /evaluate-tool-call
4 · Certificate POST /evaluate-tool-call ×4, POST /issue-certificate
Adapter POST /adapter/universal-tool-call
Deterministic gates
Why, in a sentence