Skip to content

How Cloudflare Sandboxes’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score21/100

Agent-ready 25.9 × 0.30 = 7.77

API quality 16.9 × 0.20 = 3.38

Openness 21.2 × 0.20 = 4.24

Built-in AI 18.0 × 0.15 = 2.70

Automation 19.5 × 0.15 = 2.92

(7.77 + 3.38 + 4.24 + 2.70 + 2.92) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 21.02 ÷ 1.00 = 21.0

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready25.9/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [probe] https://developers.cloudflare.com/llms.txtPROBE llms.txt: HTTP 200 at https://developers.cloudflare.com/llms.txt # Cloudflare Developer Documentation Explore guides and tutorials to start building on Cloudflare's platform. > Each p
  • [probe] https://developers.cloudflare.com/sandbox/get-started/.mdPROBE docs-md: HTTP 404 at https://developers.cloudflare.com/sandbox/get-started/.md

Run the product headlessly / in CI for automationweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/sandbox.exec() - Execute shell commands in the sandbox and capture stdout, stderr, and exit codes.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Clone repositories, manage branches, and automate Git operations.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Access KV, R2, Durable Objects, and other bindings from a sandbox.
  • [community] https://news.ycombinator.com/item?id=45610523I browsed through the documents but it does not seem to be possible to auto destroy a sandbox after certain amount of idle time. This forces whoever is implementing this to do their own cleanup.

Plug MCP servers into this product so it can use their toolsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Connect an agent via an official MCP serverweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Use an official CLIweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Drive the product through a documented public APIweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/sandbox.exec() - Execute shell commands in the sandbox and capture stdout, stderr, and exit codes.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [claimed-docs] https://developers.cloudflare.com/sandbox/The Sandbox SDK enables you to run untrusted code securely in isolated environments.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create isolated execution contexts within a sandbox. Each session maintains its own shell state, environment variables, and working directory.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/interpreter/Execute Python, JavaScript, and TypeScript code with support for data visualizations, tables, and rich output formats.
  • [probe] https://developers.cloudflare.com/llms.txtPROBE llms.txt: HTTP 200 at https://developers.cloudflare.com/llms.txt # Cloudflare Developer Documentation Explore guides and tutorials to start building on Cloudflare's platform. > Each p
  • [probe] https://developers.cloudflare.com/openapi.jsonPROBE openapi: HTTP 200 at https://developers.cloudflare.com/openapi.json — contains "openapi" key

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [community] https://news.ycombinator.com/item?id=45610523Looks like there's one feature missing from this that I care about: I'd like more finely grained control over what outbound internet connections code running on the box can make. As far as I can tell it's all or nothing right now.

Build against official SDKsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/sandbox.exec() - Execute shell commands in the sandbox and capture stdout, stderr, and exit codes.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Execute Python and JavaScript code with rich outputs including charts, tables, and formatted data.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create isolated execution contexts within a sandbox. Each session maintains its own shell state, environment variables, and working directory.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/interpreter/Execute Python, JavaScript, and TypeScript code with support for data visualizations, tables, and rich output formats.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/getSandbox() - Gets or creates a sandbox instance by ID. Use a stable ID to reconnect to the same sandbox.

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 54.4 ÷ 210 × 100 = 25.9

API quality16.9/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/sandbox.exec() - Execute shell commands in the sandbox and capture stdout, stderr, and exit codes.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/import pandas as pd data = {'product': ['A', 'B', 'C'], 'sales': [100, 200, 150]} df = pd.DataFrame(data) df['sales'].sum() # Last expression is automatically returned
  • [probe] https://developers.cloudflare.com/openapi.jsonPROBE openapi: HTTP 200 at https://developers.cloudflare.com/openapi.json — contains "openapi" key
  • [probe] https://developers.cloudflare.com/sandbox/get-started/.mdPROBE docs-md: HTTP 404 at https://developers.cloudflare.com/sandbox/get-started/.md

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [probe] https://developers.cloudflare.com/openapi.jsonPROBE openapi: HTTP 200 at https://developers.cloudflare.com/openapi.json — contains "openapi" key
  • [probe] https://developers.cloudflare.com/sandbox/get-started/.mdPROBE docs-md: HTTP 404 at https://developers.cloudflare.com/sandbox/get-started/.md
  • [probe] https://developers.cloudflare.com/llms.txtPROBE llms.txt: HTTP 200 at https://developers.cloudflare.com/llms.txt # Cloudflare Developer Documentation Explore guides and tutorials to start building on Cloudflare's platform. > Each p

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 7 (quality) × 1.0 (full) = 7.0 of 10 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/The Sandbox SDK enables you to run untrusted code securely in isolated environments.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/architecture/VM-based isolation - Each sandbox runs in its own VM
  • [claimed-docs] https://developers.cloudflare.com/sandbox/Each sandbox runs in its own isolated container with a full Linux environment, providing strong security boundaries while maintaining performance.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Access KV, R2, Durable Objects, and other bindings from a sandbox.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [community] https://news.ycombinator.com/item?id=45610523Looks like there's one feature missing from this that I care about: I'd like more finely grained control over what outbound internet connections code running on the box can make. As far as I can tell it's all or nothing right now.
  • [community] https://news.ycombinator.com/item?id=45610523There is an open question about how file persistence works. The docs claim they persist the filesystem even when they move the container to an idle state but its unclear exactly what that means.

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

API quality = 11.8 ÷ 70 × 100 = 16.9

