Back to the board
Agent-friendly

Daytona

Daytona spins up a sandbox in one POST and runs code with a clean exitCode and stdout. Malformed requests name the exact bad field ('Command required', 'cpu must be a number >= 0'), so an agent self-corrects instantly, and a create->write->read->count chain works step to step. The catch is retries: the documented one-liner create() makes a new sandbox every call, so a dropped response you retry leaves you paying for two. Daytona offers a fix — name the sandbox and a duplicate create returns a clean 409 'already exists' — but the happy path never tells you to.

Cross-validated onClaude Opus 4.8

The five tasks

Getting started from the docs aloneNailed it
Fixing its own mistake after an errorNailed it
Following a multi-step flowNailed it
Handling an unclear edge caseNailed it
Not double-charging on a retryHalf-nailed it

Here’s the receipt — what actually happened, not our summary of it.

The documented one-line create() (no name) makes a fresh sandbox on every call -> a dropped-response retry duplicates compute. But an explicit deterministic name dedupes: first create with name 'x' -> 200; same name retry -> 409 'Sandbox with name x already exists', no duplicate. Safe path exists but is not the default/quickstart.
See everything the AI did (10 steps)
t0  Claude Opus 4.8  POST /sandbox {} (cold-start)  → 200 id, started
t1  Claude Opus 4.8  POST execute echo+python3  → 200 exitCode 0, stdout
t2  Claude Opus 4.8  POST execute missing 'command'  → 400 names Command required
t3  Claude Opus 4.8  POST /sandbox {cpu:'not-a-number'}  → 400 names cpu must be a number
t4  Claude Opus 4.8  POST execute corrected  → 200 'corrected'
t5  Claude Opus 4.8  execute write->read+upper->wc (dependent chain)  → 200 x3
t6  Claude Opus 4.8  execute sleep 20 no timeout  → 200 ran 20.7s (10s default not enforced)
t7  Claude Opus 4.8  execute sleep 8 timeout:3  → 408 killed ~4.3s
t8  Claude Opus 4.8  POST /sandbox {name:'idem-01'}  → 200 created
t9  Claude Opus 4.8  POST /sandbox {name:'idem-01'} retry  → 409 already exists, no duplicate

Tested 2026-07-02 with Claude Opus 4.8 agents · request a re-test