Independent referee & evidence standard for AI agents
Your AI agent can move money, change records, and place trades. MakerChecker proves it never approved its own action.
MakerChecker is a self-hosted checkpoint in front of your agent. It enforces segregation of duties in code: the agent that proposes an irreversible action is refused as its own approver, a hard 403, not a prompt-level promise. Because this boundary sits outside the model, even a fully compromised agent cannot sign off its own work. Every decision commits to a signed, hash-chained log your auditor can verify offline, with no access to your systems. That independent proof is what gets the agent into production.
Self-hosted in your own cloud · every record is hash-chained and signed · open verifier, Apache-2.0
The free front door
Find what your agent can do on its own. Run mc scan in CI/CD.
Before your agent ever touches production, discover exactly what it is capable of doing on its own. Our open-source static code scanner reads your agent's tool definitions and flags ungoverned, catastrophic actions.
Every finding matches a real incident: each one maps to a documented failure from our database of 41 agent incidents, from database wipes to runaway billing loops.
Runs locally by default: the default scan is deterministic and offline, with no signup, no server, and no telemetry. The one network path is opt-in: pass --llm to send ambiguous tools to the Anthropic API for a second opinion, and every such finding is labeled.
The policy is code: the scan writes your mc-policy.json file. Commit it and your own CI scan passes, turning a standard GitHub Actions workflow badge green. It is your CI's badge, nothing phones home. The self-hosted MakerChecker engine enforces the exact same file in production.
Developer Terminal
npx @makerchecker/scan . Scanning tool definitions in /usr/src/app... [CATASTROPHIC] Tool 'transfer_funds' has no preceding approval gate. Resembles: AID-2026-0004 (Morse Code Prompt Injection Grok Wallet Drain) Fix: Add approval_gate control in mc-policy.json [HIGH] Tool 'delete_database' has no preceding gate. Resembles: AID-2025-0008 (Amazon Q VS Code extension database-wiping prompt injection) Fix: Add limit_violation or approval_gate Scan failed. Found 1 CATASTROPHIC and 1 HIGH risk ungoverned capabilities. To fix the build, run: npx @makerchecker/scan init .
Gate
cold-chain · pallet VX-4471 · excursion 41 min
Excursion caught live · pallet quarantinedsafe direction · agent acted alone
Stability data pulled · disposition case assembled
One-way door
The agent cannot decide this. A named QA person signs, recorded reason required.
“Excursion within validated stability range for this product. Releasing pallet VX-4471.”
Runtime containment
Jailbreaks always succeed. We stop the consequence.
Prompt filters are probabilistic. MakerChecker is a deterministic runtime fence outside the LLM. We do not try to build a better prompt-injection filter; instead, we scope the physical blast radius of the agent's tools.
A compromised or hallucinating agent can still misuse what it was granted on reversible actions. But it is structurally barred, in code, at the execution boundary, from taking an irreversible action or approving its own work without a second, named human.
The evidence standard
A company cannot issue its own financial audit. Neither can an agent self-certify.
An agent framework vendor or an operator's internal database cannot independently vouch for their own compliance. The party that did the work is the wrong one to vouch for the record. MakerChecker is the independent referee.
Every action, block, and signature commits to an Ed25519-signed, SHA-256 hash-chained audit log. An inspector recomputes the math on their own laptop, completely offline. If a single database row was altered, verification breaks.
Offline verification
Press Verify. The record re-checks itself in your browser, with no code of ours and no access to our systems, the same check an auditor runs.
Change one line. It breaks, and points at the line you changed. The action and the log are written together, so “acted but didn't log” can't happen.
Read it in plain English. Not a green checkmark for engineers. It names the person, the decision, the time, and the proof the agent didn't act alone.
How it works
The agent clears the routine work. It can't approve the one call that matters.
Before the agent acts, the engine decides what it can do on its own and what a named person must sign. Routine cases close now. The call that matters waits for a human, every time. Then anyone can check the record for themselves.
AI agent
Proposes a consequential action
MakerChecker gate
Granted skill
Deny by default. Only the skills you grant, at your tier.
Independent sign-off
The proposer cannot approve. A second human signs off.
Signed audit
ProofEvery step written to a tamper-evident, signed record.
Refused
Ungranted skill or self-approval is blocked
Refused before it runs. Not flagged after.
Only then
The action runs
Audit pack
Hash-chained, Ed25519-signed evidence
Regulator
Verifies it offline, with none of our code
Chain verifiedEd25519 · verified offline
Watch an agent get blocked from approving its own work, then sign off as the officer. In your browser, no signup.
Integration
It wraps the tools your agent already calls. Same names, same setup, nothing to rebuild.
Our SDK wraps the tools your agent already calls, on whatever framework it runs. The names and schemas do not change. The gate decides before anything consequential runs, and every call is signed into the audit, with nothing to rebuild.
import { createClient } from "@makerchecker/sdk";import { governLangChainTool } from "@makerchecker/connector-langchain";// Point at your own self-hosted MakerChecker. We never see your data.const mc = createClient({ baseUrl: process.env.MAKERCHECKER_URL });const { session } = await mc.proxy.openSession({ label: "agent-run" });// Govern a tool your agent already calls. Its name and schema do not change.const governedTool = governLangChainTool(mc,{ sessionId: session.id, agentName: "transaction-agent", skillRef: "transfer-funds@1" },rawTool,);// A denied action throws before the tool runs,// and every call is signed into the audit trail.await governedTool.invoke(input);
A denied action throws before the tool runs
Every call is signed into the audit. The agent calls its tools normally; the gate decides, fail-closed, before anything consequential runs.
Any framework, no migration
Typed connectors ship for LangChain and the Claude Agent SDK; CrewAI, LlamaIndex, and AutoGen connect through the generic SDK adapter. We meet your agent where it runs.
Open and self-hosted
Open source and self-hosted, so your security team can read every line.
Solutions
Built for high-stakes, regulated work
While the MakerChecker engine itself is completely domain-agnostic, we build and run the first agent with you in the industries where compliance and legal carry personal liability.
LIFE SCIENCES & PHARMA SAFETY
Pharmacovigilance and device complaints
Automate drug-safety (PV) case processing, MDR device complaints, and cold-chain stability reviews under a named QPPV or PRRC. Produces the signed, offline-verifiable evidence your own auditors expect under GAMP-5 and 21 CFR Part 11 workflows.
PHARMA REIMBURSEMENT
Patient access and steering defense
Clear the prior-authorization and appeals queue while gating the steering-sensitive copay and foundation enrollments. Bind each enrollment to a signed, offline-verifiable record your own counsel and auditors can inspect.
BANKING & CAPITAL MARKETS
Four-eyes for money-moving agents
Let the agent prepare the payment run, the rebalance, or the close, then hold the release, the limit breach, and the ledger posting for a named second signer. The oldest control in banking, enforced in code and backed by an offline-verifiable log.
Complementary, not a competitor
Your control plane runs the agents. We're the proof an outsider can check.
An agent control plane gives your team identity and monitoring inside your own walls. That's where you run the fleet. We sit on top: a signed record an outside examiner recomputes offline, with no access to your systems and none of our code. Change one row and the chain breaks at that row. They tell you the fleet is governed. We give you the record an outsider can check without taking your word for it.
MakerChecker Pilot
Get your agent out of the sandbox and into production.
Book a $25k VPC-hosted pilot. We will build your agent's first governed flow, run it inside your own walls, and deliver an inspection-ready cryptographic audit bundle.
Self-hosted in your cloud · Apache-2.0 SDK · AGPL-3.0 core · synthetic or minimized data setups
Read deeper
MakerChecker is built on a general engine for approving and proving autonomous action, in healthcare, finance, and any domain where a step can't be undone. See the engine →