Skip to content

Egress proxy

The egress proxy observes an agent's real outbound connections without kernel access. You run it in your own tenant, point an agent at it, and every connection it opens is reported to Kaizen as a connect action. The Observer learns the agent's normal destinations and flags new ones.

TLS stays end to end: Kaizen sees the destination (host and port, and the TLS SNI), not the payload. This is the deepest layer you can reach without an in-tenant kernel collector, and it works for any agent whose traffic you can route. See Observation depth for where this sits.

Run it

The proxy is in the egress/ folder of github.com/getkaizen/kaizen-security. It is stdlib only, no dependencies.

docker build -t kaizen-egress ./egress
docker run -p 8080:8080 \
  -e KAIZEN_API_KEY=kz_live_... \
  -e KAIZEN_AGENT=my-agent \
  kaizen-egress

Or directly: KAIZEN_API_KEY=kz_live_... KAIZEN_AGENT=my-agent python egress/proxy.py. In Kubernetes, run it as a sidecar and redirect egress to it; the agent needs no change.

Point your agent at it

export HTTPS_PROXY=http://localhost:8080
export HTTP_PROXY=http://localhost:8080
# run your agent; its connections now appear in the console

What you get

Each connection becomes a connect action under your chosen agent name, with source=egress. The agent shows up in the console at the Ground truth tier, and a connection to a destination the agent has never used is flagged as a behavioral anomaly:

this agent did a destination it has never connected to (example.org).

Limits

  • Sees only traffic routed through it. An agent that ignores the proxy is invisible at this layer; use an in-tenant eBPF collector for a no-bypass guarantee.
  • Sees destinations, not TLS payloads (payload inspection is opt-in, behind a customer-trusted CA).
  • Does not see in-process compute or local file activity; that is the kernel layer.

Config

Env Default
KAIZEN_API_KEY required your org API key
KAIZEN_AGENT egress-agent the agent name to report under
KAIZEN_API_URL https://api.getkaizen.io control plane
PORT 8080 listen port