PolicyLayer decides which tools each grant may call. Interlok sits behind it and signs exactly what reached your MCP server and what came back, in a hash-chained ledger your auditor can verify offline, without trusting PolicyLayer or us.
agent → PolicyLayer → Interlok observer → your MCP server
x-interlok-observer-token. PolicyLayer accepts any HTTP endpoint as an upstream and can inject static headers.Every tools/call that PolicyLayer allows is now witnessed at the server boundary (G2 observed): tool, a hash binding the exact arguments, scrubbed arguments, outcome, result hash, timing, and what Interlok's own gate would have decided. Calls are never blocked or rewritten, and recording happens after the response is back.
PolicyLayer's proxy logs record the grant, server, tool, policy and version, outcome, rule, upstream status and latency, timestamp, request id and argument names (not values). PolicyLayer does not publish an export or webhook for them today, so you bring them in by file upload, API push or a signed webhook from your own script. Each record is signed on receipt with its request id and the hash of the record as received (G3 ingested).
Where an observed call and a PolicyLayer record share the tool and argument names within ten seconds, and neither side has another candidate, Interlok writes a new G2+ corroborated entry joining them and says that it rests on argument names. If PolicyLayer recorded a denial for a call that still reached the server, Interlok records a discrepancy and alerts you.
| Grade | Proves | Blind spot |
|---|---|---|
| G1 native | Interlok decided the call and a person approved it | None |
| G2+ corroborated | PolicyLayer's verdict plus an independent witness of execution | Denials before execution rest on PolicyLayer's records |
| G2 observed | Exactly what reached the server and what came back | Denials inside PolicyLayer never reach the server |
| G3 ingested | Interlok received this PolicyLayer record at this time, unaltered since | Whether the record is true |
High-risk tools whose evidence rests only on the gateway are flagged, with one click to move them onto Interlok's native gate, where a named person approves and the decision is signed where it is made.
PolicyLayer is a trademark of its owner. This page describes how Interlok works alongside PolicyLayer using PolicyLayer's documented upstream configuration; it does not imply endorsement or partnership.