GitHub Deploys eBPF to Break Circular Dependency Chain in Host-Based Deployments
GitHub Harnesses eBPF to Prevent Deployment Failures
In a move to eliminate a critical vulnerability in its deployment pipeline, GitHub is now using eBPF (extended Berkeley Packet Filter) to monitor and block deployment scripts that inadvertently create circular dependencies. The company revealed this new approach in an internal engineering update, highlighting how eBPF acts as a real-time gatekeeper to ensure that scripts don’t rely on GitHub services that might be offline during an outage.

“When github.com goes down, we lose access to our own source code and release artifacts,” said a GitHub engineering lead who spoke on condition of anonymity. “eBPF gives us a surgical way to break that loop without slowing down our deployment speed.”
Background: The Self-Hosting Problem
GitHub hosts all its own production code on github.com, making it its own biggest customer. This creates a simple circular dependency: to deploy a fix for github.com, engineers need access to github.com.
To mitigate this, GitHub maintains a mirror of critical repositories and pre-built rollback assets. But the company soon realized that even with those safeguards, deployment scripts themselves could introduce new circular dependencies—for example, by downloading a binary from GitHub during an outage.
“We thought we had solved the problem by mirroring code, but the scripts that actually run on hosts can still create hidden loops,” the engineer added. “eBPF allows us to enforce that no deployment process can reach back into GitHub.”
Three Types of Circular Dependencies Identified
During the design of its new host-based deployment system, GitHub identified three categories of circular dependencies that can paralyze a recovery operation:
- Direct dependency: A deploy script tries to pull the latest release of a tool from GitHub while GitHub is down. The script stalls.
- Hidden dependency: A tool already on the disk checks GitHub for an update before running. Even if the check is optional, a failure can cause a hang.
- Transient dependency: A deploy script calls an internal service that itself fetches a dependency from GitHub. The failure cascades back to the original script.
Each of these patterns can turn a minor incident into a full outage. “In the past, each team had to manually audit their scripts for these risks,” the engineer explained. “That approach didn’t scale.”

How eBPF Breaks the Chain
GitHub’s solution uses eBPF to attach a small program to the kernel’s syscall hooks. The program intercepts any outbound network calls made by deployment scripts and checks them against a whitelist of allowed destinations.
If a script attempts to reach github.com (or any internal service that would loop back), eBPF instantly blocks the call and logs the event. This prevents both direct and transitive dependencies from causing a hang or failure.
“eBPF is ideal because it operates at the kernel level—no changes to the scripts themselves, and almost zero overhead,” the engineer said. “We can test the eBPF rules in isolation before rolling them out to production hosts.”
What This Means for Site Reliability
By deploying eBPF, GitHub eliminates a entire class of failure modes that have historically plagued self‑hosting companies. The technique can be replicated by any organization that runs its own infrastructure and wants to enforce strict network boundaries during deployments.
“Other companies with similar circular dependencies—like cloud providers that run on their own cloud—can adopt this pattern,” noted the engineer. “It’s a lightweight, auditable way to guarantee that your deployment tools never reach back into the system you’re trying to fix.”
GitHub plans to open‑source the eBPF rules and tooling as a reference implementation, subject to internal review. The immediate impact is a drastic reduction in the risk of unrecoverable outages during critical incidents.
Related Discussions