GitHub Actions: Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3
A warning that actions in your workflow still run on an old Node.js runtime; update them to current major versions.
Node.js 16 actions are deprecatedNode.js 12 actions are deprecatedPlease update the following actions to use Node.js 20Node.js 20 actions are deprecatedactions are deprecated. Please update Meaning
Each GitHub action declares which Node runtime it uses. When GitHub retires a runtime (Node 12, 16, 20…), runs show this annotation and later fail. Upgrading the action to its latest major (checkout@v4, setup-node@v4) fixes it. Dependabot can open the PRs for you.
Common causes
- Old action versions pinned (
@v2,@v3) - Third-party action not maintained and still on Node 12/16
- Vendored copy of an action
- Version pinned to a commit SHA of an old release
⚡ Quick fix
- Bump each named action to its newest major version
- Enable Dependabot for
github-actions - Replace unmaintained actions with maintained ones or plain scripts
Detailed fix by platform
GitHub Actions
.github/dependabot.yml:updates: [{ package-ecosystem: "github-actions", directory: "/", schedule: { interval: "weekly" } }]
Code examples
Update the versions
steps:
- uses: actions/checkout@v4 # was @v3 (Node 16)
- uses: actions/setup-node@v4 # was @v3
with: { node-version: 20 }How to diagnose
- Actions — Which actions does the annotation list?
- Versions — Latest major available?
- Maintained — Is the action still maintained?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- API rate limit exceeded GitHub Actions: HttpError: API rate limit exceeded for installation ID 123456 / secondary rate limit
- Cache not found / Unable to reserve cache GitHub Actions: Cache not found for input keys: npm-Linux-abc123 / Failed to save: Unable to reserve cache with key, another job may be creating this cache
- Credentials could not be loaded GitHub Actions: Error: Credentials could not be loaded, please check your action inputs: Could not load credentials from any providers
Most viewed in CI/CD
- The process '/usr/bin/git' failed with exit code 128 GitHub Actions: Error: The process '/usr/bin/git' failed with exit code 128
- This job is stuck because you don't have any active runners GitLab CI: This job is stuck because you don't have any active runners online or available with any of these tags assigned to them
- Resource not accessible by integration GitHub Actions: Error: Resource not accessible by integration (403)
Other ways to find it
Where this error sits
Origin: Build & delivery. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 25 Oct 2026