Proxies and gateways

Pipelock vs iron-proxy

Content inspection with signed receipts next to default-deny egress with credential brokering. Two open-source proxies, two halves of the same problem.

At a glance

Pipelock source iron-proxy
Job Agent firewall. Mediates HTTP, WebSocket, and MCP traffic routed through it, scans it for secret leaks, prompt injection, SSRF, and tool poisoning, and can emit signed action receipts for mediated decisions when a signing key is configured. Default-deny egress proxy. Allowlists destinations, keeps real credentials out of the sandbox, and authorizes MCP tools.
Enforcement point Network path, outside the agent process Network path, self-hosted proxy with an optional control plane
Source Open source, Apache-2.0 core; Enterprise under ELv2 Open source, Apache-2.0
Pricing shape Free core; paid Pro and Enterprise tiers Free; a hosted control plane is offered alongside the self-hosted one
Runs as Single Go binary, self-hosted; container and Helm Go binary, Docker image, Helm chart
Pick iron-proxy

Your first worry is a compromised sandbox leaking real API keys. Boundary secret rewriting means the sandbox never holds them.

Pick Pipelock

You need to know what is inside the traffic: leaked secrets in bodies, injected responses, poisoned tool descriptions, and a signed record of each decision.

Run both

iron-proxy owns the credential boundary and the allowlist. Pipelock inspects the payloads and receipts the decisions. They sit at different layers and don't conflict.

Want the runtime boundary, not just another checklist?

The short version

Pipelock is an open-source agent firewall. It scans HTTP, WebSocket, and MCP traffic routed through it for credential leaks, prompt injection, SSRF, and tool poisoning, and can emit signed action receipts for mediated decisions when a signing key is configured.

iron-proxy is an open-source egress proxy for AI agents. Its core idea is boundary secret rewriting: the proxy holds the real secrets, the sandbox only ever sees placeholder tokens, and the proxy swaps them in at egress. A compromised sandbox can’t leak a credential it never had. Around that core it has grown a domain allowlist, TLS-terminating inspection, MCP tool authorization, a policy model it calls the LLM Judge, and a fleet control plane. The repository moved to the paradigmxyz GitHub organization; the old path redirects.

iron-proxy answers “may this leave, and with which credential?” Pipelock answers “what is in this traffic, and can I prove what I decided?” The two overlap more than they used to, and they still answer different questions.

Where they overlap now

iron-proxy’s recent releases moved onto surfaces Pipelock has covered for a while. MCP is first-class: a default-deny tool allowlist, tools/call denials returned as JSON-RPC errors, and tools/list filtering so denied tools never reach the agent’s catalog. The LLM Judge transform asks a model for an allow or deny decision on outbound HTTP requests. The control plane handles enrollment, fleet policy, and audit search.

So the distinction is no longer that one does MCP and the other doesn’t. It’s the kind of MCP control. iron-proxy decides which tools may be called. Pipelock reads the tool descriptions, arguments, and responses and looks for poisoning, drift, and injection. A serious MCP deployment wants both.

Feature comparison

FeaturePipelockiron-proxy
ArchitectureNetwork proxy, single self-hosted binaryNetwork proxy, self-hosted Go binary
Primary scopeHTTP, HTTPS CONNECT (payloads only with TLS interception on), WebSocket, and MCP content scanningDomain allowlist, TLS-terminating inspection, boundary secret rewriting
Domain allowlistYesYes, the primary mechanism
Credential scanning (DLP)65 built-in patterns, encoding-aware, environment leak detectionBoundary rewriting instead: the sandbox never holds real secrets
Prompt injection detectionDeterministic patterns with multi-pass normalization on scanned responsesLLM Judge policy model on outbound requests, not pattern scanning of responses
Tool poisoning and rug-pull driftYesNot documented
SSRF protectionPrivate IP, metadata, and DNS rebinding checksNot documented in public docs
MCP controlContent inspection of descriptions, arguments, and responses; resource and prompt enforcementTool authorization: default-deny allowlist, call denial, list filtering
A2A scanningYesNo
WebSocketFrame-level DLP and injection scanning in both directionsProxied natively as a stream, per the README; frame-level inspection is not documented
Boundary secret rewritingNo, capability separation by deployment insteadYes, the core feature
Credential brokeringNoOAuth2 client credentials, JWT bearer, GCP service accounts, secrets managers
Fleet control planeConductor, Enterprise tierEnrollment, fleet policy, audit search; self-hosted via Helm or hosted
Signed offline-verifiable receiptsYes: Ed25519 receipts, shipped verifier, operator-held keyNo; audit logs and OTLP export
Process sandboxLandlock, seccomp, and network namespaces on Linux; sandbox-exec on macOSNot documented
Source availabilityApache-2.0 core; Enterprise features under ELv2Apache-2.0

