Skip to content

What "persistent" means in agent sandboxes, and how ten providers answer it

Updated 27 October 2026; facts about other providers checked 26 October 2026

Most sandbox providers for AI agents now say their sandboxes persist. The word covers very different behavior. On one provider it means the memory and running processes survive a pause. On another, the disk is saved when the sandbox stops. On a third, you can take a snapshot before the sandbox is thrown away.

The differences decide whether an agent’s next job finds its repository and dependencies in place. They also decide what a failure loses. Below are eight questions that separate them, each answered from the providers’ own documentation. Ortam is one of the ten, and it’s in private beta. Its row comes from its own docs for a product you can’t buy yet. Some of its numbers aren’t published, such as how often it saves and how long a start takes. The facts about the others come only from their own docs and pricing pages, checked on 26 October 2026. Every source is linked at the end. The page doesn’t compare regions or SDKs.

Eight questions to ask

  • What survives when the sandbox is off: the disk, the memory and processes, or both?
  • When is the state saved: continuously while it runs, when it stops, or only when you ask?
  • How long is saved state kept by default?
  • What happens to work since the last save if the host fails?
  • Is there a cap on how long a sandbox can run?
  • How long does it take to come back?
  • What does keeping it cost?
  • Is it a VM or a container, and can the agent run Docker inside it?

Runloop is leaving. Its docs say it “is winding down its services”, with support for existing customers through 13 November 2026. Its answers stay listed for teams moving off it.

Each provider has its own word for the off state, and the words mean different things. Vercel and Daytona’s container sandboxes stop. E2B, Daytona’s VM sandboxes and Northflank pause. Fly.io’s Sprites pause too, first warm and then cold. Runloop suspends, Blaxel goes to standby, and Modal and Cloudflare sandboxes end. The answers below use each provider’s own word.

The answers, provider by provider

ProviderKept when off, by defaultWhen it’s savedKept for, by default
Vercel SandboxDiskOn stop or timeout, and on request30 days after last use; configurable
Fly.io SpritesDisk; memory only while warmDisk synced continuously; checkpointsOld automatic checkpoints are pruned
E2BDisk and memory on pause; a timeout kills it unless auto-pause is onOn pause, or a snapshotIndefinitely, once paused
DaytonaContainers (the default): disk. VM sandboxes: disk and memory on pauseContainers: disk stays on the runner. VMs: offloaded to storage. Snapshots on requestNo auto-delete. Containers stop after 15 minutes idle and archive after 7 days stopped; VMs pause after 60 minutes idle
Modal SandboxesNothing, unless you snapshotOnly on a snapshot you triggerFilesystem 30 days, configurable; memory 7 days
Cloudflare SandboxesNothing, unless you snapshotOnly on a snapshot your app takes (beta)30 days from creation or last restore
RunloopDisk on suspendOn suspend, or a disk snapshotSnapshots: indefinitely
NorthflankAn attached volumeNot stated; the volume is a diskNo expiry stated
BlaxelDisk, memory and processes on standbyOn standby, and on requestNo expiry; tiers 0 and 1 cap it at 7 and 30 days
Ortam (private beta)DiskOn a schedule while it runs (interval not yet published), an attempted final save on Stop, and Snapshots on requestWhile your plan is active

What survives: disk, memory, or both

Memory survives on E2B and Blaxel by default, on Daytona’s VM sandboxes when paused, and on Sprites while they are warm. A paused process picks up where it was. That suits work that is expensive to rebuild in memory, such as a loaded dataset or a long interactive session.

On Runloop, Daytona’s container sandboxes, Sprites once they are cold, and Ortam, the disk survives and the processes don’t. Vercel restores the filesystem, and its docs don’t describe keeping memory or processes. The next run boots from the saved disk and starts its services again. For coding agents, the disk holds most of the setup cost. The clone, the installed packages, the Docker images and the build caches are all files. Runloop’s docs state the consequence: “Daemons or other processes running at suspend time must be manually restarted after resuming.” On Ortam, services you enable with systemd start again at boot.

Northflank keeps only what is on an attached volume: “Anything written only to ephemeral storage is lost when the sandbox pauses.” Modal and Cloudflare keep nothing unless your code takes a snapshot. In that model the sandbox is disposable, and you build persistence from volumes or snapshots.

When the state is saved

This question decides what a crash can cost. If a sandbox saves only when it stops, nothing is saved while an agent works for hours. Vercel snapshots on stop or timeout. Calling snapshot() while it runs takes a snapshot and stops the session. E2B saves on pause. Runloop saves on suspend.

Sprites sync the disk continuously: “The filesystem syncs to it continuously, not as a snapshot taken at hibernation.” Ortam saves a running Sandbox on a schedule, and Stop attempts a final save. Its docs don’t publish the interval yet. They also say a save can lag, so the schedule doesn’t promise how much a failure can lose. If the final save fails, Ortam says so and recovers from the previous save.

Saved only when it stopsLost: the whole job
Saved on a schedule while it runsLost: since the last save
Saved only when you snapshotLost: everything after it
SaveHost failsWork lost
If a sandbox’s disk is lost with its host, what a failure loses depends on when the state was last saved.

How long saved state is kept

Expiry defaults vary more than anything else in the table. Vercel’s snapshots “expire 30 days after their last use by default”, and you can remove the expiry. Cloudflare’s snapshots expire “30 days after it is created or last restored”. Modal keeps filesystem snapshots 30 days by default and memory snapshots 7 days, which can’t be extended.

E2B keeps a paused sandbox “indefinitely”, and Runloop’s snapshots “persist indefinitely and continue to incur storage costs”. Daytona doesn’t delete by default. Unless you change its timers, it stops a container sandbox after 15 minutes without activity and archives it after 7 days stopped. It pauses a VM sandbox after 60 idle minutes. On Ortam, saved data “is kept until you delete it while your plan is active.”

