PRD 0017: Egress-proxy — universal MITM via mitmproxy (replaces cred-proxy) #27
Reference in New Issue
Block a user
Delete Branch "prd-0017-path-aware-egress"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Draft PRD for the follow-up flagged in PR #25's
_apply_pipelock_urldocstring. Pipelock 2.3.0'sapi_allowlistis hostname-only — once you approve a host, every URL path at that host is reachable. Cred-proxy already path-prefix-routes authenticated traffic; this PRD extends it to filter (not just route) paths, including for unauthenticated upstreams.Two small additions to the existing cred-proxy route shape:
auth_scheme: "none"— joinsBearer/token; no Authorization header injected, route still path-routes + (new) path-filters.path_allowlist: ["/didericis/", "/didericis-org/"]— non-empty means cred-proxy 403s requests whose in-route suffix doesn't match. Empty / absent keeps current permissive behaviour, so no existing manifests need editing.Per-bottle egress then has two complementary layers: pipelock for hostname allow + DLP + body scanning, cred-proxy for path-level allow on declared hosts.
Out of scope for v1 (called out in the PRD): MCP tool changes for agent-proposed path additions; glob/regex matching; auto-migrating PR #25's pipelock-block proposals into cred-proxy routes.
Open questions in the PRD: match semantics (prefix-only v1), 403 body shape, TLS interception for none-auth routes, and the eventual MCP tool shape for proposing path additions.
PRD 0017: Path-aware egress filtering via cred-proxyto PRD 0017: Egress-proxy — universal MITM via mitmproxy (replaces cred-proxy)authEarlier draft had `auth_scheme: "none"` as the unauthenticated signal — awkward sentinel. Nest the two credential-injection fields under an optional `auth` key instead. Presence of the key = authenticated; absence = unauthenticated. Empty `auth: {}` is an error (omission is what means "no auth"). Touches: scope bullet, manifest example, mitmproxy addon description's auth-handling step. Two trailing `auth_scheme: "none"` references kept as historical context for what the new shape replaces. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>