SecureCI vs nektos/act: run GitHub Actions locally, and know they’re safe to ship

Last reviewed: 24 October 2026

nektos/act made running GitHub Actions on your own machine popular. The SecureCI CLI does that too, and goes further: one command checks a workflow against your organisation’s pipeline standards, enforces SHA pinning and fails when an action tag quietly moves — before you push.

Short answer:

  • Run workflows locally in Docker, Podman or containerd, with dry runs, artifacts, cache and step summaries built in.
  • Validate before you push: required and forbidden actions, their order, minimum versions, SHA pinning and allowed owners, checked through composite actions and reusable workflows.
  • Catch supply-chain drift: secureci.lock records what every action tag resolves to, and CI fails when one moves.
  • CI-ready output: JSON and SARIF for GitHub code scanning.

At a glance

nektos/actSecureCI CLI
Validate against your pipeline standardsNoYes validate --contract: required / forbidden actions, order, minimum versions
Enforce SHA pinning and allowed ownersNoYes through composite actions and reusable workflows
Action lockfile: fail when a tag movesNoYes secureci inventory --check
Checks mapped to compliance controls (PCI DSS, DORA, ISO 27001…)NoPartial published mapping; supports controls, doesn’t certify
SARIF / JSON output for code scanningNo --json is log output, not findingsYes --format sarif|json
Checks if: expressions before runningNot documentedYes unknown functions and unavailable contexts fail up front
Podman and containerdPartial via a Docker-API-compatible DOCKER_HOST socketYes built in: --container-runtime podman|containerd
ArtifactsPartial server starts only with --artifact-server-pathYes built-in local upload-artifact / download-artifact
$GITHUB_STEP_SUMMARYNo discardedYes printed at the end of each job
Job-level continue-on-errorNo ignoredYes
Run workflows locally in containersYesYes one container per job, never a silent fallback to your host
Dry runYes -nYes run --dry-run
actions/cacheYesYes with GitHub’s key and restore-keys rules
Secret maskingYesYes values never appear on the container command line
Runner imagescatthehacker/ubuntu:act-* (Medium; Micro and Large images also offered)The same images, mappable per runs-on label
Run a subset of matrix combinationsYes --matrixYes --matrix
Load secrets / env / inputs from filesYes --secret-file, --env-file, --var-file, --input-fileYes --secret-file, --env-file, --input-file, --var-file
InstallHomebrew, Scoop, WinGet, Nix and morenpm install -g @secureci/cli, or a standalone binary for Linux, macOS and Windows

One CLI for running and checking workflows

act answers “does this workflow run?”. SecureCI answers that and the question platform teams care about next: “does it meet our standards, and is it running the code we reviewed?”

# Run it locally, like act
secureci run .github/workflows/ci.yml

# Fail if a deploy skips the security scan, runs it in the wrong order, or uses an unpinned action
secureci validate .github/workflows/deploy.yml --contract contracts/platform-standard.yml

# Record what every action tag resolves to, then fail CI when one moves
secureci inventory          # writes secureci.lock
secureci inventory --check  # in CI

The lockfile check targets the pattern behind the 2025 tj-actions/changed-files compromise, where existing tags were moved to malicious code. With SecureCI, that becomes a failing check instead of a silent compromise.

Closer to the real runner

Switching from act

Most act commands have a direct equivalent:

You want to…nektos/actSecureCI CLI
Run a workflowact -W .github/workflows/ci.ymlsecureci run .github/workflows/ci.yml
Simulate without runningact -nsecureci run … --dry-run
Run one jobact -j buildsecureci run … --job build
Pass a secretact -s TOKENsecureci run … --secret TOKEN
Set a repository variableact --var ENV=stagingsecureci run … --var ENV=staging
Simulate an eventact pull_request -e event.jsonsecureci run … --event-name pull_request --event-path event.json
Use PodmanDOCKER_HOST=unix:///…/podman.sock actsecureci run … --container-runtime podman

Try the SecureCI CLI

Free and open source (MIT). Needs Node.js 20+ and, to run workflows, Docker, Podman or containerd.

npm install -g @secureci/cli
secureci validate .github/workflows/ci.yml
secureci run .github/workflows/ci.yml --dry-run

Running GitHub Actions across many repositories? Get early access to org-wide SecureCI →

FAQ

Is SecureCI an alternative to nektos/act?

Yes. secureci run runs GitHub Actions workflows locally in containers, using the same runner images as act, and the same CLI also validates workflows against your pipeline standards, enforces SHA pinning and catches action supply-chain drift.

Can I switch from act to SecureCI?

Yes. Most commands map directly: act -j build becomes secureci run wf.yml --job build, act -n becomes --dry-run, and -s becomes --secret. Jobs run in Linux containers with the same catthehacker/ubuntu images act uses.

Can I run GitHub Actions locally with Podman?

Yes. SecureCI supports Podman natively with --container-runtime podman, and containerd via nerdctl. No socket configuration is needed.

Can I test a workflow without running anything?

Yes. secureci run --dry-run shows what would run, and secureci validate checks syntax, expressions and your pipeline contract without executing any step.

Is SecureCI free?

Yes. The SecureCI CLI is free and open source under the MIT license, for public and private repositories. An org-wide SecureCI platform for platform and security teams is in early access.

Sources

Competitor features change quickly. We checked these on 24 October 2026; if something here is out of date, email [email protected] and we'll fix it.