Know what your agent does with the network.
AI coding agents run shell commands, fetch pages, and install packages on your machine. If one is tricked — by instructions hidden in a page or repository it reads — it can quietly call attacker-controlled servers or send your .env and your tokens somewhere you never intended. EgressEye sits in your harness and answers one question after every tool call.
The last row is the point: unknown means unknown. EgressEye never pretends that "not on a blocklist" means safe — that honesty is the product.
Verdicts in plain words
What it catches
Inspection happens before every tool call, on everything the harness sends: commands, tool arguments, file contents the agent writes.
hxxp://evil[.]top hidden in scripts the agent writesHonest limits
A determined compromised agent can bypass hooks. Unknown URLs with no signals stay unknown. Anything that never passes through a tool call — raw sockets, other processes — is invisible to any hook-based tool.
We publish the complete bypass list instead of hiding it. A security tool that hides its limits is marketing, not security.
Read the full bypass table →What leaves your machine
EgressEye is local-first by design — and so is this website: no JavaScript, no analytics, no third-party requests.
| Data | Where it goes | Default |
|---|---|---|
| Blocklist checks | In memory, against a downloaded mirror — looked-up URLs never leave the machine | local |
| URLs on disk | Query-stripped session log under ~/.egress-eye/ | local |
| Secrets | Redacted at creation: 4-character preview + length, nothing more | local |
| Domain age | RDAP registrar queries for a looked-up URL's registrable domain | opt-out |
| Google Safe Browsing | Looked-up URLs are sent to Google | opt-in |
One engine, five harnesses
Each adapter drives the same detection engine; install is one command after a clone.
egress-eye init zcodeegress-eye init claude-codeegress-eye init codexegress-eye init hermesegress-eye init opencodefeasibility doc in /docsGet started
Requires Node 20+. Report-only by default — it never blocks unless you set
EGRESS_EYE_BLOCK=1, and then only on feed-confirmed hits.
Under the hood: zero runtime dependencies, 70/70 unit tests, a 39-scenario
eval corpus, CI on Linux and Windows.