Openness21.2/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/sandbox.exec() - Execute shell commands in the sandbox and capture stdout, stderr, and exit codes.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Connect browser-based terminal UIs to sandbox shells via WebSocket, with the xterm.js SandboxAddon for automatic reconnection and resize handling.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Run Docker commands inside a sandbox container.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Clone repositories, manage branches, and automate Git operations.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Snapshot a sandbox directory to R2 and restore it later.
  • [community] https://news.ycombinator.com/item?id=44384002I am keen to understand how I would limit sandbox resource usage.

Export all of my data in open formats and leaveweight 3

3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/await sandbox.writeFile("/workspace/hello.txt", "Hello, Sandbox!"); const file = await sandbox.readFile("/workspace/hello.txt");
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Mount S3-compatible buckets (R2, S3, GCS) as local filesystems for persistent data storage across sandbox lifecycles.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create point-in-time snapshots of directories and restore them from R2.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/files/Read, write, and manage files in the sandbox filesystem. All paths are absolute (e.g., `/workspace/app.js`).
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Snapshot a sandbox directory to R2 and restore it later.

Read the product's source under an open licenseweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Self-host the core productweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/architecture/The SDK supports three transport protocols for communication between the Durable Object and container
  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/architecture/VM-based isolation - Each sandbox runs in its own VM
  • [community] https://news.ycombinator.com/item?id=45610523The pricing with such offerings is the biggest throwoff. This one comes out to be more than $58/month for just 1vCpu and 1GiB RAM when used continuously. Compare this with instances from Hetzner or Contabo... 35+ times cheaper.

Openness = 21.2 ÷ 100 × 100 = 21.2

Built-in AI18.0/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

n/a — not applicable to this product: excluded from numerator and denominator

  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [claimed-docs] https://developers.cloudflare.com/sandbox/The Sandbox SDK enables you to run untrusted code securely in isolated environments.

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/commands/Execute commands and manage background processes in the sandbox's isolated container environment.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create isolated execution contexts within a sandbox. Each session maintains its own shell state, environment variables, and working directory.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/getSandbox() - Gets or creates a sandbox instance by ID. Use a stable ID to reconnect to the same sandbox.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/sessions/const buildSession = await sandbox.createSession({ id: "build", env: { NODE_ENV: "production" }, cwd: "/build" });
  • [community] https://news.ycombinator.com/item?id=45610523I browsed through the documents but it does not seem to be possible to auto destroy a sandbox after certain amount of idle time. This forces whoever is implementing this to do their own cleanup.

Delegate tasks to a built-in AI assistant inside the productweight 3

n/a — not applicable to this product: excluded from numerator and denominator

  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [claimed-docs] https://developers.cloudflare.com/sandbox/The Sandbox SDK enables you to run untrusted code securely in isolated environments.

Operate the product with natural-language commandsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/sandbox.exec() - Execute shell commands in the sandbox and capture stdout, stderr, and exit codes.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/Sandboxes are ideal for building AI agents that need to execute code, interactive development environments, data analysis platforms, CI/CD systems
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/commands/Execute commands and manage background processes in the sandbox's isolated container environment.

Built-in AI = 7.2 ÷ 40 × 100 = 18.0

Automation19.5/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/architecture/Multiplexes all SDK calls over a single persistent connection. It avoids subrequest limits when making many concurrent operations.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create isolated execution contexts within a sandbox. Each session maintains its own shell state, environment variables, and working directory.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/sessions/Create additional sessions for separate workflows in the same sandbox
  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/sessions/Create additional sessions for separate workflows in the same sandbox:
  • [claimed-docs] https://developers.cloudflare.com/sandbox/get-started/getSandbox() - Gets or creates a sandbox instance by ID. Use a stable ID to reconnect to the same sandbox.
  • [community] https://news.ycombinator.com/item?id=45610523Cloudflare Containers (and therefore Sandbox) pricing is way too expensive... vCPU: $51.84 per vCPU (!!!)... These prices are more expensive than the already expensive prices of the big cloud providers.
  • [community] https://news.ycombinator.com/item?id=45610523The pricing with such offerings is the biggest throwoff. This one comes out to be more than $58/month for just 1vCpu and 1GiB RAM when used continuously. Compare this with instances from Hetzner or Contabo... 35+ times cheaper.
  • [community] https://news.ycombinator.com/item?id=44384002I am keen to understand how I would limit sandbox resource usage.

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Monitor real-time filesystem changes using native inotify. Build development tools, hot-reload systems, and responsive file processing.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/const watcher = await sandbox.watch('/workspace/src', { include: ['*.js', '*.ts'],
  • [claimed-docs] https://developers.cloudflare.com/sandbox/const watcher = await sandbox.watch('/workspace/src', { include: ['*.js', '*.ts'], onEvent: (event) => {

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create isolated execution contexts within a sandbox. Each session maintains its own shell state, environment variables, and working directory.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/concepts/sessions/Create additional sessions for separate workflows in the same sandbox
  • [community] https://news.ycombinator.com/item?id=45610523I browsed through the documents but it does not seem to be possible to auto destroy a sandbox after certain amount of idle time. This forces whoever is implementing this to do their own cleanup.

Version, review, and roll back my automationsweight 1

1 (weight) × 4 (quality) × 0.6 (partial) = 2.4 of 10 max

  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Clone repositories, manage branches, and automate Git operations.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/guides/Snapshot a sandbox directory to R2 and restore it later.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Create point-in-time snapshots of directories and restore them from R2.
  • [claimed-docs] https://developers.cloudflare.com/sandbox/api/Mount S3-compatible buckets (R2, S3, GCS) as local filesystems for persistent data storage across sandbox lifecycles.

Automation = 15.6 ÷ 80 × 100 = 19.5