Runtime privacy gateway
Decide each tool call before it leaves.
Every other check reads a trace after the fact. agentleak proxy sits between your agent and an MCP server and judges each tools/call against your flow rules before it is sent. The call is allowed, redacted or blocked, and the decision goes into a hash-chained evidence log.
Three answers, decided in time
The proxy launches the real server as a child process and forwards JSON-RPC untouched, except tools/call, which goes to the policy first.
- allow: the call passes unchanged
- redact: only the refused values are removed, or swapped for a stable token
- block: nothing is sent, and the agent gets a readable reason
- Optional: the result is judged too, on its way back to the agent
Judge the flow, not the presence
A SIN sent to your KYC vendor for identity checks is fine. The same SIN sent to analytics is a leak. Rules name the data type, the sender, the recipient and the declared purpose.
- The same rule grammar as the CI gate
- Purpose read from the call's _meta
- A missing purpose fails a rule that requires one
- Deny beats allow, whatever the rule order
Evidence an auditor can check
Each decision is one line carrying the hash of the line before it. agentleak evidence verifies the chain and names the first entry that was edited, removed or reordered.
- Hash-chained JSONL, optionally Ed25519-signed
- Data types recorded, never raw values
- Tool definitions pinned: a changed tool is reported
- --verify and --public-key for a CI step
Guard an MCP server
{
"mcpServers": {
"github": {
"command": "agentleak",
"args": ["proxy", "--config", "agentleak.yaml",
"--evidence", "evidence.jsonl", "--",
"npx", "-y", "@modelcontextprotocol/server-github"]
}
}
}
Read the implementation guide →