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 rung you can reach without an in-tenant kernel collector, and it works for any agent whose traffic you can route. See How you attach for where this sits on the ladder.

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 rung; 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 rung.

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