← CloudflareCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Cloudflare
Snapshot Oct 1, 2026 · 00:02 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "sandbox-next",
"description": "Use when building or changing Cloudflare Sandbox apps on @cloudflare/sandbox@next (Sandbox SDK 1.0 preview)—code execution, AI runners, interpreters, CI-like jobs, terminals, files, mounts, tunnels, preview URLs, lifecycle, or errors. Not for the default stable package (use sandbox-stable) or for porting stable to @next (use sandbox-migrate-to-next).",
"included_files": [
{
"relative_path": "references/api-quick-ref.md",
"size_in_bytes": 3344
},
{
"relative_path": "references/examples.md",
"size_in_bytes": 526
}
],
"skill_md_contents": "---\nname: sandbox-next\ndescription: Use when building or changing Cloudflare Sandbox apps on @cloudflare/sandbox@next (Sandbox SDK 1.0 preview)—code execution, AI runners, interpreters, CI-like jobs, terminals, files, mounts, tunnels, preview URLs, lifecycle, or errors. Not for the default stable package (use sandbox-stable) or for porting stable to @next (use sandbox-migrate-to-next).\n---\n\n# Sandbox SDK — `@next` (1.0 preview)\n\nIsolated Linux environments on [Cloudflare Containers](https://developers.cloudflare.com/containers/), driven from Workers.\n\n**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.\n\nWe recommend **new projects** on this line. Apps still on the default package use **`sandbox-stable`**. Port only when asked, via **`sandbox-migrate-to-next`**.\n\n## 1. Gate — confirm the package line\n\nBefore writing code, inspect the app:\n\n| Check | Must match |\n| ----- | ---------- |\n| npm dependency | `@cloudflare/sandbox@next` (or another preview tag) |\n| Container image | Same line (e.g. `cloudflare/sandbox:next`, `next-python`) |\n\n| If you find… | Action |\n| ------------ | ------ |\n| Default `@cloudflare/sandbox` (no `@next`) | **Stop.** Load **`sandbox-stable`**. Do not apply this skill’s APIs. |\n| User wants to port stable → `@next` | **Stop.** Load **`sandbox-migrate-to-next`**. |\n| Self-deployed **bridge** only | Bridge is **not** on the 1.0 preview line yet. Keep bridge on stable package + image. [Bridge (stable)](https://developers.cloudflare.com/sandbox/bridge/) |\n\nNever mix an `@next` Worker package with a stable container image (or the reverse).\n\nSkills install: [Agent setup](https://developers.cloudflare.com/agent-setup/) · [cloudflare/skills](https://github.com/cloudflare/skills)\n\n## 2. Contract — non-negotiables\n\n- `sandbox.exec(argv)` takes an **argv** list and resolves when the process **starts**. It returns a **handle**, not a finished command result.\n- Collect results with handle methods: `output()`, `logs()`, `waitForExit()`, `waitForPort()`, `waitForLog()`, `kill(signal?)`.\n- No implicit shell. Shell syntax needs an explicit shell, e.g. `[\"/bin/bash\", \"-lc\", script]`.\n- Each launch is independent. A `cd` / `export` in one `exec` is not visible to the next. Pass `cwd` and `env` per launch, or one shell script.\n- Process handles have **no stdin**. Interactive use → terminals (`createTerminal` + `connect`).\n- Local wait `timeout` / `AbortSignal` cancel the **wait only**. They do not kill the process. Use `kill` or `exec`’s remote `timeout`.\n- `getProcess` / `listProcesses` / `getTerminal` / `listTerminals` do **not** start a container; they return `null` / `[]` when none is up.\n- 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.\n- Non-secret config only in `setEnvVars` / launch `env`. Live credentials stay in the Worker; use outbound handlers when the sandbox calls external APIs.\n- Do **not** invent removed stable APIs (`gitCheckout` on core, string-`exec` completion, session execution, `sandbox.terminal(request)`).\n- Do **not** use one retry loop for every error (see Errors docs).\n\nMinimal shape:\n\n```ts\nimport { getSandbox, proxyToSandbox, Sandbox } from \"@cloudflare/sandbox\";\n\nexport { Sandbox };\n\nconst sandbox = getSandbox(env.Sandbox, \"user-123\");\nconst process = await sandbox.exec([\"python3\", \"-c\", \"print(2 + 2)\"]);\nconst result = await process.output({ encoding: \"utf8\" });\n// result.stdout, result.exitCode\n```\n\nOptional **non-exhaustive** cheatsheet (process/terminal/interpreter only): [references/api-quick-ref.md](references/api-quick-ref.md) \nExamples index (`next` branch): [references/examples.md](references/examples.md)\n\n## 3. Retrieve — open the doc for the task\n\nFetch the page before implementing. Installed `@next` types win over guesses.\n\n| You need to… | Open |\n| ------------ | ---- |\n| Orient / choose preview | [1.0 preview overview](https://developers.cloudflare.com/sandbox/1-0-preview/) |\n| First Worker, wrangler, Dockerfile | [Get started](https://developers.cloudflare.com/sandbox/1-0-preview/get-started/) |\n| `exec`, handles, readiness, durability | [Process execution](https://developers.cloudflare.com/sandbox/1-0-preview/processes/) |\n| Process API signatures | [Processes API](https://developers.cloudflare.com/sandbox/1-0-preview/api/processes/) |\n| Sandbox ID vs container vs sleep/destroy | [Lifecycle](https://developers.cloudflare.com/sandbox/1-0-preview/lifecycle/) |\n| `cwd` / `env` / `setEnvVars` | [Environment](https://developers.cloudflare.com/sandbox/1-0-preview/environment/) |\n| Interactive PTY / browser terminal | [Terminals](https://developers.cloudflare.com/sandbox/1-0-preview/terminals/) · [Terminals API](https://developers.cloudflare.com/sandbox/1-0-preview/api/terminals/) |\n| Python/JS code interpreter | [Interpreter](https://developers.cloudflare.com/sandbox/1-0-preview/interpreter/) · [Interpreter API](https://developers.cloudflare.com/sandbox/1-0-preview/api/interpreter/) |\n| Extensions model | [Extensions](https://developers.cloudflare.com/sandbox/1-0-preview/extensions/) |\n| Error classes and recovery | [Errors](https://developers.cloudflare.com/sandbox/1-0-preview/errors/) · [Errors API](https://developers.cloudflare.com/sandbox/1-0-preview/api/errors/) |\n| Common failures | [Troubleshooting](https://developers.cloudflare.com/sandbox/1-0-preview/troubleshooting/) |\n| API hub | [API reference](https://developers.cloudflare.com/sandbox/1-0-preview/api/) |\n| Files, mounts, backups, ports, tunnels, `proxyToSandbox` | Main docs for shared surfaces (ignore stable-only session/transport/`sandbox.terminal`): [Files](https://developers.cloudflare.com/sandbox/api/files/) · [Storage / mounts](https://developers.cloudflare.com/sandbox/api/storage/) · [Ports](https://developers.cloudflare.com/sandbox/api/ports/) · [Tunnels](https://developers.cloudflare.com/sandbox/api/tunnels/) · [Backups](https://developers.cloudflare.com/sandbox/api/backups/) · [Outbound traffic](https://developers.cloudflare.com/sandbox/guides/outbound-traffic/) · [Expose services](https://developers.cloudflare.com/sandbox/guides/expose-services/) · [Production](https://developers.cloudflare.com/sandbox/guides/production-deployment/) |\n| Example apps | [examples on `next`](https://github.com/cloudflare/sandbox-sdk/tree/next/examples) |\n| Still on stable package | **`sandbox-stable`** · [Main Sandbox docs](https://developers.cloudflare.com/sandbox/) |\n| Porting an existing stable app | **`sandbox-migrate-to-next`** · [Migrate](https://developers.cloudflare.com/sandbox/1-0-preview/migrate/) |\n\n## 4. Before you ship\n\n- Lockfile and Dockerfile on the **same** `@next` line \n- Typecheck against installed `@next` types \n- No live secrets in sandbox env \n- Production preview hostnames need wildcard DNS on a custom domain when using those URL patterns \n"
}SHA-256: d41618c2cbaee604441be0fb946310ca8a094312a6276a17d52e9b93cacefe63