Limits
Every hard cap a box or a workspace can hit, and what the refusal looks like.
On this page13
Money (the plan range, top-ups, the rollover cap, the free credit) is on Billing.
Boxes
| Limit | Value |
|---|---|
| Boxes per workspace | 100 not deleted (paused and deep sleep count); 1 on the free credit |
| Balance to create, wake, or resize | Enough to run the whole resulting fleet for 4 hours (Starting and resizing boxes); with an empty balance and no overage, nothing starts or wakes (Running out) |
| Box name | 1 to 32 characters: lowercase letters, digits, and hyphens, starting and ending with a letter or digit; unique in the workspace |
| Sizes | 7, Nano to Extra Large (Machines); Nano to Small on the free credit. No resize while provisioning, resizing, or moving; the disk never shrinks (Resize) |
| Auto-pause window | 30 minutes to 7 days idle (the dashboard offers up to 24 hours; the CLI and API, the whole range) (Auto-pause). Off by default on a plan; 2 hours on the free credit, never in a box's first 24 hours. An auto-pause floor caps members' boxes, except on the free credit |
| Pause deadline | 5 minutes to 30 days ahead, on a running box only (Pause deadline) |
| Deep sleep | After 14 days paused the disk is parked as a snapshot; waking takes a few minutes (States) |
| Region moves | 1 per box and 3 per workspace in any rolling 24 hours, one at a time, running boxes only; 5 regions. A new box can be created in any region instead (Regions) |
| Undo after delete | 7 days, as a final snapshot under Recently deleted; none for a box deleted within an hour of being created (Data retention) |
| Capacity | No per-workspace number. With no machine of that size free, a new box waits in provisioning, or ends in provision_failed with the reason in its events; delete it and create again, or pick another size |
Sandboxes
Creating, resuming, or forking a sandbox needs a balance above zero (409 insufficient_balance otherwise). On the free credit alone, the free tier's limits apply instead of the quotas below, and a refusal past one adds "tier": "free" and the limit it hit; if free-tier access is switched off for your workspace, the API answers 409 paid_balance_required until it has paid in.
When no sandbox capacity is free, a create answers 503 sandbox_capacity with a Retry-After header (seconds) and creates nothing, so nothing is billed; retry after that long.
Sandbox CPU and memory limits apply to running sandboxes and paused sandboxes that retain compute capacity for resume. Pausing does not necessarily free quota; delete sandboxes you no longer need, and capacity becomes available after cleanup. This does not change paused billing, which remains storage-only.
A resize must fit the workspace's remaining CPU and memory quota. Until it completes, the larger of the old and requested values counts for each resource.
Workspace quotas, checked on every create, resume, fork, and resize (Sandboxes); a refusal is 429 sandbox_quota_exceeded with the quota in reason. Need more? Email .
| Quota | Default |
|---|---|
| Sandboxes | 20 not deleted; paused ones and ones in error count |
| Running vCPU | 80 across the workspace |
| Running memory | 160 GB across the workspace |
| Disk | 200 GB across every sandbox not deleted |
| Lifetime | 24 hours: maxRuntimeMin up to 1,440 |
Per sandbox and per request:
| Limit | Value |
|---|---|
| Shape | 1 to 32 vCPU, 1 to 128 GB of memory, 10 to 128 GB of disk, within the template's bounds (both templates take all of it); more than 16 vCPU or about 58 GB of memory is a large sandbox; disk only grows (Resize) |
| Auto-pause and auto-delete | 0 (off) to 40,320 minutes (28 days); maxRuntimeMin deletes first |
| Fork | 1 to 256 copies a request, as many as fit on the parent's machine: at most 31 of a 1 vCPU sandbox, 7 of a 4 vCPU one; a parent past about 26 GB of memory (about 105 GB for one created as a large sandbox) cannot fork (Fork); each counts as a create |
| Labels | 32, keys up to 64 characters, values up to 256 |
| Environment variables | 32 at create, names up to 64 characters, values up to 16 KiB; the whole create body up to 64 KiB |
| Command | 300 seconds by default through the API, 3,600 at most; the first 4 MiB of each output stream is kept; the request document up to 1 MiB |
| File transfer | 100 MiB and 10 minutes per upload or download, inside /home/prized |
| Edge requests | 48 concurrent and 60 a second (bursts of 120) per API key; 8 concurrent and 20 a second (bursts of 40) per sandbox; over either answers 429 rate_limited with Retry-After |
Snapshots
| Limit | Value |
|---|---|
| Manual and template snapshots per workspace | 20; one still being deleted counts until its storage is released. Fork copies, automatic snapshots, and Recently deleted copies never count (Snapshots) |
| Snapshot or template name | 1 to 64 characters of letters, digits, ., _, and -, starting and ending with a letter or digit |
| Automatic snapshots per box | keep of 1 to 10 (default 5), every 1 to 168 whole hours; each expires after keep x interval |
| Snapshots in flight per box | 1 |
| Fork disk copy | 8 hours, or 30 minutes without progress; then the new box is marked failed |
| Restore target | Any size whose disk holds the snapshot; a smaller disk is refused with the numbers |
| Region | A snapshot restores into the region its box was in |
| Balance | Any snapshot needs a funded balance or an active plan |
Environments
| Limit | Value |
|---|---|
| Environment name | 1 to 64 characters of letters, digits, ., _, and -, starting and ending with a letter or digit (Environments) |
| Env vars per environment | 64, each value a single line of up to 4,096 characters |
| Per-box vars | 100 names and 64 KiB of names and values together, inside the launch budget |
| Repos per environment | 16, each with an optional setup script of up to 8 KiB |
| Secret files per environment | 16, each up to 64 KiB, at a path of up to 256 characters |
| Setup script | 16 KiB |
| Launch budget | The environment plus the box's own vars must fit 16 KiB compressed; a save or create that would not is refused as environment_too_large |
| Versions kept | 50 per environment; older ones no live box pins are pruned |
Commands and files
prized exec, prized cp, the edge API, and the dashboard's Files tab (Run commands and files).
| Limit | Value |
|---|---|
| Synchronous run | 600 seconds through the API (default 30); prized exec has no limit unless you pass --timeout |
| Output kept per stream | The last 1 MiB, flagged as truncated |
| Exec request document | 1 MiB |
| Environment variables per run | 32 |
| Inline file read or write | 1 MiB |
| Upload or download | 1 GiB and 30 minutes per request; a directory download that reaches the cap is cut off, so a truncated archive never looks complete |
| Detached process log tail | 16 KiB by default, 1 MiB at most. The process has no time limit, and its logs are never deleted for you |
| Command history | Each record kept 30 days, with the last 1 MiB of each stream and the first 8,192 characters of the command; 10,000 records per box, the oldest going first; 50 MiB of output stored per workspace per hour, past which output is dropped and the stream marked truncated (Command history) |
| History reads | 200 records a page; 1 MiB of output per request |
| Live streams | 4 open per token; each counts as one of the concurrent requests below, and ends with reconnect after 10 minutes |
| Concurrent requests | 8 per token and 8 per box |
| Request rate | 20 per second sustained, bursts of 40, per token and per box; over it answers 429 rate_limited with Retry-After |
| JSON request body | 64 KiB on most /api/v1 routes; 128 KiB on the secrets routes; 2 MiB on the environment routes |
| Dashboard Files tab | 1 MiB in the inline editor; 1 GiB per upload or download; one operation at a time per tab; a folder listing shows 2,000 entries and marks itself truncated past that |
Prompting an agent remotely
| Limit | Value |
|---|---|
| Prompt | 512 KiB (Prompt an agent remotely) |
| Runs in progress per box | One per 2 GB of memory, from 1 to 16: Nano 1, Micro 2, Extra Small 4, Small 8, Medium and larger 16. Beyond it a new run answers 409 prompt_limit_reached; ~/ on the box sets another number from 1 to 64 (Parallel runs) |
| Runs in progress per conversation | 1; another prompt answers 409 prompt_in_progress unless it asks to be queued |
| Runs listed | 50, newest first; older run directories stay on the box |
| Conversations listed | 50, most recently active first |
| Events per page | 200 by default, 1,000 at most, or 1 MiB, whichever comes first; one event of any size is always delivered |
| Event text | 8 KiB per event (the raw line is kept whole); a single event over 32 MiB cannot be delivered |
| Requests | As for commands and files above |
Sync, sessions, and ports
| Limit | Value |
|---|---|
| File size in a synced project | 256 MB; larger files are skipped and named by prized sync ls (Sync) |
| First sync | Up to 3 minutes for the box to install the sync agent and move the first bytes before it is called broken |
| Drag-and-drop upload | 512 MB per drop, one file or several; drops older than 7 days are cleaned out (Sessions) |
| Mirrored ports | 3000 through 9999 by default; never below 1024, never 22 or 7377; 5900 off by default; TCP only (Ports) |
| Shared port links | One link per port; up to 10 live anyone and public links per workspace, each expiring after 5 minutes to 30 days (7 by default); a link's visitors open it a limited number of times a minute (Share a port) |
Desktop
| Limit | Value |
|---|---|
| Per box | One desktop and one browser window (Desktop) |
| Screen | 1920x1080, scaled to your window; VNC, no audio, no GPU |
| Browser profile name | Letters, digits, - and _, up to 64 characters |
Secrets and access
| Limit | Value |
|---|---|
| Secrets per workspace | 100 (Secrets for agents) |
| Secret name and value | The name is SCREAMING_SNAKE, a letter first, up to 128 characters; the value up to 16 KiB |
| Allowlisted hosts per secret | 32 |
| Secret grants | Each names one box or one member (Scoped secrets) |
| Secret usage | The usage read returns up to 1,000 rows (Usage) |
| SSH certificates | 15 minutes each, minted for you as you connect |
| Phone access password | One per box, no expiry; generating a new one, or revoking, replaces it everywhere (From your phone) |
| Phone access gateway | 8 connections per box at once; a connection with nothing running on it closes after 15 idle minutes |
Workspace
| Limit | Value |
|---|---|
| API keys | No cap; revoke any from Dashboard → Settings → API keys (API keys) |
| Members | No cap |
| Invite link | Does not expire; replaced by New link or by removing a member (Invite people) |
| Workspace icon | 1 MiB per upload |
| Startup deal link | 30 days (Custom plans) |
| Spend per member | Off, or 1 to 1,000,000 whole dollars a billing cycle (Policies) |
| Boxes per member | Off, or 1 to 100 live boxes (running or paused) |
| Largest size per member | Off, or any size |
| Auto-pause floor | Off, or 30 minutes to 7 days |
| Quiet hours | Off, or one HH:MM to HH:MM window a day in one IANA timezone, per weekday, with all-day days; a box woken inside it stays up 15 minutes (Quiet hours) |
| Audit log retention | 7 to 365 days, 90 by default (Audit log) |
| Audit log reads | 100 rows a page by default, 1,000 at most per request; the CSV carries up to 50,000 rows |
| Audit export | An https URL of up to 2,048 characters on a public host, and a secret of 16 to 256 characters; 500 events a delivery, 20 deliveries an hourly pass, 10 seconds a request (Scheduled export) |
| Reported audit detail | 16 keys of up to 40 characters, strings up to 512 characters, a body up to 64 KiB |
Not allowed
Cryptocurrency mining, on the free credit or on any plan, in a box or a sandbox. A box or sandbox found mining pauses every box and every sandbox in its workspace. Creating, restoring, forking, waking, resizing, or moving a box, and creating, resuming, or forking a sandbox, then answer 409 workspace_held; pausing and deleting still work. Nothing is deleted and no credit is taken; paying does not lift it, and neither does deleting the box or sandbox, so email for a review.
Retention
| Record | Kept |
|---|---|
| Box metrics | 30 days |
| Sign-in records | 90 days |
| CLI usage aggregates | 90 days |
| Audit rows | 90 days by default (7 to 365 by policy) |
| Command history | 30 days |
| Finished deletion operations | 30 days |
The windows and their zero data retention variants are on Data retention.
How limits fail
| Where | What you see |
|---|---|
| The API | The HTTP status and an error code, with a message that quotes the numbers: 409 box_limit, 409 insufficient_balance, 429 snapshot_limit, 402 secret_limit, 400 invalid_name, 400 invalid_auto_pause, 400 invalid_pause_at, 400 environment_too_large, 400 too_many_repos, 400 too_many_files, 409 prompt_in_progress, 413 payload_too_large, 403 policy_denied (with rule and message), 403 secret_not_granted, 429 rate_limited with Retry-After |
| The CLI | The exit code table: a value outside a range is USAGE (2) before anything is sent; the box count, a taken name, or a balance that cannot run the box is CONFLICT (6); the snapshot limit and a refused lifecycle change are CHECK_FAILED (5) with the control plane's sentence. --json carries the same code and message in error |
| The dashboard | The same sentence next to the control that asked, or the control is not offered: a size the balance cannot run cannot be picked, and the pause deadline is hidden on a paused box |