Manage local network rules
Local network rules allow or block destinations on top of your preset. You can add rules for all sandboxes or for one sandbox, narrow a rule to HTTP methods and paths, and remove rules you no longer need. For the host patterns a rule accepts, see Network and HTTP rule syntax.
Allow or block a destination
Use
sbx policy allow and
sbx policy deny to add or restrict access
on top of the active preset. Changes take effect immediately. Rules apply to
all sandboxes by default:
$ sbx policy allow network api.anthropic.com
$ sbx policy deny network ads.example.com
Specify multiple hosts in one command with a comma-separated list:
$ sbx policy allow network "api.anthropic.com,*.npmjs.org,*.pypi.org"
Allow or block a destination for one sandbox
Pass --sandbox <name> to scope a rule to one sandbox:
$ sbx policy allow network --sandbox my-sandbox api.example.com
$ sbx policy deny network --sandbox my-sandbox ads.example.com
You can also add deny rules for a sandbox when you create it, with
--deny-network on sbx create or sbx run:
$ sbx create --deny-network ads.example.com claude .
$ sbx run --deny-network ads.example.com claude
Pass the flag multiple times to deny more than one host. Rules added this way
appear in sbx policy ls <name>, like any other rule scoped to the sandbox.
To block a destination that a kit allows, add a deny rule for the sandbox that uses the kit. A deny rule takes precedence over the kit's allow rule:
$ sbx policy deny network --sandbox my-sandbox openrouter.ai
Removing a sandbox also removes the rules scoped to it.
Allow or block HTTP methods and paths
The rules in the previous sections match a whole host. An HTTP rule matches specific HTTP methods and paths on a host instead, so you can allow or block specific API requests. For example, you can let an agent read from an API without letting it write to it.
Add --method to an allow or deny rule to match specific HTTP methods, and
--path to narrow it to part of the host's URL space. Quote the path so your
shell doesn't expand the wildcard:
$ sbx policy allow network api.github.com --method GET --path '/repos/org/project/**'
Write the host without a scheme, such as api.github.com rather than
https://api.github.com. It follows the same patterns as network rules and can
include a port, but it must be a hostname. To match an IP address or a CIDR
range, use a network rule without --method or --path.
Choose methods
Pass several methods as a comma-separated list, or ANY to match every
method. Method names are case-insensitive, and ANY can't be combined with
specific methods:
$ sbx policy allow network api.github.com --method GET,HEAD
The accepted methods are GET, HEAD, POST, PUT, PATCH, DELETE,
OPTIONS, CONNECT, and TRACE.
Choose paths
A rule without --path matches every path on the host. A rule takes one path,
and a path needs a method. Repeating --path keeps only the last value, and a
comma is read as part of the path, so add a separate rule for each path:
$ sbx policy allow network api.github.com --method GET --path '/repos/**'
$ sbx policy allow network api.github.com --method GET --path '/users/**'
A path must start with / and be canonical. For the full path rules, see
HTTP method and path.
Match query parameters
Add --query to require URL query parameters, separately from the path. Repeat
the flag to require more than one. Like a path, a query restriction needs a
method, so keep --method or use --method ANY:
$ sbx policy allow network api.example.com --method GET --path '/search' \
--query 'team=platform' --query 'label=release*'
For value patterns and matching behavior, see Query parameters.
Block part of an allowed host
To restrict part of a host, add a deny rule with the same flags on top of a broader allow:
$ sbx policy allow network api.example.com
$ sbx policy deny network api.example.com --method POST --path '/admin/**'
Remove a rule
Remove a rule by resource or by rule ID:
$ sbx policy rm network --resource ads.example.com
$ sbx policy rm network --id 2d3c1f0e-4a73-4e05-bc9d-f2f9a4b50d67
To remove a rule scoped to a sandbox, pass --sandbox <name>:
$ sbx policy rm network --sandbox my-sandbox --resource api.example.com
To remove an HTTP rule, name the same method, path, and any --query flags you
added it with, or use its rule ID:
$ sbx policy rm network --resource api.example.com --method GET --path '/search' \
--query 'team=platform' --query 'label=release*'
To find a rule's ID, run sbx policy ls --wide. For more details, see
Inspect policy status and rules.
Allow outbound UDP
Outbound UDP is experimental and disabled by default. Turn on experimental features and UDP egress before you add UDP allow rules. The CLI warns you if you save a UDP rule while UDP egress is off:
$ sbx settings set platform.allowExperimentalFeatures true
$ sbx settings set feature.udp-egress true
$ sbx policy allow network --protocol udp api.example.com:443
Local allow rules apply to TCP by default. Use --protocol udp for UDP or
--protocol tcp,udp for both. Deny rules apply to both protocols by default,
and --protocol restricts a deny rule to one. UDP rules follow the same
organization and local precedence as TCP rules.
Some UDP traffic is blocked whatever your rules allow:
- Traffic to a destination that needs an HTTP, SOCKS5, system, or PAC-selected proxy, because those proxies can't carry UDP.
- Traffic to local-network destinations, including multicast, link-local, and
unspecified addresses,
255.255.255.255, and the broadcast addresses of the host's networks. This block applies before any policy is evaluated, so even a rule that allows all hosts doesn't permit it, and discovery protocols such as mDNS and SSDP don't work from a sandbox. UDP tohost.docker.internalisn't affected. The network log records these connections under the rule<udp local network boundary>.
To list UDP rules or check a destination:
$ sbx policy ls --protocol udp
$ sbx policy check network --protocol udp api.example.com:443
Set or reset the preset
If no preset is set, the CLI prompts you to choose one when you run a sandbox
in an interactive terminal. For more details, see
Start from a preset. To set the preset without
the prompt, or to start over with a new one, use sbx policy init or sbx policy reset.
Set the preset without the prompt
In non-interactive environments such as CI pipelines or headless servers, the
CLI can't prompt you, so commands such as sbx run return an error until a
preset is set. Use sbx policy init to set the preset before you run a
sandbox:
$ sbx policy init balanced
Available values are allow-all (Open), balanced (Balanced), and deny-all
(Locked Down). sbx policy init only works before a preset is set. To change
the preset after that, reset local policy.
Reset local policy
To remove all custom rules and start fresh with a new preset, use
sbx policy reset:
$ sbx policy reset
This deletes the local policy store, restarts the daemon, and prompts you to
choose a new preset. Running sandboxes stop when the daemon shuts down. Pass
--force to skip the confirmation prompt:
$ sbx policy reset --force
Warning
sbx policy resetdeletes all locally configured policy rules, including any destinations you approved. Those destinations are requested again the next time a sandbox reaches them. To pick up organization policy changes without deleting local rules, usesbx policy refreshinstead. For more details, see Organization policy changes aren't taking effect.