GitHub Actions removals · checked
Node 20 actions deprecated: forced onto Node 24 since 23 Sep 2026
Node 20 actions: removed from the runners 23 Sep 2026, 16 days ago. Every JavaScript action that declares node20 (or node16 or node12) runs on Node 24 instead, and the job carries an annotation naming it. The ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out no longer works, so an action that breaks on Node 24 has no way back. Self-hosted runners on macOS 13.4 or older, or on ARM32, are no longer supported. The fix: Bump each action to its first major on Node 24 (actions/checkout@v5, setup-node@v5, cache@v5, upload-artifact@v6, download-artifact@v7); in your own action.yml, set runs.using to node24. Check your workflows now, with nothing to install: grep -rnE "using: *['\"]?(node20|node16|node12)" action.yml .github/actions
$ grep -rnE "using: *['\"]?(node20|node16|node12)" action.yml .github/actions
Run it from the repository root; it needs nothing installed and sends nothing anywhere. It reads your own actions' action.yml only. For the actions your workflows use, list them with grep -rn "uses:" .github and bump each one named in the fix. The fix is in the first paragraph above. The dates come from this data.
The facts
- What
- Node 20 actions
- Matches
- Actions whose
action.ymldeclaresnode20,node16,node12, including the repository's own - Effect
- Warns; the job still runs
- Announced
- 19 September 2025
- Deprecated from
- 16 June 2026
- In effect since
- 23 Sep 2026removed from the runners 23 Sep 2026, 16 days ago
- After the date
- Every JavaScript action that declares node20 (or node16 or node12) runs on Node 24 instead, and the job carries an annotation naming it. The ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out no longer works, so an action that breaks on Node 24 has no way back. Self-hosted runners on macOS 13.4 or older, or on ARM32, are no longer supported.
- The fix
- Bump each action to its first major on Node 24 (actions/checkout@v5, setup-node@v5, cache@v5, upload-artifact@v6, download-artifact@v7); in your own action.yml, set runs.using to node24.
Notes
- Each action's runtime is what its action.yml declares at the tag or commit you pin, read from GitHub. The major tags in the table below were read on 9 Oct 2026.
- Node 24 became the default on 16 June 2026; GitHub has announced no end date for Node 24 on Actions.
Sources
An email before each brownout, for the repos you watch, is not built.
It would re-read your workflows every day and email you a week and a day before each brownout or removal that would hit them, with no change to your repo. agentcheck's free hourly watch covers MCP servers only today. If you would pay for this one, say so with one click. The click is counted; nothing else is sent or stored.
Counted. Thank you; nothing else was sent.Other GitHub Actions removals
- upload-artifact and download-artifact v1 to v3 · stopped working 30 Jan 2025, 617 days ago
- actions/cache v1 and v2, and pins below v3.4.0 or v4.2.0 · stopped working 1 Mar 2025, 587 days ago
- macOS 10.15 runner image · removed 1 Dec 2022, 1408 days ago
- macOS 12 runner image · removed 3 Dec 2024, 675 days ago
- macOS 13 runner image · removed 4 Dec 2025, 309 days ago
- set-env and add-path workflow commands · disabled 16 Nov 2020, 2153 days ago
- Ubuntu 18.04 runner image · removed 3 Apr 2023, 1285 days ago
- Ubuntu 20.04 runner image · removed 15 Apr 2025, 542 days ago
actions-eol is a free tool from agentcheck, which runs scheduled checks of your endpoints and alerts you when an answer changes. Dates come from GitHub's own pages, read on the day shown; github.com only, since GitHub Enterprise Server keeps its own schedule.