Security — AI Proxy
Last updated: July 12, 2026 · All security pages · Privacy · Source
Summary: AI Proxy records the AI traffic that passes through it to a local database, and by default its dashboard listens on all network interfaces with no authentication. Treat it as a tool for a trusted, isolated machine and harden it before exposing it anywhere else.
Attack surface
- Dashboard / API binds to
0.0.0.0(all interfaces) by default, on port 8000. There is no authentication. Anyone who can reach the port can browse the recorded traffic. - The built-in PII redaction limits which viewers see full bodies based on their IP/subnet relative to the request originator (loopback sees everything). This is a visibility control, not a login — don't rely on it as access control.
- The optional MCP endpoint can require a bearer token (
MCP_API_KEY), but it is disabled by default. - Outbound: proxied requests go to the upstream you configure (a local model, or a third party such as Anthropic if you point it there). Optional web-search tools contact Brave or DuckDuckGo.
- No TLS interception. It is an explicit reverse proxy, not a MITM — it does not mint certificates or intercept your other TLS traffic. It can optionally serve its own HTTPS listener if you supply a cert and key.
Secrets & data at rest
- The SQLite database stores full request and response bodies, streamed content, and request/response headers in cleartext. Because headers are stored verbatim, any
Authorization/x-api-keyyour client sends is written to the database. Bodies are capped (256 KB default) and pruned after a retention window (30 days default). - The database lives at
PROXY_DB, or a per-user data directory (%LOCALAPPDATA%\ai-proxy\,~/.local/share/ai-proxy, or/datain Docker). Treat this file as sensitive.
Running it safely
- Bind to loopback — set
PROXY_HOST=127.0.0.1if only the local machine needs access. (Note the Docker image and compose file default to0.0.0.0.) - Put it behind your own auth — if it must be reachable, front it with an authenticated reverse proxy, a firewall/allowlist, or a private network (e.g. Tailscale). Do not expose it to the public internet.
- Protect the database file with filesystem permissions and/or disk encryption; shorten
PROXY_REQUEST_RETENTION_DAYSif you don't need history. - Don't proxy traffic you're not comfortable storing in cleartext on disk.
- Keep
PROXY_REDACT_PIIon, and understand what it does and doesn't cover.
Reporting
Found an issue? See how to report a vulnerability or email gus@guscatalano.com.