GitHub Actions removals · checked

GitHub Actions deprecations, by date

6 dated changes to GitHub Actions are still ahead, from GitHub's runner-images announcements and changelog (checked 9 October 2026); the next to reach a job is macOS 14 runner image, whose next brownout is in 3 days (5, 12, 16, 19, 23, 26, 29 and 30 Oct 2026, 14:00 to 24:00 UTC). Before a runner image goes, GitHub fails every job that asks for it during brownout windows. Check your workflows now, with nothing to install: grep -rnE "macos-14|macos-14-large|macos-14-xlarge|ubuntu-latest|pull_request_target|github/codeql-action(/[a-z-]+)?@v?(3)\b|ubuntu-22\.04|ubuntu-22\.04-arm|macos-15-intel" .github finds every label, action and trigger above with a date still ahead.

$ grep -rnE "macos-14|macos-14-large|macos-14-xlarge|ubuntu-latest|pull_request_target|github/codeql-action(/[a-z-]+)?@v?(3)\b|ubuntu-22\.04|ubuntu-22\.04-arm|macos-15-intel" .github

Run it from the repository root; it needs nothing installed and sends nothing anywhere. It finds each name as written in your workflow files; a value set in another file and passed in (a matrix from JSON, a reusable workflow's input) needs a look of its own. Each page below gives the fix for one. The dates come from this data.

Ahead

DateWhatBrownouts (UTC)Effect
2 Nov 2026brownouts under waymacOS 14 runner image5, 12, 16, 19, 23, 26, 29 and 30 Oct 2026Breaks a job
19 Oct to 19 Nov 2026aheadubuntu-latest moving to Ubuntu 26.04noneWarns; the job still runs
2 Nov 2026aheadpull_request_target in public repositoriesnoneBreaks a job
Dec 2026aheadCodeQL Action v3noneWarns; the job still runs
17 Apr 2027aheadUbuntu 22.04 runner image23 and 30 Mar, 6 and 13 Apr 2027Breaks a job
Aug 2027aheadmacos-15-intel runner (x86_64)noneBreaks a job

Already in effect

These dates have passed, and workflows still carry them. The pages stay up for anyone migrating late.

DateWhatBrownouts (UTC)Effect
23 Sep 2026in effectNode 20 actionsnoneWarns; the job still runs
4 Dec 2025in effectmacOS 13 runner imagenoneBreaks a job
30 Jun 2025in effectWindows Server 2019 runner imagenoneBreaks a job
15 Apr 2025in effectUbuntu 20.04 runner imagenoneBreaks a job
1 Mar 2025in effectactions/cache v1 and v2, and pins below v3.4.0 or v4.2.0noneBreaks a job
30 Jan 2025in effectupload-artifact and download-artifact v1 to v3noneBreaks a job
3 Dec 2024in effectmacOS 12 runner imagenoneBreaks a job
3 Apr 2023in effectUbuntu 18.04 runner imagenoneBreaks a job
1 Dec 2022in effectmacOS 10.15 runner imagenoneBreaks a job
16 Nov 2020in effectset-env and add-path workflow commandsnoneBreaks a job

No date announced

Asked about often; GitHub has given no date. Each page says what would start one.

DateWhatBrownouts (UTC)Effect
no dateno dateset-output and save-state workflow commandsnoneWarns; the job still runs
no dateno dateWindows Server 2022 runner imagenoneNothing yet
no dateno datemacOS 15 runner image (arm64)noneNothing yet

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.

What is covered

Dated removals GitHub has announced for its hosted runner labels, the runtime of JavaScript actions, the artifact and cache actions, CodeQL Action, workflow commands and the pull_request_target trigger, from GitHub's own pages; the ones already in effect that workflows still carry; and the ones GitHub has not dated. github.com only: GitHub Enterprise Server keeps its own schedule.

Not in workflow files, so no search of them finds it: since 29 September 2026, self-hosted runners below version 2.329.0 no longer run jobs on GitHub Enterprise Cloud (changelog). The whole list is at /actions/removals.json. API versions have their own list: API sunsets; so do language models: model retirements.

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.