#6178·act

tsc build exits 1 with no output under act/catthehacker, but passes in node:24-bookworm and on GitHub-hosted runners

Author: vikas-gits-goodCreated Sep 2, 2026Updated Sep 2, 2026

Bug report info

  • act version: 0.2.89
  • Docker: 29.7.2
  • Host OS: Linux (Manjaro), kernel 6.18, x86_64
  • Runner image: catthehacker/ubuntu:act-latest (exact: act-24.04-amd64, image version 20260815, built 2026-08-15, Ubuntu 24.04.4 LTS, revision e2f8efe, digest sha256:c58e2b364da03b0c804c7d660f2ecbedf2f221a382b9baa0b344b0144780ff43)
  • Node in the job: v24.20.0 (installed via actions/setup-node@v4, node-version: 24)

Command used with act

act workflow_dispatch -W .github/workflows/repro.yml -j build \
  --network bridge --rm \
  --container-options "-v /path/to/project:/src:ro --memory=12g"

Describe issue

A job builds a large TypeScript project (a NestJS backend, ~1,400 npm dependencies) with npm ci && npm run build, where the build script is tsc -p tsconfig.build.json.

  • npm ci succeeds (installs ~1,439 packages).
  • tsc then exits with code 1 roughly 2–3 seconds after it starts, printing no diagnostics at all — no error TS… lines, nothing on stdout or stderr. The step just goes from > tsc -p tsconfig.build.json straight to failure.

The identical steps (same package-lock.json via npm ci, same npm run build) succeed with exit code 0 in both of these environments:

  1. A plain docker run --rm node:24-bookworm container (copy the source in, npm ci, npm run buildBUILD_EXIT=0).
  2. GitHub-hosted ubuntu-latest runners (the same workflow run on GitHub).

It only fails when run under act with catthehacker/ubuntu:act-latest (act-24.04-amd64, version 20260815).

Things I ruled out:

  • Memory — reproduces with --container-options "--memory=12g" and NODE_OPTIONS=--max-old-space-size=6144; no OOM message appears.
  • Node version — act's job uses v24.20.0 (same major as the passing node:24-bookworm test).
  • Lockfile driftnpm ci is used (lockfile is in sync; a full clean install succeeds).

A ~2.5 s silent non-zero exit from tsc on a project that normally takes ~20–30 s to type-check strongly suggests the process is being terminated early inside the container, but there is no diagnostic, no OOM/kill message, and it's specific to the act/catthehacker environment. It may be an image-environment issue (catthehacker/docker_images) rather than act core — happy to move it there if that's the right home.

Link to GitHub repository

Not available — this reproduces inside a private repository, so I can't share it. The failing project is a large NestJS/TypeScript backend; I have not yet reduced it to a minimal public repro (the behavior appears tied to project size / a large tsc build). I'm glad to run further diagnostics on request.

Workflow content

name: repro
on: workflow_dispatch
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 24
      - run: npm ci
      - run: npm run build   # -> "tsc -p tsconfig.build.json" (large NestJS project, ~1400 deps)

Relevant log output

[repro/build] ⭐ Run Main build
[repro/build]     docker exec cmd=[bash -e /var/run/act/workflow/N] user= workdir=...
[repro/build]   | added 1439 packages, and audited 1440 packages in 27s
[repro/build]   | > [email protected] build
[repro/build]   | > tsc -p tsconfig.build.json
[repro/build]   ❌  Failure - Main build [~2.5s after tsc starts]
[repro/build] exitcode '1': failure

(No error TS…, no stderr, no OOM/kill message — the step ends immediately after > tsc ….)

Additional information

  • node:24-bookworm builds the exact same source cleanly (npm ci + npm run build → exit 0), and GitHub-hosted ubuntu-latest builds it cleanly too — so this is not a code/lockfile/Node-version problem; it's specific to running under act with the catthehacker/ubuntu:act-latest image (act-24.04-amd64, version 20260815, digest sha256:c58e2b364da03b0c804c7d660f2ecbedf2f221a382b9baa0b344b0144780ff43).
  • Increasing container memory and the V8 heap did not change the outcome.