Network access
Sandboxes have no IP address of their own. Their outbound traffic leaves from IP addresses that CoAI Sandbox shares with other customers. For now, internet access is allowlist only at every level: A0, A1 and A2 reach the same allowlist below, and the level sets the speed and connection limits (tiers and limits page). Open internet access for A1 and A2 is planned.
The allowlist (every level)
At every level, a sandbox reaches only these names (and, for an entry *.name, the names under it), on TCP ports 80 and 443, through
CoAI Sandbox's transparent proxy; DNS answers only these names:
- Package repositories:
pypi.org,files.pythonhosted.org,registry.npmjs.org,github.com,codeload.github.com,objects.githubusercontent.com,raw.githubusercontent.com,proxy.golang.org,sum.golang.org,deb.debian.org,security.debian.org,archive.ubuntu.com,security.ubuntu.com,cloud.r-project.org,repo.maven.apache.org,index.crates.io,static.crates.io - Model APIs:
api.openai.com,api.anthropic.com,generativelanguage.googleapis.com,openrouter.ai,api.deepseek.com,coaiwork.com,global.coaiwork.com
So pip install, npm install, go get, apt-get and git clone from GitHub work at every level, and so do the model APIs
listed. Other destinations fail to resolve or to connect.
A1 and A2: allowlist only for now
A1 and A2 have the same allowlist as A0, with the higher speed and connection limits of their level. Open internet access for A1 and A2 is planned; it is not available yet, so destinations outside the allowlist fail at every level.
Always blocked
Outbound e-mail (TCP ports 25, 465, 587 and 2525) is blocked at every level; the Acceptable Use Policy lists what else is not allowed (mining, scanning, attacks, proxies for others, and more).
Controlling it from the SDK
The SDK's network options work as with E2B, within your level: allow_internet_access=False (allowInternetAccess: false)
turns outbound access off; network={"deny_out": [...], "allow_out": [...]} restricts it further; PUT
/sandboxes/{id}/network (the SDK's network update) replaces the rules of a running sandbox. A level's limits always apply:
at every level, an allow_out entry outside the allowlist has no effect. egressProxy, rules (header transforms),
maskRequestHost and httpsPorts are not supported yet (400 unsupported_feature).
Reaching a sandbox
A service in a sandbox is reachable at https://<port>-<sandbox id>.us-dal.coaisandbox.app (the SDK's get_host(port) /
getHost(port)). At A0 such a request needs the sandbox's traffic access token (header e2b-traffic-access-token, which the
SDK gives you); asking for public access there is not refused, the token is still required (the Python SDK asks for it
whenever you set network=). At A1 and A2 it is public by default, as with E2B; set the network option
allow_public_traffic (allowPublicTraffic) to false to require the token.