Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cloudflare avatar

Sandbox Sdk

  • 31k installs
  • 2.5k repo stars
  • Updated July 24, 2026
  • cloudflare/skills

Sandbox SDK is a Cloudflare tool for building secure, isolated code execution environments on Workers.

About

Build sandboxed applications for secure code execution on Cloudflare Workers. Use when running untrusted code, building AI code interpreters, or hosting interactive dev environments. Supports multiple languages with file and command execution.

  • Isolated code execution environments on Cloudflare Workers
  • Support for Python, JavaScript, and TypeScript with state persistence
  • Port exposure for HTTP services with preview URLs

Sandbox Sdk by the numbers

  • 31,034 all-time installs (skills.sh)
  • +4,697 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #31 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

sandbox-sdk capabilities & compatibility

Works with
cloudflare
Use cases
code review · debugging
Runs
Remote server
Pricing
Bring your own API key
From the docs

What sandbox-sdk says it does

Build secure, isolated code execution environments on Cloudflare Workers.
SKILL.md
npx skills add https://github.com/cloudflare/skills --skill sandbox-sdk

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs31k
repo stars2.5k
Security audit3 / 3 scanners passed
Last updatedJuly 24, 2026
Repositorycloudflare/skills

How do agents run isolated code on Cloudflare Workers?

Execute untrusted code safely in isolated sandboxes for AI interpreters, CI/CD, or data processing.

Who is it for?

AI code execution, code interpreters, CI/CD systems, untrusted code execution, data processing pipelines

Skip if: Projects requiring local-only execution without cloud infrastructure

When should I use this skill?

User integrates @cloudflare/sandbox, configures agent code execution on Workers, or asks about sandbox exec, sleepAfter, or Durable Object bindings.

What you get

Sandbox lifecycle integration with getSandbox, exec calls, sleepAfter/keepAlive options, and destroy cleanup for Durable Object bindings.

  • Sandbox lifecycle integration code
  • exec command handlers

By the numbers

  • Base Docker image includes Python 3.11 and Node.js 20
  • Containers sleep after 10 minutes of inactivity by default

Files

SKILL.mdMarkdownGitHub ↗

Cloudflare Sandbox SDK

Build secure, isolated code execution environments on Cloudflare Workers.

FIRST: Verify Installation

npm install @cloudflare/sandbox
docker info  # Must succeed - Docker required for local dev

Retrieval Sources

Your knowledge of the Sandbox SDK may be outdated. Prefer retrieval over pre-training for any Sandbox SDK task.

ResourceURL
Docshttps://developers.cloudflare.com/sandbox/
API Referencehttps://developers.cloudflare.com/sandbox/api/
Exampleshttps://github.com/cloudflare/sandbox-sdk/tree/main/examples
Get Startedhttps://developers.cloudflare.com/sandbox/get-started/

When implementing features, fetch the relevant doc page or example first.

Required Configuration

wrangler.jsonc (exact - do not modify structure):

{
  "containers": [{
    "class_name": "Sandbox",
    "image": "./Dockerfile",
    "instance_type": "lite",
    "max_instances": 1
  }],
  "durable_objects": {
    "bindings": [{ "class_name": "Sandbox", "name": "Sandbox" }]
  },
  "migrations": [{ "new_sqlite_classes": ["Sandbox"], "tag": "v1" }]
}

Worker entry - must re-export Sandbox class:

import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';  // Required export

Quick Reference

TaskMethod
Get sandboxgetSandbox(env.Sandbox, 'user-123')
Run commandawait sandbox.exec('python script.py')
Run code (interpreter)await sandbox.runCode(code, { language: 'python' })
Write fileawait sandbox.writeFile('/workspace/app.py', content)
Read fileawait sandbox.readFile('/workspace/app.py')
Create directoryawait sandbox.mkdir('/workspace/src', { recursive: true })
List filesawait sandbox.listFiles('/workspace')
Expose portawait sandbox.exposePort(8080)
Destroyawait sandbox.destroy()

Core Patterns

Execute Commands

const sandbox = getSandbox(env.Sandbox, 'user-123');
const result = await sandbox.exec('python --version');
// result: { stdout, stderr, exitCode, success }

Code Interpreter (Recommended for AI)

Use runCode() for executing LLM-generated code with rich outputs:

const ctx = await sandbox.createCodeContext({ language: 'python' });

await sandbox.runCode('import pandas as pd; data = [1,2,3]', { context: ctx });
const result = await sandbox.runCode('sum(data)', { context: ctx });
// result.results[0].text = "6"

Languages: python, javascript, typescript

State persists within context. Create explicit contexts for production.

File Operations

await sandbox.mkdir('/workspace/project', { recursive: true });
await sandbox.writeFile('/workspace/project/main.py', code);
const file = await sandbox.readFile('/workspace/project/main.py');
const files = await sandbox.listFiles('/workspace/project');

When to Use What

NeedUseWhy
Shell commands, scriptsexec()Direct control, streaming
LLM-generated coderunCode()Rich outputs, state persistence
Build/test pipelinesexec()Exit codes, stderr capture
Data analysisrunCode()Charts, tables, pandas

Extending the Dockerfile

Base image (docker.io/cloudflare/sandbox:0.7.0) includes Python 3.11, Node.js 20, and common tools.

Add dependencies by extending the Dockerfile:

FROM docker.io/cloudflare/sandbox:0.7.0

# Python packages
RUN pip install requests beautifulsoup4

# Node packages (global)
RUN npm install -g typescript

# System packages
RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/*

EXPOSE 8080  # Required for local dev port exposure

Keep images lean - affects cold start time.

Preview URLs (Port Exposure)

Expose HTTP services running in sandboxes:

const { url } = await sandbox.exposePort(8080);
// Returns preview URL for the service

Production requirement: Preview URLs need a custom domain with wildcard DNS (*.yourdomain.com). The .workers.dev domain does not support preview URL subdomains.

See: https://developers.cloudflare.com/sandbox/guides/expose-services/

OpenAI Agents SDK Integration

The SDK provides helpers for OpenAI Agents at @cloudflare/sandbox/openai:

import { Shell, Editor } from '@cloudflare/sandbox/openai';

See examples/openai-agents for complete integration pattern.

Sandbox Lifecycle

  • getSandbox() returns immediately - container starts lazily on first operation
  • Containers sleep after 10 minutes of inactivity (configurable via sleepAfter)
  • Use destroy() to immediately free resources
  • Same sandboxId always returns same sandbox instance

Anti-Patterns

  • Don't use internal clients (CommandClient, FileClient) - use sandbox.* methods
  • Don't skip the Sandbox export - Worker won't deploy without export { Sandbox }
  • Don't hardcode sandbox IDs for multi-user - use user/session identifiers
  • Don't forget cleanup - call destroy() for temporary sandboxes

Detailed References

  • [references/api-quick-ref.md](references/api-quick-ref.md) - Full API with options and return types
  • [references/examples.md](references/examples.md) - Example index with use cases

Related skills

Forks & variants (1)

Sandbox Sdk has 1 known copy in the catalog totaling 2 installs. They canonicalize to this original listing.

How it compares

Use sandbox-sdk for Cloudflare Workers agent sandboxes; use local shell skills only when edge isolation is not required.

FAQ

What languages does Sandbox SDK support?

Python 3.11, Node.js 20, and TypeScript are included in the base image; you can extend with pip, npm, or system packages.

How do I expose an HTTP service from a sandbox?

Use sandbox.exposePort(8080) which returns a preview URL; production requires a custom domain with wildcard DNS.

Is Sandbox Sdk safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.