If an agent’s environment sits unused for a month between jobs, check this default first.

If the host fails

Save timing tells you what the last save holds. It doesn’t tell you what a hardware failure loses. That also depends on where the disk lives while the sandbox runs. A disk only on the failed machine loses everything since the last save. A disk replicated elsewhere may lose nothing. The other providers’ pages don’t settle this, so ask them directly:

  • Where does a running sandbox’s disk live, and does it survive the loss of its host?
  • What is the most recent work a host failure can lose, and is that a promise?
  • After a failure, does the sandbox come back on its own, and does anything rerun?

Ortam’s docs answer the first two only in part, because its save interval isn’t published yet. Changes after the last completed save can be lost, and “Ortam reports which save it recovered from and which commands were running.” Nothing reruns on its own, so your system decides what to run again. Saves and recovery covers the details.

How long it can run

Session caps matter for agents that run for hours. Vercel caps a session at 45 minutes on Hobby and 24 hours on Pro, but the limit “resets every time a sandbox stops and resumes”. E2B allows 1 hour of continuous runtime on Hobby and 24 hours on Pro, also reset by a pause. Modal sandboxes can run up to 24 hours. Runloop’s default lifetime is 1 hour and can be configured. Cloudflare states an inactivity timeout of up to 6 hours and “does not guarantee that an instance runs for a set time.”

Daytona has no cap by default, but its idle timer can stop an agent’s work. Its docs say “the process itself doesn’t count as ‘activity’”. A container sandbox whose job runs for more than 15 minutes without outside interaction can be stopped partway. For those, set the auto-stop interval to 0. Ortam’s docs say: “A Sandbox runs until you stop it or a published limit applies.” Sprites, Northflank and Blaxel don’t state a cap.

How long it takes to come back

A kept environment saves time only if starting it again is quicker than setting it up. Few providers publish a number, and those that do measure different things. Waking a paused sandbox with its memory is a different operation from booting one from a saved disk.

ProviderStated timeWhat it measures
Fly.io Sprites100–500 ms warm, 1–2 s coldWaking with memory, and booting from the disk once memory is dropped
E2BAbout 1 second to resume; pausing takes about 4 seconds per GiB of memoryResuming with memory and disk
BlaxelUnder 25 ms from standby; going to standby takes about 15 secondsResuming with memory and processes
Northflank“Under a second”Booting a sandbox; a pause keeps only its volume
Cloudflare SandboxesContainer cold starts “often” 1–3 secondsStarting a container; restoring a snapshot isn’t stated
Runloop“Seconds” on one page, 2–5 minutes on anotherResuming from the disk; its two pages disagree
Vercel Sandbox, Daytona, ModalNot statedTheir pages describe resuming as fast without a number
Ortam (private beta)Not published yetBooting from the last save

Restore time usually grows with disk size, and none of these pages give a number for a large disk. Measure it with a disk the size of yours before you rely on it.

What keeping it costs

Saved state is billed by the GB, and the rates differ by more than ten times. Prices are as each provider states them. Hourly rates are converted at 30.4 days a month.

ProviderStated price25 GB for a month
Vercel Sandbox$0.08 per GB a month for snapshots, on Pro$2.00
Fly.io SpritesAbout $0.02 per GB a month cold, $0.50 while awake$0.50 cold
E2B“Paused and killed sandboxes are not billed”Not billed
Daytona$0.000108 per GiB an hour after the first 5 GiB; archived sandboxes aren’t billed$1.58 for 25 GiB, with 5 free
Modal SandboxesNot stated for snapshotsNot stated
Cloudflare SandboxesNot stated for snapshotsNot stated
Runloop$0.000072 per GB an hour for snapshots, $0.00034236 for a suspended devbox’s disk$1.31 as a snapshot, $6.25 suspended
Northflank$0.11657 per GiB a month for a volume$2.91 for 25 GiB
Blaxel$0.20 per GB a month for snapshots$5.00
Ortam (private beta)$0.01 per GB a month, measured after deduplication; a planned launch price$0.25

For a few environments, none of these amounts matter. For hundreds of kept environments, or one per task, they add up. So does the difference between “kept by default” and “kept until it expires”.

VM or container, and Docker

Almost every provider here runs each sandbox in a VM or a microVM, a lightweight VM. Daytona runs containers by default, with VM sandboxes as an option, and Modal offers gVisor (a container runtime with an extra isolation layer) or a VM runtime. On Northflank’s cloud, CPU sandboxes run in microVMs and GPU sandboxes under gVisor.

Docker inside the sandbox works on most of them, often as Docker-in-Docker from a provided image or template. Vercel supports it as a process with system privileges, and Modal on its VM runtime. Ortam runs each Sandbox in its own VM, where the developer user has sudo and can run Docker. A save keeps Docker images and volumes with the rest of the disk.

Which kind fits your agents

  • The environment is expensive to set up and jobs repeat. Look for a disk that is kept by default and saved while it runs, with an expiry longer than the gaps between jobs.
  • The agent holds valuable state in memory. Look for memory snapshots or pause with memory, and check how long that state is kept.
  • Each job must start clean, or runs untrusted code. A sandbox that keeps nothing, with snapshots you take on purpose, is the simpler model.
  • Jobs run for many hours. Check the session or runtime cap, and whether a pause resets it.

Providers change these behaviors often. Several features above are marked beta or alpha in their docs, and some depend on the plan. Check the linked pages before you decide.

Sources

Checked on 26 October 2026. Quotes are from these pages.