2025 · Replit
It deleted the production database
An agent dropped a live database despite eleven all-caps instructions not to — then fabricated records to cover what it had done.
Reported by The Register
Read-only agent gateway
Prodpeek gives your AI agents verified read-only access to production. They can look. They can't touch.
This keeps happening
Every one of these was a team that trusted a tool boundary that turned out not to be a boundary.
2025 · Replit
An agent dropped a live database despite eleven all-caps instructions not to — then fabricated records to cover what it had done.
Reported by The Register
June 2025 · Asana
Asana's own MCP server shipped with a cross-tenant flaw that exposed roughly 1,000 customers' data. It ran for over a month before anyone caught it.
Reported by The Register
GitHub MCP · Invariant Labs
The "lethal trifecta" — private data, untrusted instructions, and a way out. Simon Willison's assessment: we still don't have convincing mitigations.
Research by Invariant Labs / devclass
How it works
Prodpeek sits between your agents and your services. Nothing about your infrastructure leaves your infrastructure.
One self-hosted instance. Add each upstream with a read-only token — encrypted at rest, and never handed to an agent.
A key per developer and per agent, shown once. Every call it makes is attributed to it, so "who asked for that" always has an answer.
The policy runs on each call, not just when tools are listed. Allowed reads pass through. Everything else is refused, with a reason.
The guarantee
Most gateways hide dangerous tools from the list and call it read-only. Hiding a tool does not stop anyone from calling it by name.
CVE-2026-46519 (CVSS 8.8): a server's read-only setting filtered
tools at the discovery layer. A tool hidden from tools/list was still
callable by name through tools/call. One request deleted pods.
The same shape has shown up elsewhere. Vendors describe these filters as best-effort content filters rather than authorization boundaries — which is honest, and which is exactly the problem.
What Prodpeek does instead
Once to shape the list a client sees — a courtesy, nothing more. Again,
deny-by-default, on every tools/call, including calls
naming tools that were never advertised.
The two checks are separate code paths, and a test asserts they stay separate. Sharing one implementation is precisely how the CVE happened.
Independent enforcement paths, tested in isolation and end to end over real HTTP
Write tools advertised, ever — there is no write path to enable, not even behind a flag
Of calls written to an append-only, hash-chained log you can verify yourself
Profiles
One file per service, listing every tool and the verdict behind it. No URLs, no credentials — the loader rejects a profile that tries to carry either. Your environment stays in your instance; only the policy is published.
verified is going to mean something specific and earned: every allowed tool called against the real service and seen to succeed, every denied tool attacked twice — once with the least-privilege credential, once through the gateway by raw tools/call — and anything the vendor credential failed to block written down rather than quietly dropped. The harness that does this is the next milestone. Until it has run, a test in CI stops any profile from claiming otherwise.
Who this is for
Agent governance platforms are built for organisations with a procurement department. If that isn't you, most of what they sell is overhead.
One Docker command. No Kubernetes, no service mesh, no platform team required to keep it alive.
No sales call. The price is on this page. You can run it before you talk to anyone.
Your infrastructure. It runs on your network, against your credentials, inside your trust boundary.
No identity-provider project. Mint a key per developer and per agent. That is the whole onboarding.
Small enough to audit. The decision engine is a few hundred lines with no third-party dependencies. Read it before you trust it.
No annual contract. The gateway keeps working whether or not you pay for profile updates.
Get started
Bring it up, add an upstream with a read-only token, mint a key, point your agent at it. The contract suite runs first, with no credentials and no network.
cp .env.example .env
docker compose run --rm prodpeek gen-key # paste into .env
docker compose up --build
# then point the agent at the gateway
claude mcp add --transport http prodpeek http://localhost:8787/mcp \
--header "Authorization: Bearer <key>"
Open http://localhost:8787/admin to add services and mint keys. Test connection enumerates the live server and shows you exactly which tools the policy allows and denies — before any agent touches it.
Pricing
Running Prodpeek costs nothing. What you can pay for is somebody else doing the work of proving, per tool, that a profile is what it claims to be.
The gateway, the console, and the community profiles.
Run as many instances as you like
Verified profiles, kept current as upstreams change.
Price to be set before launch
Priority on the services you actually depend on.
Price to be set before launch
FAQ
One container on your own infrastructure. Your agents talk to it; it talks to your upstreams. Upstream credentials are encrypted at rest in its local database and are never included in anything an agent receives.
Only the tools its profile allows, with the argument constraints that profile sets — a page-size ceiling, a Confluence space allowlist, a required repository.
Reads that return secrets are treated as dangerous even though they are reads.
get_datasource_by_uid returns datasource credentials, so it is denied
outright. There is no redaction layer yet, and we would rather deny a leaky read than
claim to have scrubbed it.
The agent gets a structured refusal naming the reason —
tool_explicitly_denied, tool_not_in_allowlist,
argument_constraint_violated, and so on — and the same reason is written
to the audit log against the key that made the call.
Reasons are stable identifiers rather than prose, so denials group cleanly by cause when you go looking for what your agents keep trying to do.
The decision table is published as a plain file: every row is one call and the verdict the engine must return, with a note on why. The test suite executes that file, so it cannot drift from the code. If you disagree with a row, that is a bug report — quote the row's id.
Profiles are drafts until the verification harness has run against a live service. None of them claims otherwise today, and CI enforces that.
No. Prodpeek is pre-launch and built by a very small team, and a SOC 2 report would be a claim about a company rather than about this software.
What is offered instead: it runs inside your boundary, so your auditors are looking at your own infrastructure; the decision engine is small enough to read in one sitting; and every decision it makes is in a hash-chained log you can verify without trusting us.
The licence has not been settled yet, and nothing has been published under one — a deliberate pause rather than an oversight. The intended shape is a readable, open runtime with the verified profiles and harness as the paid asset, but until that is decided this page is not going to promise you a licence it cannot deliver.
Waitlist
Prodpeek is pre-launch. Leave an email and you get two things: the invite when the alpha opens, and the occasional write-up on what building a read-only gateway actually teaches you about agents in production. One click to stop, any time.
One confirmation email, then nothing until there is something worth saying. Your address stays on our own server and goes nowhere else — what we do with it.