DocumentationAccount

Troubleshooting

Find the next step.

Start with what you are seeing.

Choose the step that is failing.

Browser login does not finish

Open the exact link the CLI printed, verify the matching code and agent name, then approve Connect agent as the account owner. If the command was stopped while it waited, run it again: it shows the same link and code, and picks up the approval. Approval and delivery are separate: the browser waits for the CLI to receive and verify the credential before showing success.

Requests expire after 15 minutes. Start a new npx withruntime login after expiry. On a remote terminal, use --no-browser and open its link on your own device. If the CLI cannot reach Runtime, check its outbound HTTPS access; do not paste credentials into the browser or into your agent's prompt.

Run npx withruntime whoami to check a saved connection. If it is refused, run login again. RUNTIME_API_KEY overrides the saved connection: an invalid environment key can fail even when browser login previously worked. Remove an unwanted override without printing its value.

Creation is refused
Code What it means What to do
trial_busy Three trial sandboxes are already running or paused; details names them Stop one, or pass funding: "paid"
trial_exhausted The 20 hours are used, or timeoutSeconds is more than what is left Shorten timeoutSeconds, or use paid credit
invalid_trial A trial sandbox is at most 2 vCPU, 4 GiB of memory and 10 GiB of disk Omit the size fields for the default
invalid_request details.issues names every wrong field Fix the named fields; unknown fields are refused
invalid_region details.available lists your regions Use a region listed for your account, or omit it
no_capacity, busy No host has room right now Retry with the same idempotency key and a growing delay

A trial request never silently becomes a paid one. Paid credit does not make an exhausted trial available. See the trial.

Creation returns starting

The SDKs and npx withruntime sandbox create wait for running for you. Over raw HTTP, send Prefer: wait=60, or read the sandbox with ?waitFor=running. Wait for running before issuing commands. A command on a sandbox that is still starting waits up to 30 seconds, then answers sandbox_not_ready. If the sandbox stops before it is ready, its stopReason says why; report that failure with its sandbox id and request id. Do not start a new sandbox repeatedly without checking the first request's outcome.

A sandbox stopped on its own

Read its stopReason. insufficient_funds means the credit ran out; add credit on the account page. lifetime_cap means the sandbox reached its own maxTotalCostMicros. spending_limit means an owner-set spending limit stopped it, usually this agent's daily limit: see what is left with GET /v1/limits or runtime limits, and only an owner can raise it, on the account's keys page. Do not create replacements in a loop; the limit counts the last 24 hours.

The request timed out

A missing response is not proof that a command failed to run. Use the same idempotency key and identical input. The server answers the first result again instead of running it twice. The SDKs do this for you. If a command's outcome is still unknown, inspect its files and processes before repeating a side effect.

The service returns 401, 403, 409, 429 or 5xx
Response What to check Safe next step
401 Missing, expired or revoked key; wrong API origin Check npx withruntime whoami or the secret-manager configuration
403 Owner approval, key scope, account suspension or resource ownership Confirm the account and permitted action; do not work around a refusal
409 The resource's state: paused, stopped, not ready, or the trial busy Resolve that state, then retry
422 The idempotency key was used before with a different body Same key, same body; or a new key for genuinely new work
429 Request rate or concurrent work exceeded the server's bound Respect Retry-After, add a growing delay, and reduce concurrent requests
5xx or no response The write may already have reached the server Retry identical input with the same idempotency key and inspect state

API errors and retries describes the full contract.

The command succeeded over HTTP but the task failed

Inspect the command's exit code, standard error and truncation flags. HTTP success means the operation was handled, not that the program returned zero. Use check: true (check=True in Python) to raise on a non-zero exit. A timeout is a result with timedOut: true; raise timeoutMs, or run long jobs in the background and follow their output.

A file operation fails

File errors name the path and the reason: file_not_found, is_a_directory, not_a_directory, permission_denied. Paths are absolute; /workspace is home. Outside your own files, use sudo in a command.

Dependencies cannot reach a server

Check the sandbox's network rules (npx withruntime sandbox network <id>) and the destination port. Keep the guest's proxy environment. A tool that opens raw sockets or ignores proxy configuration does not fit the public-web egress model; see the sandbox environment. Do not disable security protections to make a migration appear successful.

The bill differs from an estimate

Compare total CPU-seconds, provisioned memory, the quoted CPU floor and actual running duration. Include startup, dependency installation, retries and cleanup. Wait for settlement before equating reserved credit with a final charge.

The dashboard groups daily and monthly settled service charges in UTC. A payment adds credit; it is not service usage. A reservation can lower available credit without being a final charge. Paused storage is a separate meter, so stopping compute does not prove all retained-storage charges have ended.

A paused sandbox will not wake

Inspect pausedExpiresAt, available credit and the error code. Wake needs room on the original host for CPU, memory, the full disk allowance and its next snapshot. A full host can refuse restoration while preserving the saved state. Do not delete it as a retry step. Missing memory images are an error, not an instruction to claim a fresh boot restored the previous process.

Keep important outputs outside a sandbox before relying on long retention. See storage and retention terms and isolation limits.

Stop returned, but the sandbox is still stopping

Stop is asynchronous. The SDKs wait for stopped; over HTTP, send Prefer: wait=60 or read the sandbox with ?waitFor=stopped. Compute ends after confirmed VM shutdown. Do not report cleanup complete just because the request was accepted. The host-side lease provides a bound, but is not proof that your cleanup already completed.

MCP is connected but execution is still local

MCP tools and a framework's built-in shell are different paths. Configure the framework's execution backend or replace its tool registration explicitly. Run a probe that prints the sandbox id and verifies a remote file round trip before claiming the migration is complete.

Start with the failing step: connection, creation, readiness, execution, pause, wake or cleanup. Every error carries a code, a hint and a requestId: follow the hint first, and keep the request id, the sandbox id, the time and the SDK version for a report. Never include API keys, connection secrets or private file contents in a report. Confirm you are using the correct account and API origin.

If it looks like Runtime's fault, report it with npx withruntime feedback "..." --request-id <id>; if you are stuck, ask npx withruntime support "...". See feedback and support.

Was this page right?