Documentation / Core Concepts / Limitations
Limitations
Limitations differ between V8 Isolation mode and Container mode. Choose the mode that fits your workflow requirements.
V8 Isolation Mode Limitations
runs-on: worker-run
No external binaries
Commands like git, node, npm, python, docker, and apt-get are not available. Shell steps run via @cloudflare/shell with 80+ built-in commands (curl, jq, grep, sed, awk, etc.) but cannot invoke external executables.
In-memory filesystem only
The filesystem is in-memory and ephemeral. Files written during a step are not persisted across steps. actions/checkout and other file-dependent actions do not work.
120-second per-step timeout
Each step has a 120-second timeout. A job with multiple steps can exceed 120 seconds in total, but each individual step must complete within its window.
No set -o pipefail
The @cloudflare/shell environment does not support set -o pipefail. Pipeline failures are determined by the exit code of the last command in the pipe.
No Docker-based actions
Docker-based actions cannot run in V8 isolates. Use Container mode (standard-2 or higher) to run Docker-based actions.
No services: or container:
The services: and container: workflow keys are not available. Service containers cannot be provisioned in V8 isolates.
Container Mode Limitations
runs-on: worker-run/instance-type=lite or runs-on: worker-run/instance-type=basic
Docker actions require standard-2 or higher
Docker-based actions are supported only on standard-2, standard-3, and standard-4 instance types. The lite, basic, and standard-1 types do not include Docker support.
No services: or container:
The services: and container: workflow keys are not available in Container mode.
Both Modes
Secrets
Secrets are available via the secrets context in expressions and with: inputs (e.g. secrets.MY_SECRET). GITHUB_TOKEN is available as an environment variable and through the github object in Node.js actions.
Network
Outbound HTTP requests via fetch() are available in both modes. You can call external APIs and services from your scripts and actions.
Expression operators require spaces
Expression operators must have spaces around them. Write a == b, not a==b. This applies to ==, ||, and && operators.
Container Mode Instance Types
| Instance Type | Docker | Description |
|---|---|---|
lite | No | Lightweight container with limited resources. Suitable for simple tasks. |
basic | No | General-purpose container for common CI tasks. |
standard-1 | No | Standard container with more CPU and memory. |
standard-2 | Yes | Standard container with Docker support enabled. |
standard-3 | Yes | High-performance container with Docker support. |
standard-4 | Yes | Maximum resources with Docker support. |
When to use each mode
V8 Isolation Mode
Lightweight automation that starts in milliseconds — PR labeling, merge checks, posting comments, API calls, shell scripts with built-in commands (curl, jq, grep, sed, etc.), and any Node.js action.
Container Mode
Full CI/CD tasks that need a real OS environment — checkout code with actions/checkout@v4, build and test with npm/node, run arbitrary scripts, and use any tool available on Ubuntu.