- Per goal: pass
egress_allowlistwhen you create the goal. Setting it, even to[], limits every sandbox of that goal. - Per organization: an admin turns on default-deny with
PUT /v1/org/sandbox-egress{ "default_deny": true }. Every sandbox of the organization’s goals is then limited, with or without a goal allowlist.
What is enforced
The sandbox’s network filter denies every connection except OneShot’s API and the listed hosts. Its limits:- Hostnames are matched on the HTTP
Hostheader (port 80) and the TLS server name (port 443). Other ports are matched by address, so list an address or range for them. - A hostname on a shared CDN endpoint may expose other sites served there.
- With hostnames in the allowlist, the sandbox can also reach the public DNS resolver
8.8.8.8. This cannot be closed today. - Only IPv4 is filtered.
Blocked attempts
There is no log of denied connections at the network level, and no command is refused on its text: a URL in a command is data until a connection is made, so every command runs and the network filter decides. The sandbox runtime records what it observes at run time asegress_blocked goal events with source: command_failure: a finished command, including a background one, reported a refused or reset connection. The host is given when the command named one outside the allowlist.
An attempt inside a script that hides its errors is blocked but produces no event. Reports are retried and flushed before the agent exits. On the agent loop, where commands run through the platform, a blocked attempt fails the command and produces no event.
OneShot tools the sandbox calls (web read, search, browser, email) run outside the sandbox and are not limited by this setting.
API
Both return
{ success: true, data: { default_deny } }. Each change is an org.sandbox_egress_changed audit entry.