-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[macOS 15] NX codegen process hangs indefinitely after March 17 image update (20260317) on macos-15-xlarge #13837
Description
Description
Description
After the March 17, 2026 runner image update (version 20260317.0218.1), NX monorepo commands hang indefinitely on macos-15-xlarge runners.
Specifically, running yarn nx run-many --target=codegen --all — which executes code generation tasks across multiple projects in an NX monorepo — produces zero output, no error messages, and no progress. The process sits completely silent until the GitHub Actions step timeout cancels it after 15-25 minutes, leaving behind orphan Node.js processes that have to be forcefully terminated:
Terminate orphan process: pid (34711) (node)
Terminate orphan process: pid (34700) (node)
The NX command never reaches its initialization phase — it does not print the project list, does not start the task runner, and does not emit any diagnostic output. It appears to hang during the NX daemon startup or project graph computation phase before any task execution begins.
The exact same workflow, same code, and same dependencies complete successfully in ~20 seconds on macos-15-large runners, which are still running the previous March 3 image (20260303.0227.1).
We have temporarily switched from macos-15-xlarge to macos-15-large as a workaround, but this will break once large runners also receive the March 17 image update.
Environment Comparison
| macos-15-large (Working) | macos-15-xlarge (Broken) | |
|---|---|---|
| Image Version | 20260303.0227.1 |
20260317.0218.1 |
| macOS | 15.7.4 (24G517) | 15.7.5 (24G617) |
- Runner version: 2.332.0
- NX version: 21.6.5
- Node.js (installed via actions/setup-node): 22.20.0
What We Tried
- Setting
NX_DAEMON=falseto disable the NX background daemon — issue persists - Setting
NX_NO_CLOUD=trueto disable remote cache connections — issue persists - Clearing NX local cache (
rm -rf .nx/cache .nx/d) before running — issue persists - Running with
NX_VERBOSE_LOGGING=true— no additional output produced (process hangs before any logging occurs)
Additional Notes
- The issue is 100% reproducible: every build on
macos-15-xlarge(March 17 image) hangs at the NX step, while every build onmacos-15-large(March 3 image) succeeds. - This is blocking our CI/CD pipeline for mobile builds.
Platforms affected
- Azure DevOps
- GitHub Actions - Standard Runners
- GitHub Actions - Larger Runners
Runner images affected
- Ubuntu 22.04
- Ubuntu 24.04
- Ubuntu Slim
- macOS 14
- macOS 14 Arm64
- macOS 15
- macOS 15 Arm64
- macOS 26
- macOS 26 Arm64
- Windows Server 2022
- Windows Server 2025
- Windows Server 2025 with Visual Studio 2026
Image version and build link
Image Version: 20260317.0218.1
Is it regression?
No
Expected behavior
Expected Behavior
On macos-15-xlarge (image 20260317.0218.1), the codegen step should complete in ~20 seconds, same as it did before the March 17 image update:
$ yarn nx run-many --target=codegen --all
NX Running target codegen for 7 projects:
project-a
project-b
project-c
project-d
project-e
project-f
project-g
NX Successfully ran target codegen for 7 projects
Done in 19.50s.
Actual behavior
Actual Behavior
On macos-15-xlarge (image 20260317.0218.1), the codegen step hangs with zero output for hours until the step timeout cancels it:
$ yarn nx run-many --target=codegen --all
<--- no output at all, completely silent
<--- hangs for 15-25 minutes
##[error]The operation was canceled.
Post-job cleanup reveals orphan Node.js processes that were stuck:
Cleaning up orphan processes
Terminate orphan process: pid (34711) (node)
Terminate orphan process: pid (34700) (node)
Repro steps
Repro Steps
- Create a GitHub Actions workflow that runs on
macos-15-xlarge(which currently has image20260317.0218.1) - Use
actions/checkout@v4to checkout a monorepo using NX (version 21.6.5) - Install Node.js 22.x via
actions/setup-node@v3 - Install dependencies via
yarn install - Run
yarn nx run-many --target=codegen --all - The NX command will hang indefinitely with zero output — no project list, no errors, no progress
- After 6 hours the step will be cancelled by the workflow timeout
- Post-job cleanup will show orphan Node.js processes being terminated
To verify it's the image: Run the exact same workflow on macos-15-large (still on image 20260303.0227.1) — codegen completes successfully in ~20 seconds.