GitHub Actions Deprecation Lint: the 2026 runner and action EOL dates

GitHub Actions Deprecation Lint checks a workflow file against 25 dated GitHub shutdowns and shows when each affected line stops running. Node 20 is removed from GitHub-hosted runners on 2026-09-23, and the ubuntu-22.04 deprecation opens on 2026-09-17. It is for platform engineers who maintain GitHub Actions workflows.

Node 20 is removed from GitHub-hosted runners on 2026-09-23 and ubuntu-22.04 deprecation opens 2026-09-17. This checks a workflow file against 25 dated GitHub shutdowns and names the date each line stops running.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hub
ext install ReadyStack.actions-deprecation-lint-2026
npx @readystack/actions-deprecation-lint-2026 <file>
npx @readystack/actions-deprecation-lint-2026 --mcp

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 25 rules GitHub Actions Deprecation Lint: the 2026 runner and action EOL dates checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Scan every workflow in the repository at once, export the report, fail CI on a finding, re-check on save, and add your own rules.

One payment, one licence key for this tool. The key is shown right after payment.

A freelance DevOps engineer bills about $100/hour in 2026 (goLance 2026 rate guide, range $100-165 for experienced contractors); one blocked release morning costs more than this licence.

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

Five lines in your GitHub Actions workflow stop running on a published date

Five lines in this release workflow stop running on dates GitHub has already published - for the platform engineers who own .github/workflows, the first of them lands on 2026-09-23. Here is the audit of that file, exactly as it prints:

.github/workflows/release.yml
   7  error  the ubuntu-20.04 runner image became fully unsupported on 2025-04-15 - the job fails to start. Use ubuntu-24.04.
   9  warn   actions/checkout@v1-v4 runs on Node 20. Node 20 is removed from GitHub-hosted runners on 2026-09-23 - move to actions/checkout@v5 (needs runner 2.327.1 or later).
  11  error  the ::set-output workflow command was disabled on 2023-06-01 and is now ignored - write to the $GITHUB_OUTPUT file instead.
  12  error  artifact actions v3 were shut down on 2025-01-30 - the step fails today. Move to v6 (v4 changed to immutable artifacts, so a job that uploaded the same name twice needs merge-multiple).
  15  warn   ubuntu-22.04 and ubuntu-22.04-arm enter deprecation on 2026-09-17 and are fully unsupported on 2027-04-17 - move to ubuntu-24.04 or ubuntu-26.04 before the brownouts start.

Three of those five are already fatal. The file they came from:

name: release
on:
  push:
    tags: ['v*']
jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build
      - run: echo "::set-output name=version::1.4.0"
      - uses: actions/upload-artifact@v3
        with: { name: dist, path: dist }
  smoke:
    runs-on: ubuntu-22.04
    steps:
      - run: npm test

Nothing in it looks wrong, and the last run was green. A workflow doesn't rot gradually - it works until a morning when it doesn't start at all. One more date sits outside the file: Node 24 became the runner default on 2026-06-16, and the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true opt-out that pins actions back to Node 20 stops working on 2026-09-23 too.

Why the usual tools miss this

Dependabot and Renovate bump a uses: version when a new release appears - a different question from "when does this stop running". They never read runs-on: labels, so ubuntu-22.04 and macos-13 stay invisible, nor ::set-output, nor using: 'node20' in a composite action of your own. Code assistants are worse, not better: their training data predates these dates, so they'll autocomplete actions/checkout@v4 and runs-on: ubuntu-22.04 into the file you're fixing.

What to do this week

Already unsupported, so fix today: ubuntu-20.04 and ubuntu-18.04 to ubuntu-24.04, windows-2019 to windows-2025, macos-13 to macos-15, upload-artifact@v3 and download-artifact@v3 to @v6, cache@v1-v2 to @v5, ::set-output to $GITHUB_OUTPUT.

Dated, so fix before 2026-09-23: checkout@v1-v4 and setup-node@v1-v4 to @v5, upload-artifact@v4-v5 to @v6, cache@v3-v4 to @v5, setup-python@v1-v5 and setup-java@v1-v4 to @v6. And ubuntu-22.04 to ubuntu-24.04 before the 2026-09-17 brownouts.

Free, and what the licence buys

GitHub Actions Deprecation Lint is a VS Code extension carrying 25 of these dated rules and marking them by line number in the file you have open. That tier is free, asks for no key and has no watermark - the block at the top of this article is exactly what it prints. The same 25 rules also run on a web page with nothing installed.

The licence buys scope, not more rules - both tiers run the identical 25, so a paid answer is never a better answer, only a wider one. Free checks the one file in front of you, when you remember to ask. The licence scans every workflow in the repository in one pass, including the composite action.yml files where using: 'node20' hides; exports CSV, JSON or HTML for a migration ticket; prints JSON a CI step can fail on, so nobody reintroduces a dead version; and re-checks on every save, catching a pasted suggestion before commit. $29 once, one key per person or team seat.

15 seconds — what it actually does

Questions people ask

What does GitHub Actions Deprecation Lint actually do?

It reads a GitHub Actions workflow file and marks every line that GitHub has already switched off or has dated for shutdown. Each finding carries the line number, the exact date, and the replacement: actions/checkout@v4 becomes @v5, ubuntu-20.04 becomes ubuntu-24.04, ::set-output becomes $GITHUB_OUTPUT. Twenty-five dated rules ship inside.

Who is this for?

Developers and platform engineers who own the .github/workflows files in a repository and get paged when a release job dies overnight. It is aimed at teams carrying workflows written before 2026, and at anyone inheriting a repository whose CI has not been touched in a year but still has to ship.

Why is Dependabot or Renovate not enough?

Dependabot bumps a uses: version when a new release appears. It never reads runs-on: labels, so ubuntu-22.04 and macos-13 stay invisible; it never reads ::set-output or using: node20 in your own action.yml; and it cannot tell you that upload-artifact@v5 still runs Node 20 while v6 does not. It reports releases, not shutdown dates.

What is free and what needs a licence?

Free audits the workflow file you have open, against all twenty-five rules, with no key and no watermark. That finishes the job for one file. The licence changes the scope: every workflow in the repository in one pass, an exported CSV, JSON or HTML report, JSON your CI can fail on, re-checking on save, and your own rules.

What would this cost if a person did it?

A freelance DevOps engineer bills roughly one hundred dollars an hour in 2026, with experienced contractors between one hundred and one hundred and sixty-five. Auditing a repository of workflows against GitHub's changelog by hand is most of a morning, and it has to be redone each time GitHub publishes a new date. The licence is twenty-nine dollars once.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. GitHub Actions Deprecation Lint: the 2026 runner and action checks the file you open against 25 rules from a rule set dated 2026-09-20, and points at the exact line with the fix. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →