Skills
Skill 9 of 14
Build or maintain Cloudflare Sandbox apps on @cloudflare/sandbox@next (SDK 1.0 preview).
2 minutes · 444 words · 5 sections
Install
npx skills add cloudflare/skills --skill sandbox-nextnpx skills add cloudflare/skills/plugin marketplace add cloudflare/skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
@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.
Before writing code, inspect the app:
| Check | Must match |
|---|---|
| npm dependency | @cloudflare/sandbox@next (or another preview tag) |
| Container image | Same line (e.g. cloudflare/sandbox:next, next-python) |
| If you find… | Action |
|---|---|
Default @cloudflare/sandbox (no @next) | Stop. Load sandbox-stable. Do not apply this skill’s APIs. |
User wants to port stable → @next | Stop. Load sandbox-migrate-to-next. |
| Self-deployed bridge only | Bridge is not on the 1.0 preview line yet. Keep bridge on stable package + image. Bridge (stable) (opens in a new tab) |
Never mix an @next Worker package with a stable container image (or the reverse).
Skills install: Agent setup (opens in a new tab) · cloudflare/skills (opens in a new tab)
sandbox.exec(argv) takes an argv list and resolves when the process starts. It returns a handle, not a finished command result.output(), logs(), waitForExit(), waitForPort(), waitForLog(), kill(signal?).["/bin/bash", "-lc", script].cd / export in one exec is not visible to the next. Pass cwd and env per launch, or one shell script.createTerminal + connect).timeout / AbortSignal cancel the wait only. They do not kill the process. Use kill or exec’s remote timeout.getProcess / listProcesses / getTerminal / listTerminals do not start a container; they return null / [] when none is up.setEnvVars / launch env. Live credentials stay in the Worker; use outbound handlers when the sandbox calls external APIs.gitCheckout on core, string-exec completion, session execution, sandbox.terminal(request)).Minimal shape:
import { getSandbox, proxyToSandbox, Sandbox } from "@cloudflare/sandbox";
export { Sandbox };
const sandbox = getSandbox(env.Sandbox, "user-123");
const process = await sandbox.exec(["python3", "-c", "print(2 + 2)"]);
const result = await process.output({ encoding: "utf8" });
// result.stdout, result.exitCodeTask-specific API documentation: references/api-quick-ref.md (opens in a new tab)
Examples index (next branch): references/examples.md (opens in a new tab)
Fetch the page before implementing. Installed @next types win over guesses.
@next line@next typesBuild or maintain Cloudflare Sandbox apps on @cloudflare/sandbox@next (SDK 1.0 preview). Use sandbox-migrate-to-next when porting a stable app.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 22 September 2026.SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Cloudflare, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./cloudflare/skills.md, and each skill at its own .md URL.2 files · 3 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of skill 9.
Documentation the agent loads on demand, rather than up front.