Waking a sandbox paused moments earlier returns sooner
POST /v1/sandboxes/{id}:wake now returns as soon as the sandbox's processes run again. Its clock is corrected immediately after, before any later command for it runs, and the server records the wake with one round of disk writes instead of three. Memory, processes and open files are kept as before.
API requests no longer return controller_standby during a controller release
While Runtime switches its API to a new release, a request that reaches the previous release is held and then served by the new one, instead of returning 503 controller_standby. Such a request can take up to a few seconds longer during the switch; it no longer needs a retry.
App and Function deploys go live, or fail immediately with a clear error
Production now runs the address router and the controller loop that switch an App or Function to a new version and route its address to its copies. Previously a deploy could stay in switching until the next deploy replaced it, and the App's address returned 404. Where that controller is not running, POST /v1/apps/{id}/deploys, /rollback and :restart (and the same Function routes) now return 501 feature_unavailable immediately and change nothing.
Image deploys that cannot start fail with the reason
When the API refuses an image's start command (for example cwd_not_found, because the image's start directory does not exist or cannot be entered), the deploy now fails immediately with deploy_health_failed and that error in lastOutput. Previously it was retried three times and failed with "warming the image stopped 3 times without an answer".
Saving an egress secret returns in under half a second
PUT /v1/egress-secrets/{name}, DELETE, the scope and rules changes, and the upstream proxy calls now return as soon as the change is stored. Each server that runs your sandboxes receives the change at the same time and usually applies it within a second. Previously the call waited until every such server confirmed the change, and took 10 to 26 seconds for an organization with sandboxes on many servers. enforced is true when every server confirmed before the response, and false while one is still applying it.
Status page hosted outside Runtime: status.withruntime.com
status.withruntime.com shows the current state of the API, the website and sandbox creation, measured from six regions outside Runtime's own servers, so it remains available when Runtime or withruntime.com is not. The sandbox check creates the smallest sandbox, runs a command in it and deletes it; a no_capacity response counts as a failure. Each check shows up, down since a given time, or no recent reading, with a 24-hour history, uptime and median latency. The same data is available as JSON at https://status.withruntime.com/status.json. withruntime.com/status links to it.
Snapshots and forks of long-paused sandboxes
POST /v1/sandboxes/{id}:snapshot and POST /v1/sandboxes/{id}:fork no longer return 409 snapshot_unsupported for a sandbox paused long enough for its disk to move to cold storage. The sandbox is restored from its stored copy first (up to 120 s) and is paused again afterward, including when the request fails. A paused sandbox's disk now moves to cold storage one hour after its last use, and only once its stored copy is verified.
A sandbox can run as root by default
Create it with user: "root" (--user root in the CLI, user= in Python, .user("root") in Java, User: "root" in Go), or set it later with :update, and its commands, background processes and terminals run as root, through its passwordless sudo, with no sudo in front of each one. A call can still name user: "sandbox". Forks and copies of its snapshots run as root too; files written through the files API and SSH logins stay the sandbox user's. A sandbox's details include its user. See who you are.
Pagination for secrets
The list action of the runtime_secrets MCP tool now supports pagination with limit (1 to 100) and after, as its schema documents. Pagination is also supported by GET /v1/egress-secrets (pass the response's next value as after to get the next page), secrets.list in every SDK, and runtime secrets ls --limit --after. The runtime_secrets schema now states which action accepts each field, and a field sent to the wrong action returns an error that names the correct one.
Clearer comparison and calculator pages
The pages in the compare and calculators guides use plainer English: shorter sentences and one name for each term. Two figures were corrected: the Blaxel cost in the Daytona vs Blaxel comparison now shows Blaxel's cost instead of Daytona's, and the Runloop vCPU rate on the Runloop alternatives page now shows the published CPU rate instead of a memory rate.
New private networks and dedicated outbound addresses are temporarily unavailable
Creating a private network or reserving a dedicated outbound address returns 503 no_capacity until gateway servers and address pools are added on sandbox servers. Existing private networks and addresses are unchanged. When they return, each new private network is assigned to one gateway server, its endpoint is that server's address, and the organization's sandboxes run on that server; networks and addresses are spread evenly across servers.