Skip to content
Cloudflare Docs

Lifecycle

Create and manage sandbox containers. Get sandbox instances, configure options, and clean up resources.

Methods

getSandbox()

Get or create a sandbox instance by ID.

TypeScript
const sandbox = getSandbox(
binding: DurableObjectNamespace<Sandbox>,
sandboxId: string,
options?: SandboxOptions
): Sandbox

Parameters:

  • binding - The Durable Object namespace binding from your Worker environment
  • sandboxId - Unique identifier for this sandbox. The same ID always returns the same sandbox instance
  • options (optional):
    • keepAlive - Set to true to prevent automatic container timeout after 10 minutes of inactivity

Returns: Sandbox instance

JavaScript
import { getSandbox } from "@cloudflare/sandbox";
export default {
async fetch(request, env) {
const sandbox = getSandbox(env.Sandbox, "user-123");
const result = await sandbox.exec("python script.py");
return Response.json(result);
},
};

destroy()

Destroy the sandbox container and free up resources.

TypeScript
await sandbox.destroy(): Promise<void>

Immediately terminates the container and permanently deletes all state:

  • All files in /workspace, /tmp, and /home
  • All running processes
  • All sessions (including the default session)
  • Network connections and exposed ports
JavaScript
async function executeCode(code) {
const sandbox = getSandbox(env.Sandbox, `temp-${Date.now()}`);
try {
await sandbox.writeFile("/tmp/code.py", code);
const result = await sandbox.exec("python /tmp/code.py");
return result.stdout;
} finally {
await sandbox.destroy();
}
}