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) - See SandboxOptions for all available options:
    • sleepAfter - Duration of inactivity before automatic sleep (default: "10m")
    • keepAlive - Prevent automatic sleep entirely. Persists across hibernation (default: false)
    • containerTimeouts - Configure container startup timeouts
    • normalizeId - Lowercase sandbox IDs for preview URL compatibility (default: false)

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);
},
};

setKeepAlive()

Enable or disable keepAlive mode dynamically after sandbox creation.

TypeScript
await sandbox.setKeepAlive(keepAlive: boolean): Promise<void>

Parameters:

  • keepAlive - true to prevent automatic sleep, false to allow normal sleep behavior

When enabled, the sandbox automatically sends heartbeat pings every 30 seconds to prevent container eviction. When disabled, the sandbox returns to normal sleep behavior based on the sleepAfter configuration.

JavaScript
const sandbox = getSandbox(env.Sandbox, "user-123");
// Enable keepAlive for a long-running process
await sandbox.setKeepAlive(true);
await sandbox.startProcess("python long_running_analysis.py");
// Later, disable keepAlive when done
await sandbox.setKeepAlive(false);

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();
}
}