Sandboxes

Choose a sandbox

Decide where each project's agents run, Docker, Cloudflare Containers or the host, and what each option protects.

Agents run commands without asking (bypassPermissions), so where they run matters. Each project picks a sandbox provider. Docker is the default when docker.enabled is on; Cloudflare runs workspaces in the cloud; the host runs agents as your user.

DockerCloudflareHost
Set withsandbox.provider: docker, or docker.enabled: truesandbox.provider: cloudflaresandbox.provider: host, or docker.enabled: false
Runs onThis Mac or the serverCloudflare Containers, through your bridge WorkerThis Mac or the server, as the user
FilesystemOnly the workspace is mounted; read-only rootThe workspace lives in CloudflareEverything the user can reach
NetworkDefault-deny, allowlist proxy; a network per task; GitHub and registries read-onlyDefault-deny, the same allowlistUnrestricted
Model and tracker keysNever enter the container (the egress proxy adds the model credential)Never enter Cloudflare (relayed from the host)In the process environment
HooksIn a disposable containerIn the sandboxOn the host
Git on agent filesIn an offline throwaway containerIn the sandbox, verified bundlesOn the host
Browser, preview, terminalYesYesYes (preview at the app's own port)
Linked services next to the agentYesNot yet; use a hosted url:No
NeedsDocker and the agent imageA deployed bridge and its tokenNothing
Host mode is high-trust

Without a sandbox, an agent with bypassPermissions can run any command as you, read your files and reach your network. The Workflow inspector shows High-trust: commands run on your Mac without approval. Use it only with repositories you trust. On the Mac it's off until you allow it per project; on a server it isn't possible. See The sandbox floor.

Set the provider#

In the Workflow tab, Settings → Sandbox → Run agents in offers Docker, Cloudflare, and None (runs on the host). Or edit WORKFLOW.md:

WORKFLOW.md
sandbox:
  provider: docker          # docker | cloudflare | host
  network:
    mode: allowlist         # default
    allow: [api.stripe.com]
  hooks: sandbox            # default
  read_only_root: true      # default

The sandbox floor#

WORKFLOW.md lives in the repository, where agents can edit it on their task branch, so it doesn't get the last word on isolation. Each host has a floor:

Mac appharnessd
Agents must run in Docker or CloudflareBy defaultAlways
Not allowedsandbox.provider: host (or docker.enabled: false), sandbox.hooks: host, docker.extra_args, docker.network, sandbox.read_only_root: falseThe same
Turn it offPer project: Edit Project → Allow agents to run directly on this MacNot possible

A project below the floor pauses. Its header shows sandbox_policy: followed by what isn't allowed and how to fix it, for example agents must run in a sandbox here: add docker: { enabled: true }. On the Mac the message also points at the Edit Project setting. The project resumes once WORKFLOW.md is fixed or the setting changes. On a server, saving a WORKFLOW.md below the floor is refused.

Allow agents to run directly on this Mac is stored in the app's own project list, not in WORKFLOW.md, so an agent can't turn it on. With it on, everything above is allowed for that project, and hooks and agents without a sandbox run as you. Projects on a server follow the server's floor.

What every sandbox shares#

  • An allowlisted network. Agents reach package registries and source hosts from the host-wide list, the project's own hosts, their model (through a relay) and SI Fabrik's tracker tools. Cloud metadata endpoints are always blocked. See Network policy.
  • Model credentials outside the sandbox. Docker and Cloudflare sandboxes hold only a placeholder; SI Fabrik's relay adds the real key. See Agent credentials.
  • Read-only GitHub and package registries (Docker). Agents can clone and install, but not push or publish.
  • Tracker tools on the host. Agents never hold tracker tokens.
  • Branch delivery that never runs git on the host in an agent-controlled directory. See Branches and pull requests.
  • Blocked hosts reported on each run with an Allow button.

The Sandboxes screen#

Open Sandboxes (⌘4) in the sidebar. It shows where agents run: disposable Docker containers on this Mac or on your servers, or Cloudflare Containers through a bridge.

  • Docker: engine status, the agent and browser images with Build, and the containers SI Fabrik started, with logs and a stop button.
  • Cloudflare: the bridge's health, the relay, agents running in Cloudflare, and kept workspaces.
  • Servers: each connected server below this Mac, with the same cards. See Server sandboxes.

See also#