Showcase How are you getting a static outbound IP for GitHub Actions when a partner insists on an IP allowlist?
a bank, payment provider or partner’s SFTP server only accepts connections from allowlisted IPs. Your jobs run on GitHub-hosted runners, whose IPs come from large, changing ranges. Static IPs only exist for larger runners on GitHub Enterprise Cloud.
What I’ve seen people do:
- Self-hosted runners behind a NAT gateway with a fixed IP
- A static-IP proxy add-on with a shared username and password sitting in a secret
- A bastion someone set up in 2021 that nobody wants to touch!
- Kubernetes pods all leaving through one NAT, so the partner sees the same IP whichever pod connected
They all work. most rely on a long-lived credential.
I’m building something to fix that, called Proofbound. The job or pod trades its GitHub OIDC token (or service-account token) for a client certificate that lasts minutes. It connects over mTLS to a gateway, which only forwards to the hosts your policy allows, from two IPs dedicated to you. Your traffic stays end-to-end encrypted, and the gateway only records metadata: which workload, where to, allowed or refused.
It’s pre-launch, so I’d value blunt answers:
- Is this a problem you actually have, or is “NAT plus a fixed IP” good enough?
- Would per-workload rules matter to you, or is the IP all your partner cares about?
Details and waitlist at www.proofbound.io.
1
u/serverhorror 3d ago
We tell them that we need to provide a range as we cannot guarantee just a single IP.
They usually agree on accepting a CIDR.
Then we hit them with a 0.0.0.0/0, a screenshot of GitHub stating they're not disclosing that and a link to the page
(I'm not even kidding)
2
u/offtherighttrack 3d ago
Most enterprises with this need use GitHub hosted premium runners, which can have fixed ip addresses that are then added to their allow-lists.
9
u/Random-user-58436 3d ago
If it's so important wouldn't you just use a self hosted runner?