Documentation / Security / Isolation Model
Isolation Model
How WorkerRun keeps every job completely isolated from others across both execution modes.
WorkerRun offers two execution modes. Regardless of which mode a job uses, every job runs in its own isolated environment that is created at job start and destroyed on completion.
V8 Isolation Mode
runs-on: worker-run
The default execution mode. Every job executes inside a fresh V8 isolate. The isolate is created when the job starts and destroyed immediately upon completion. There is no reuse of isolates between jobs, even for jobs triggered by the same repository.
- Each job gets a dedicated V8 isolate with its own execution context
- No shared memory between jobs, even concurrent ones
- No file system access — there is no file system in V8 isolates
- No shared global variables or singletons
- Isolate is destroyed immediately when the job finishes
Container Mode
runs-on: worker-run/instance-type=lite | basic
For workflows that need a real Linux environment, Container Mode runs each job in an isolated container powered by the Cloudflare Sandbox SDK (backed by a Durable Object). The container is created at job start and destroyed on completion.
- Each job gets a dedicated Ubuntu container
- Real filesystem, but ephemeral — destroyed after the job
- No shared state between containers, even for the same repository
- Full Linux environment for shell commands, package installs, and build tools
- Container is destroyed immediately when the job finishes
Cloudflare Workers Runtime
Both execution modes are built on top of the Cloudflare Workers platform. V8 Isolation Mode uses the same V8 isolate technology that powers Cloudflare Workers globally. Container Mode uses the Cloudflare Sandbox SDK, where each container is managed by a Durable Object. Both provide battle-tested isolation boundaries that secure millions of production workloads across the Cloudflare network.
Isolation in Practice
V8 Isolation Mode
V8 Isolate
repo: acme/api
PR #42 check
V8 Isolate
repo: acme/api
PR #43 label
V8 Isolate
repo: acme/web
push check
Each job runs in a completely separate V8 isolate with no shared memory, globals, or file system access between them.
Container Mode
Container (lite)
repo: acme/api
build & test
Container (basic)
repo: acme/api
integration test
Container (lite)
repo: acme/web
deploy preview
Each job runs in a completely separate container with an ephemeral filesystem. Containers are destroyed after the job completes with no shared state between them.