When to pick Pipelock

You want content inspection across HTTP, WebSocket, and MCP. Pipelock scans outbound URLs, headers, and bodies for 65 credential patterns, decoding base64, hex, and URL encoding first, and runs injection patterns through several normalization passes on scanned responses. Tool descriptions and arguments get the same treatment. If your threat model includes a poisoned tool description or a secret hidden in a request body, this is the layer that sees it.

You need MCP content awareness. Pipelock fingerprints tool descriptions, flags rug-pull drift when a trusted tool changes mid-session, and inspects arguments and responses. iron-proxy’s MCP feature decides which tools may run; it does not read what they say.

You need evidence, not just logs. With a signing key configured, Pipelock can emit signed receipts for mediated decisions. An auditor can verify the chain offline against your published key without trusting the proxy’s own logs. iron-proxy’s audit search is a log you read through its control plane.

When to pick iron-proxy

Your first worry is credential exposure inside the sandbox. Boundary secret rewriting is a different design. The proxy holds the real keys, the sandbox gets a placeholder, and the swap happens at egress. Pipelock doesn’t do this; it relies on deployment isolation to keep the proxy and the secrets apart.

You want default-deny egress with credential brokering. iron-proxy mints and injects OAuth tokens, JWT bearer assertions, and cloud service-account credentials per request from a secrets manager. If the shape you’re shopping for is “the agent never touches a real credential”, that’s this project.

You already treat the sandbox as untrusted and want the proxy to be the trust anchor for credentials. The placeholder-token pattern maps directly onto that design.

Architecture differences

iron-proxy asks: how do we stop the sandbox from ever seeing real secrets? It terminates TLS for ordinary HTTP so it can rewrite headers, relays WebSocket and server-sent-event streams natively, with no frame-level inspection documented, and substitutes real credentials at the edge. A malicious response or a compromised process can’t exfiltrate a credential the sandbox never held.

Pipelock asks: what is moving across the mediated boundary, and can I prove what I did about it? Routed request bodies are checked for leaked or encoded secrets, routed tool descriptions for poisoning, scanned responses for injection, and SSRF is checked before DNS resolution. With a signing key configured, Pipelock can emit signed receipts for mediated decisions.

These compose. Put iron-proxy at the credential boundary and Pipelock on the content path.

Two implementation notes, stated fairly

iron-proxy’s credential injection is fail-open by default. In the OAuth transform, require defaults to false, and the source comment says a mint failure is logged and the request is forwarded without the token so one broken credential doesn’t take down every matching request. That’s a defensible availability choice, and you can set require: true per entry. It’s worth knowing before you rely on the swap as a security boundary. Pipelock’s mediated enforcement paths fail closed: a timeout or a parse failure blocks the request, and the block is receipted.

iron-proxy’s payload inspection applies to ordinary HTTP request paths. Its README describes WebSocket upgrades as proxied natively as streams, and no frame-level inspection is documented for that path. Pipelock scans WebSocket frames in both directions.

Neither note is a defect. They’re design choices, and a default can change in one commit, which is why the sources below carry dates.

Further reading

Sources checked

Third-party descriptions on this page come from the public materials below, read on the dates shown. Features and pricing change; check the current documentation before you decide.

Third-party product names and marks belong to their owners. PipeLab is not affiliated with, sponsored by, or endorsed by the makers of any product compared on this page. Descriptions of other products come from their own public materials on the dates listed above and reflect PipeLab's reading of them. If something here is wrong or out of date, tell us and it will be corrected.

Frequently asked questions

What's the difference between Pipelock and iron-proxy?
Both are open-source Go egress proxies for AI agents. Pipelock inspects HTTP, WebSocket, and MCP payloads routed through it for credential leaks, prompt injection, SSRF, and tool poisoning, and can emit signed receipts when a signing key is configured. iron-proxy enforces a domain allowlist and uses boundary secret rewriting: the proxy holds the real credentials and the sandbox holds placeholders that get swapped on the way out. One decides what may leave and with which credential. The other decides what is inside the traffic.
Does iron-proxy scan MCP traffic?
iron-proxy authorizes MCP tools. Its docs describe a default-deny tool allowlist, rejection of denied tools/call requests with a JSON-RPC error, and filtering of tools/list so denied tools never appear. Pipelock inspects the MCP content itself: tool descriptions, arguments, and responses, for poisoning, rug-pull drift, and injection. Authorization and content inspection are different jobs.
Can I use Pipelock and iron-proxy together?
Yes. iron-proxy protects credentials at the identity boundary and gates destinations. Pipelock scans what flows through the allowed connections and records the decision. Chain them so the agent’s traffic passes through both.

Want the runtime boundary, not just another checklist?

See all comparisons →