Keep PolicyLayer. Put the proof in Interlok.

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.

How it connects

agent → PolicyLayer → Interlok observer → your MCP server
  1. In Interlok: Connected sources → Connect a source → Chained observer → PolicyLayer, with the server's current upstream URL.
  2. In PolicyLayer: set that server's upstream URL to the one Interlok gives you and add the static upstream header x-interlok-observer-token. PolicyLayer accepts any HTTP endpoint as an upstream and can inject static headers.
  3. Keep the credentials PolicyLayer injects for your server. Interlok forwards them and drops them: never logged, never stored.

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.

Adding PolicyLayer's own records

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.

What each grade proves

GradeProvesBlind spot
G1 nativeInterlok decided the call and a person approved itNone
G2+ corroboratedPolicyLayer's verdict plus an independent witness of executionDenials before execution rest on PolicyLayer's records
G2 observedExactly what reached the server and what came backDenials inside PolicyLayer never reach the server
G3 ingestedInterlok received this PolicyLayer record at this time, unaltered sinceWhether 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.