Sandbox SDK — @next (1.0 preview)
Isolated Linux environments on Cloudflare Containers, driven from Workers.
Prefer preview docs and installed @next types over memory. APIs change; this skill is a gate, a contract, and a retrieval map—not a full manual.
We recommend new projects on this line. Apps still on the default package use sandbox-stable. Port only when asked, via sandbox-migrate-to-next.
1. Gate — confirm the package line
Before writing code, inspect the app:
Never mix an @next Worker package with a stable container image (or the reverse).
Skills install: Agent setup · cloudflare/skills
2. Contract — non-negotiables
sandbox.exec(argv)takes an argv list and resolves when the process starts. It returns a handle, not a finished command result.- Collect results with handle methods:
output(),logs(),waitForExit(),waitForPort(),waitForLog(),kill(signal?). - No implicit shell. Shell syntax needs an explicit shell, e.g.
["/bin/bash", "-lc", script]. - Each launch is independent. A
cd/exportin oneexecis not visible to the next. Passcwdandenvper launch, or one shell script. - Process handles have no stdin. Interactive use → terminals (
createTerminal+connect). - Local wait
timeout/AbortSignalcancel the wait only. They do not kill the process. Usekillorexec’s remotetimeout. getProcess/listProcesses/getTerminal/listTerminalsdo not start a container; they returnnull/[]when none is up.- Process and terminal IDs belong to the current container, not forever to a sandbox ID. For work that must survive replace, store the full job (argv, cwd, env, app state)—not only an id.
- Non-secret config only in
setEnvVars/ launchenv. Live credentials stay in the Worker; use outbound handlers when the sandbox calls external APIs. - Do not invent removed stable APIs (
gitCheckouton core, string-execcompletion, session execution,sandbox.terminal(request)). - Do not use one retry loop for every error (see Errors docs).
Minimal shape:
Task-specific API documentation: references/api-quick-ref.md [blocked]
Examples index (next branch): references/examples.md [blocked]
3. Retrieve — open the doc for the task
Fetch the page before implementing. Installed @next types win over guesses.
4. Before you ship
- Lockfile and Dockerfile on the same
@nextline - Typecheck against installed
@nexttypes - No live secrets in sandbox env
- Production preview hostnames need wildcard DNS on a custom domain when using those URL patterns


