Egret
The agent - CLI + GitHub Action. eBPF egress filtering, monitoring, and audit-mode policy generation.
Runtime egress security for CI/CD
Egret wraps a command and watches it through eBPF - every outbound connection, process, and file write. Turn on block mode and it enforces a domain allowlist. No server, no account, no phone-home.
$ sudo egret run --config policy.yaml --mode block -- ./build.sh
✔ github.com allowed 203.0.113.7
✔ registry.npmjs.org allowed
✖ evil.example.com BLOCKED raw-ip
Get started
The agent - CLI + GitHub Action. eBPF egress filtering, monitoring, and audit-mode policy generation.
The self-hosted dashboard - run history, new-endpoint drift, and org-wide fleet views for teams.
The problem
A build step pulls hundreds of dependencies, each running arbitrary install scripts with your credentials in the environment. A single compromised package can exfiltrate secrets or your source to anywhere - and you'd never see the connection. Egret makes egress observable, then enforceable.
Capabilities
Records every outbound connection - PID, process, IP, port, and domain when DNS is correlated. See exactly what your build talks to.
Block mode is default-deny with a domain allowlist, backed by a local DNS proxy and an nftables dynamic allow set. Fail-closed teardown.
Observes execve/fork through eBPF to reconstruct the whole process tree of a run - what spawned what.
Flags writes to protected paths - .git/, ~/.ssh/, /etc/ - so a compromised step tampering with your source is visible.
Observe a run, then emit a ready-to-paste suggested allowlist. Start in audit, graduate to block with confidence.
Markdown + JSON + SARIF, written to the GitHub Actions job summary and uploaded to Code Scanning. No server required.
Why Egret
Apache-2.0. Audit every line - appropriate for a security tool.
No server, no account, no phone-home. Runs entirely on your runner.
Kernel-level visibility with negligible overhead - not a proxy or a wrapper hack.
Start passive, generate a policy from real traffic, then enforce with confidence.
Quickstart
Observe a run with zero risk, turn the observed endpoints into a policy, then enforce it.
# 1. Observe a build in audit mode (logs, never blocks).
sudo egret run --config policy.yaml --mode audit -- ./build.sh
# 2. Turn the observed run into a suggested allowlist.
egret audit --from hardened-report/report.json --emit policy.suggested.yaml
# 3. Enforce it.
sudo egret run --config policy.suggested.yaml --mode block -- ./build.sh
Or wrap a whole GitHub Actions job:
# job permissions: security-events: write (SARIF upload)
- uses: NX1X/Egret@v0
with:
policy: .github/egret-policy.yaml
mode: audit # or: block
command: make ci # your whole build, monitored end-to-end
Optional · Tier 3