THE INSTRUMENT · APACHE-2.0
Witness, before you run it.
Witness is the recorder a Flight Check runs on: a transparent MCP proxy that writes a tamper-evident record of every tool call your agents make. It is open source, so you can read it line by line before it executes in your environment. This page is what it does and what it deliberately does not do — then the source.
WHAT IT IS
A recorder at the tool boundary.
Observability tools start after the model is called. Identity tools stop before the agent acts. The question every incident review asks sits in between: what did the agent do, and can you prove it? Witness answers the narrowest useful version of that — per call, at the MCP boundary, with a chain that detects edits.
STDIO PROXY
It sits between any MCP client and any MCP server.
Claude Code, Claude Desktop, Cursor, Cowork or your own harness on one side; any stdio MCP server on the other. JSON-RPC frames relay through untouched. On the way past, each tool call and its result are digested into an append-only log.
HTTP / SSE
Remote servers too.
A loopback reverse proxy for Streamable HTTP and SSE servers. Bodies relay byte-for-byte. The Authorization header passes through and is never recorded. An unreachable upstream answers a JSON-RPC 502 and the call seals as unknown rather than vanishing.
WRAP
It installs by rewriting config you already have.
Auto-detects project .mcp.json, ~/.claude.json, Cursor's mcp.json and Claude Desktop. Reversible, idempotent, dry-runnable, and it keeps a backup. Uninstalling is restoring that backup.
CHAIN
Every record is chained to the one before it.
Each entry carries the SHA-256 of its predecessor. Editing any record in the middle breaks every hash after it, and verify walks the chain and exits non-zero on the first broken link.
REDACTION
Secrets are excluded by construction, not by configuration.
Keys matching token, secret, password, authorization, cookie, api_key or credential never reach a summary — even when someone explicitly allow-lists them. Arguments and results are stored as digests, not content.
READING
The commands that turn records into answers.
tail follows a live session; sessions lists them; query filters by tool, server, principal, status or time; report produces a markdown digest with error rate and p50/p95 latency per tool; anchor appends chain heads to a checkpoints file that is itself chained.
THE TWO RULES
What the design refuses to trade.
Two constraints govern every decision in the recorder. They are the reason it is useful in an audit and the reason it is safe to leave running.
01Absence of evidence is never evidence of absence.
A call the server never answered is recorded as unknown, not omitted. Scope that was not observed is declared as unobserved. An empty log is a question, not a clean bill of health — a lesson we learned on our own estate.
02Relay first, record second.
Nothing in the recording path may delay, alter or drop a frame. If the recorder cannot write its log it says so on stderr and keeps relaying. Recording can be lost; uptime cannot.
WHAT IT DOES NOT CLAIM
The limits, stated first.
A security tool that oversells itself is worse than no tool, because it buys confidence it has not earned. These are the things Witness cannot do in this version, listed here rather than discovered by you in week two.
- No proven identityPrincipals are labels your harness declares. Every record carries verified: false, because it is. Witness will not tell you a record proves who approved an action.
- No signing key, no external timestampThe chain proves internal consistency and detects later edits. It is not notarised and not anchored to anything outside your disk.
- No enforcementIt records. It does not block, approve, rewrite or rate-limit a single call. If you want a gate, this is not that product.
- No inventory of what you did not wrapOnly wrapped servers are observed. A server nobody pointed it at is invisible, and the coverage manifest says so rather than implying silence means safety.
- Not proof against your own administratorSomeone with filesystem access can replace both the log and the verifier. The chain detects edits by anyone who does not control the machine — which is most adversaries, but not all of them.
READ IT YOURSELF
The source, and the documents that bound it.
Apache-2.0, zero runtime dependencies, one file you can read in an afternoon. Complete for one engineer, free, forever — the Flight Check is where an organisation buys the reading of it, not the tool.
TWO WEEKS · $7,500 · NOTHING LEAVES YOUR NETWORK
The tool is free. The reading is the work.
Run Witness yourself for nothing, for as long as you like. A Flight Check is what happens when someone who has read a few thousand of these records sits down with yours.