Network limits control outbound internet access from sandboxes. Each sandbox runs behind a firewall that restricts which external IP addresses and domains it can reach, preventing untrusted code from exfiltrating data or contacting arbitrary hosts.
Default network policies are applied automatically based on your organization’s tier. You can also configure access per sandbox using three parameters:
networkAllowList for IPv4 CIDR ranges
domainAllowList for domains and wildcard domains
networkBlockAll to block all outbound traffic
Set these parameters when creating a sandbox or update them while the sandbox is running .
Network limits are automatically applied to sandboxes based on your organization’s billing tier. This provides secure and controlled internet access for development environments:
Tier 1 & Tier 2 : Network access is restricted and cannot be overridden at the sandbox level. Organization-level network restrictions take precedence over sandbox-level settings. Even with networkAllowList or domainAllowList specified when creating a sandbox, the organization’s network restrictions still apply
Tier 3 & Tier 4 : Full internet access is available by default, with the ability to configure custom network settings
Essential services are available on all tiers and include services essential for development: package registries, container registries, Git repositories, CDN services, platform services, system package managers, and more
Create a sandbox with network restrictions to control outbound internet access.
The options are mutually exclusive. Set at most one non-empty value. Sending a conflicting combination returns a 400 error. Empty-string allow lists count as unset and never conflict.
from daytona import CreateSandboxFromSnapshotParams, Daytona
# Allow access to specific IP addresses (Wikipedia, X/Twitter, private network)
sandbox = daytona. create ( CreateSandboxFromSnapshotParams (
network_allow_list = ' 208.80.154.232/32,199.16.156.103/32,192.168.1.0/24 '
# Allow access to specific domains
sandbox = daytona. create ( CreateSandboxFromSnapshotParams (
domain_allow_list = ' example.com,*.daytona.io '
# Or block all network access
sandbox = daytona. create ( CreateSandboxFromSnapshotParams (
import { Daytona } from ' @daytona/sdk '
const daytona = new Daytona ()
// Allow access to specific IP addresses (Wikipedia, X/Twitter, private network)
const sandboxWithCidrAllowList = await daytona . create ({
networkAllowList: ' 208.80.154.232/32,199.16.156.103/32,192.168.1.0/24 '
// Allow access to specific domains
const sandboxWithDomainAllowList = await daytona . create ({
domainAllowList: ' example.com,*.daytona.io '
// Or block all network access
const blockedSandbox = await daytona . create ({
daytona = Daytona :: Daytona . new
# Allow access to specific IP addresses (Wikipedia, X/Twitter, private network)
sandbox = daytona. create (
Daytona :: CreateSandboxFromSnapshotParams . new (
network_allow_list: ' 208.80.154.232/32,199.16.156.103/32,192.168.1.0/24 '
# Allow access to specific domains
sandbox = daytona. create (
Daytona :: CreateSandboxFromSnapshotParams . new (
domain_allow_list: ' example.com,*.daytona.io '
# Or block all network access
sandbox = daytona. create (
Daytona :: CreateSandboxFromSnapshotParams . new (
" github.com/daytona/clients/sdk-go/pkg/daytona "
" github.com/daytona/clients/sdk-go/pkg/types "
client , err := daytona . NewClient ()
ctx := context . Background ()
// Allow access to specific IP addresses (Wikipedia, X/Twitter, private network)
allowList := " 208.80.154.232/32,199.16.156.103/32,192.168.1.0/24 "
_ , err = client . Create ( ctx , types . SnapshotParams {
SandboxBaseParams : types . SandboxBaseParams {
NetworkAllowList : & allowList ,
// Allow access to specific domains
domainAllowList := " example.com,*.daytona.io "
_ , err = client . Create ( ctx , types . SnapshotParams {
SandboxBaseParams : types . SandboxBaseParams {
DomainAllowList : & domainAllowList ,
// Or block all network access
_ , err = client . Create ( ctx , types . SnapshotParams {
SandboxBaseParams : types . SandboxBaseParams {
import io . daytona . sdk . Daytona ;
import io . daytona . sdk . Sandbox ;
import io . daytona . sdk . model . CreateSandboxFromSnapshotParams ;
public static void main ( String [] args ) {
try ( Daytona daytona = new Daytona ()) {
// Allow access to specific domains
CreateSandboxFromSnapshotParams domainParams = new CreateSandboxFromSnapshotParams ();
domainParams . setDomainAllowList ( " example.com,*.daytona.io " );
Sandbox domainRestrictedSandbox = daytona . create (domainParams);
// Or block all network access
CreateSandboxFromSnapshotParams blockedParams = new CreateSandboxFromSnapshotParams ();
blockedParams . setNetworkBlockAll (true);
Sandbox blockedSandbox = daytona . create (blockedParams);
# Allow access to specific IP addresses (Wikipedia, X/Twitter, private network)
curl ' https://app.daytona.io/api/sandbox ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
"networkAllowList": "208.80.154.232/32,199.16.156.103/32,192.168.1.0/24"
# Allow access to specific domains
curl ' https://app.daytona.io/api/sandbox ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
"domainAllowList": "example.com,*.daytona.io"
# Or block all network access
curl ' https://app.daytona.io/api/sandbox ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
# Allow access to specific IP addresses (Wikipedia, X/Twitter, private network)
daytona create --network-allow-list ' 208.80.154.232/32,199.16.156.103/32,192.168.1.0/24 '
# Or block all network access
daytona create --network-block-all
Update network settings for running sandboxes.
This operation requires the WRITE_SANDBOXES permission. Organizations on Tier 3 and Tier 4 can change outbound firewall policy on a running sandbox. The API applies the new rules and persists them on the sandbox. The sandbox keeps running; stop or start are not required.
Organizations on Tier 1 or Tier 2 cannot override network policy at the sandbox level, and the API returns an error in that case.
Sending networkAllowList as an empty string clears a stored CIDR allow list
Sending domainAllowList as an empty string clears a stored domain allow list
Sending networkBlockAll: true blocks all outbound traffic and clears both the stored CIDR and domain allow lists
Sending only networkBlockAll: false removes the block-all rule and clears both the stored CIDR and domain allow lists
# Block all outbound traffic (clears the CIDR allow list)
sandbox. update_network_settings ( network_block_all = True)
# Remove the block-all rule and clear the CIDR allow list
sandbox. update_network_settings ( network_block_all = False)
# Apply or replace a CIDR allow list (implies not blocking all)
sandbox. update_network_settings (
network_allow_list = ' 208.80.154.232/32,192.168.1.0/24 '
# Apply or replace a domain allow list
sandbox. update_network_settings (
domain_allow_list = ' example.com,*.daytona.io '
# Clear a stored CIDR allow list (empty string). Outbound traffic still follows `network_block_all`.
sandbox. update_network_settings ( network_allow_list = '' )
# Clear a stored domain allow list
sandbox. update_network_settings ( domain_allow_list = '' )
// Block all outbound traffic (clears the CIDR allow list)
await sandbox . updateNetworkSettings ({ networkBlockAll: true })
// Remove the block-all rule and clear the CIDR allow list
await sandbox . updateNetworkSettings ({ networkBlockAll: false })
// Apply or replace a CIDR allow list (implies not blocking all)
await sandbox . updateNetworkSettings ({
networkAllowList: ' 208.80.154.232/32,192.168.1.0/24 ' ,
// Apply or replace a domain allow list
await sandbox . updateNetworkSettings ({
domainAllowList: ' example.com,*.daytona.io ' ,
// Clear a stored CIDR allow list (empty string). Outbound traffic still follows `networkBlockAll`.
await sandbox . updateNetworkSettings ({ networkAllowList: '' })
// Clear a stored domain allow list
await sandbox . updateNetworkSettings ({ domainAllowList: '' })
# Block all outbound traffic (clears the CIDR allow list)
sandbox. update_network_settings (network_block_all: true)
# Remove the block-all rule and clear the CIDR allow list
sandbox. update_network_settings (network_block_all: false)
# Apply or replace a CIDR allow list (implies not blocking all)
sandbox. update_network_settings (
network_allow_list: ' 208.80.154.232/32,192.168.1.0/24 '
# Apply or replace a domain allow list
sandbox. update_network_settings (
domain_allow_list: ' example.com,*.daytona.io '
# Clear the CIDR allow list (empty string)
sandbox. update_network_settings (network_allow_list: '' )
# Clear the domain allow list
sandbox. update_network_settings (domain_allow_list: '' )
import apiclient " github.com/daytona/clients/api-client-go "
settings := apiclient . NewUpdateSandboxNetworkSettings ()
settings . SetNetworkBlockAll (true)
if err := sandbox . UpdateNetworkSettings ( ctx , * settings ); err != nil {
restore := apiclient . NewUpdateSandboxNetworkSettings ()
restore . SetNetworkBlockAll (false)
if err := sandbox . UpdateNetworkSettings ( ctx , * restore ); err != nil {
allow := apiclient . NewUpdateSandboxNetworkSettings ()
allow . SetNetworkAllowList ( " 208.80.154.232/32,192.168.1.0/24 " )
if err := sandbox . UpdateNetworkSettings ( ctx , * allow ); err != nil {
domainAllow := apiclient . NewUpdateSandboxNetworkSettings ()
domainAllow . SetDomainAllowList ( " example.com,*.daytona.io " )
if err := sandbox . UpdateNetworkSettings ( ctx , * domainAllow ); err != nil {
clearDomainAllow := apiclient . NewUpdateSandboxNetworkSettings ()
clearDomainAllow . SetDomainAllowList ( "" )
if err := sandbox . UpdateNetworkSettings ( ctx , * clearDomainAllow ); err != nil {
import io . daytona . api . client . model . UpdateSandboxNetworkSettings ;
// Block all outbound traffic (clears the CIDR allow list)
sandbox . updateNetworkSettings (new UpdateSandboxNetworkSettings (). networkBlockAll (true));
// Remove the block-all rule and clear the CIDR allow list
sandbox . updateNetworkSettings (new UpdateSandboxNetworkSettings (). networkBlockAll (false));
// Apply or replace a CIDR allow list
sandbox . updateNetworkSettings (
new UpdateSandboxNetworkSettings (). networkAllowList ( " 208.80.154.232/32,192.168.1.0/24 " ));
// Apply or replace a domain allow list
sandbox . updateNetworkSettings (
new UpdateSandboxNetworkSettings (). domainAllowList ( " example.com,*.daytona.io " ));
// Clear a stored domain allow list
sandbox . updateNetworkSettings (new UpdateSandboxNetworkSettings (). domainAllowList ( "" ));
curl ' https://app.daytona.io/api/sandbox/SANDBOX_ID_OR_NAME/network-settings ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
--data ' {"networkBlockAll": true} '
# Remove the block-all rule and clear the CIDR allow list
curl ' https://app.daytona.io/api/sandbox/SANDBOX_ID_OR_NAME/network-settings ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
--data ' {"networkBlockAll": false} '
# Apply or replace a domain allow list
curl ' https://app.daytona.io/api/sandbox/SANDBOX_ID_OR_NAME/network-settings ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
--data ' {"domainAllowList": "example.com,*.daytona.io"} '
# Clear a stored domain allow list
curl ' https://app.daytona.io/api/sandbox/SANDBOX_ID_OR_NAME/network-settings ' \
--header ' Content-Type: application/json ' \
--header ' Authorization: Bearer YOUR_API_KEY ' \
--data ' {"domainAllowList": ""} '
The network allow list is a comma-separated list of IPv4 CIDR blocks.
IPv4 only : hostnames, domains, and IPv6 are not supported
CIDR required : every entry must include a / prefix length integer in the range 0 to 32 (inclusive), for example: /32
CIDR format : use standard CIDR notation (A.B.C.D/N). Do not include extra / segments
Max 10 entries : the list cannot contain more than 10 comma-separated items
Whitespace is ignored : entries are trimmed, so spaces around commas are ok
Examples:
Single IP : 208.80.154.232/32 (Wikipedia)
Subnet : 192.168.1.0/24 (Private network)
Multiple networks : 208.80.154.232/32,199.16.156.103/32,10.0.0.0/8
The domain allow list is a comma-separated list of DNS domains. When a domain allow list is set, outbound traffic is limited to the listed domains and other external domains are blocked.
Domains only : use hostnames such as example.com or api.openai.com. Do not include protocols, paths, ports, or query strings
Wildcards supported : prefix a domain with *. to allow the base domain and its subdomains, for example *.daytona.io
Max 20 entries : the list cannot contain more than 20 comma-separated items
Whitespace is ignored : entries are trimmed, so spaces around commas are ok
Clear on update : send domainAllowList as an empty string when updating network settings to clear a stored domain allow list
Examples:
Single domain : example.com
Wildcard domain : *.daytona.io
Multiple domains : example.com,*.daytona.io,api.openai.com
To test network connectivity from your sandbox:
# Test HTTP connectivity to allowed addresses
curl -I https://208.80.154.232
# Test HTTP connectivity to allowed domains
curl -I https://example.com
# Test package manager access (allowed on all tiers)
apt update # For Ubuntu/Debian
pip install --dry-run requests # For Python
Network limits provide several security advantages:
Prevents data exfiltration from sandboxes
Reduces attack surface by limiting external connections
Complies with security policies for development environments
Enables fine-grained control over network access
Caution
Enabling unrestricted network access may pose security risks when executing untrusted code. It is recommended to allow only the network addresses or domains you need, or block all network access. Test network connectivity before starting critical development work and consider upgrading your tier if you need access to many external services.
Essential services are available on all tiers and include services essential for development.
Service Domains NPM Registry registry.npmjs.org , registry.npmjs.com , nodejs.org , nodesource.com , deb.nodesource.com , npm.pkg.github.comYarn Packages yarnpkg.com , *.yarnpkg.com , yarn.npmjs.org , yarnpkg.netlify.comBun bun.sh , *.bun.sh
Service Domains Nix cache.nixos.org , channels.nixos.org , releases.nixos.org
Service Domains GitHub github.com , *.github.com , *.githubusercontent.com , gh.io , ghcr.ioGitLab gitlab.com , *.gitlab.comBitbucket bitbucket.orgCode Storage code.storage , *.code.storageAzure DevOps dev.azure.com , *.dev.azure.com , login.microsoftonline.com , visualstudio.com , *.visualstudio.com , ssh.dev.azure.com , vs-ssh.visualstudio.com
Service Domains PyPI pypi.org , pypi.python.org , files.pythonhosted.org , bootstrap.pypa.io , astral.sh , *.astral.shConda repo.anaconda.com
Service Domains Rust crates.io , static.crates.io , index.crates.io , static.rust-lang.org , rustup.rs , sh.rustup.rs , doc.rust-lang.org
Service Domains Go proxy.golang.org , sum.golang.org , index.golang.org , go.dev , golang.org , *.golang.org
Service Domains CMake cmake.org
Service Domains Composer packagist.org , *.packagist.org , packagist.com
Service Domains NuGet nuget.org , *.nuget.org
Service Domains Hex hex.pm , *.hex.pm
Service Domains RubyGems rubygems.org , *.rubygems.org
Service Domains Ubuntu Repos *.ubuntu.comDebian Repos *.debian.org , cdn-fastly.deb.debian.org
Service Domains CDN Services fastly.com , cloudflare.com , gateway.ai.cloudflare.com , *.workers.dev , r2.cloudflarestorage.com , *.r2.cloudflarestorage.comJavaScript CDNs unpkg.com , jsdelivr.net
Service Domains Anthropic *.anthropic.com , claude.ai , *.claude.ai , platform.claude.comOpenAI openai.com , *.openai.com , chatgpt.comGoogle AI generativelanguage.googleapis.com , gemini.google.com , aistudio.google.com , ai.google.dev , models.devPerplexity api.perplexity.aiDeepSeek api.deepseek.comGroq api.groq.comExpo api.expo.devOpenRouter openrouter.aiQwen chat.qwen.ai , dashscope.aliyuncs.com , dashscope-intl.aliyuncs.comCursor cursor.com , *.cursor.com , *.cursor.shOpenCode opencode.ai , *.opencode.aiAider aider.chatHugging Face huggingface.co , *.huggingface.co , hf.co , *.hf.co , *.xethub.hf.co , *.cdn.hf.co , *.aws.cdn.hf.co , *.gcp.cdn.hf.coOther AI Services api.letta.com , api.fireworks.ai , open.bigmodel.cn , *.z.ai , *.moonshot.ai , *.minimax.io , *.kimi.com , ai-gateway.vercel.sh , api.elevenlabs.io , api.featherless.ai , ampcode.com , *.ampcode.com , *.openai.azure.com , *.services.ai.azure.com , trynia.ai , *.trynia.ai , api.x.ai , copass.id , *.copass.id , zenmux.ai , *.devin.ai
Service Domains Docker Registries docker.io , *.docker.io , *.docker.comMicrosoft Container Registry mcr.microsoft.comKubernetes Registry registry.k8s.ioGoogle Container Registry gcr.io , *.gcr.io , *.pkg.dev , registry.cloud.google.comQuay quay.io , quay-registry.s3.amazonaws.comAWS ECR public.ecr.aws , *.ecr.aws
Service Domains Maven Repos repo1.maven.org , repo.maven.apache.org
Service Domains Google Fonts fonts.googleapis.com , fonts.gstatic.com
Region Domains US East *.us-east-1.amazonaws.com , *.us-east-2.amazonaws.comUS West *.us-west-1.amazonaws.com , *.us-west-2.amazonaws.comEU *.eu-central-1.amazonaws.com , *.eu-central-2.amazonaws.com , *.eu-north-1.amazonaws.com , *.eu-south-1.amazonaws.com , *.eu-south-2.amazonaws.com , *.eu-west-1.amazonaws.com , *.eu-west-2.amazonaws.com , *.eu-west-3.amazonaws.comAsia Pacific *.ap-south-1.amazonaws.com
Service Domains Google Cloud Platform accounts.google.com , *.googleapis.com , *.storage.googleapis.com , *.gstatic.comGoogle Downloads dl.google.comGoogle Package Registry packages.cloud.google.com
Service Domains Azure Blob Storage *.blob.core.windows.netBox api.box.com , app.box.com , *.app.box.com , upload.box.com , account.box.com , *.ent.box.com , *.boxcloud.com
Service Domains Daytona app.daytona.io
Service Domains Convex convex.dev , *.convex.dev , *.convex.cloud , *.convex.siteHeroku herokuapp.com , *.herokuapp.comVercel vercel.com , *.vercel.com , *.vercel.appSupabase supabase.com , *.supabase.com , supabase.co , *.supabase.coClerk clerk.com , *.clerk.com , clerk.dev , *.clerk.dev , accounts.dev , *.accounts.dev , clerk.accounts.dev , *.clerk.accounts.devWorkOS workos.com , *.workos.com , authkit.app , *.authkit.appInngest inngest.com , *.inngest.comPostHog posthog.com , *.posthog.comSentry sentry.io , *.sentry.io , sentry-cdn.com , *.sentry-cdn.comLinear linear.app , *.linear.appFigma figma.com , *.figma.com , *.figmafiles.comClickUp clickup.com , *.clickup.comAtlassian acli.atlassian.comRailway railway.app , *.railway.app , railway.com , *.railway.comAutumn api.useautumn.comPlaywright playwright.dev , cdn.playwright.devDoppler doppler.com , *.doppler.comAuth0 auth0.com , *.auth0.comSanity sanity.io , *.sanity.io , sanity.work , *.sanity.workShopify shopify.com , *.shopify.com , *.myshopify.com , *.shopify.dev , *.shopifycdn.comMesa mesa.dev , *.mesa.devBuildkite buildkite.com , *.buildkite.comShortcut api.app.shortcut.com , app.shortcut.comUSAspending api.usaspending.gov , files.usaspending.govLogo Dev img.logo.dev , logo.devKiro *.kiro.dev , *.us-east-1.kiro.dev , prod.download.cli.kiro.devBrowserbase browserbase.com , *.browserbase.com , connect.usw2.browserbase.com , connect.use1.browserbase.com , connect.euc1.browserbase.com , connect.apse1.browserbase.com
Service Domains Telegram api.telegram.orgWhatsApp web.whatsapp.com , *.whatsapp.net
Service Domains Langfuse *.langfuse.com , *.cloud.langfuse.comLangSmith api.smith.langchain.com