Documentation / Core Concepts / Supported Actions

Supported Actions

WorkerRun supports Node.js-based GitHub Actions, shell steps, and workflow features across both V8 Isolation and Container execution modes.

Supported (Both Modes)

The following features work in both V8 Isolation mode (runs-on: worker-run) and Container mode (runs-on: worker-run/instance-type=lite).

  • Any Node.js action (node12/node16/node20/node24)Full support including community actions
  • Composite actionsActions using runs.using: composite with nested steps
  • run: steps (shell commands)V8: 80+ built-in commands via @cloudflare/shell; Container: full bash
  • Local actions (./path/to/action)Resolved relative to the repository root
  • Pre/post lifecycle hookspre: and post: hooks in action.yml
  • if: conditions on steps and jobsExpression-based conditional execution
  • continue-on-errorStep failures do not fail the job
  • Expression evaluation in with: inputscontains(), startsWith(), endsWith(), format(), fromJSON(), toJSON(), hashFiles(), success(), failure(), always(), cancelled()
  • needs: with job dependencies and outputsCross-job data passing via outputs

Container Mode Only

These features require Container mode (runs-on: worker-run/instance-type=lite or runs-on: worker-run/instance-type=basic).

  • actions/checkout@v4Full git clone with real filesystem
  • Docker-based actionsRequires standard-2 or higher instance type
  • Full filesystem accessPersistent across steps within a job
  • External binaries (git, npm, node, etc.)Real Ubuntu environment

Not Supported

  • Docker-based actions in V8 modeNo Docker runtime in V8 isolates; use Container mode (standard-2+)
  • services: / container: workflow keysService containers are not available

V8 Mode Built-in Shell Commands

In V8 mode, run: steps are executed via @cloudflare/shell. Over 80 commands are available, including:

echoprintfcurljqgrepsedawksortcatlsfindbase64dateheadtailwccuttrteexargsuniqdirnamebasenamemktemptouchmkdirrmcpmvtesttruefalseenvexportreadsleep

In Container mode, a full bash shell is available with all standard Linux binaries.

Expression Contexts

All standard GitHub Actions expression contexts are available in both modes:

github.*env.*steps.*needs.*runner.*secrets.*inputs.*vars.*matrix.*job.*

Supported expression functions:

contains(), startsWith(), endsWith(), format(), fromJSON(), toJSON(), hashFiles(), success(), failure(), always(), cancelled()

Supported operators:

==, !=, ||, &&, !

Workflow Commands & File Commands

Workflow commands (both modes):

::set-output::error::warning::notice::group / ::endgroup::debug::add-mask

File commands (both modes):

$GITHUB_OUTPUT$GITHUB_ENV$GITHUB_STATE$GITHUB_PATH

Compatibility Table

FeatureV8 ModeContainer Mode
Node.js actions (node12/16/20/24)SupportedSupported
Composite actionsSupportedSupported
run: steps (shell commands)80+ built-in commandsFull bash
Local actions (./path/to/action)SupportedSupported
Pre/post lifecycle hooksSupportedSupported
if: conditionsSupportedSupported
continue-on-errorSupportedSupported
needs: / job outputsSupportedSupported
Expression evaluationSupportedSupported
actions/checkout@v4Not supportedSupported
External binaries (git, npm, etc.)Not supportedSupported
Real filesystemNot supportedSupported
Docker-based actionsNot supportedstandard-2+
services: / container:Not supportedNot supported