Lesstep
GitHub Actions · Checked November 3, 2026

GitHub Actions: the macOS 14 runner image is retired

GitHub keeps the two latest stable versions of each OS image and retires the one before. The macOS 14 image retires on November 2, 2026, with its labels macos-14, macos-14-large and macos-14-xlarge (GitHub changelog, runner-images #13518). A workflow that still asks for one of them has to move, and the move changes the default Xcode.

The brownout message

Before the date, GitHub failed these jobs on purpose in ten brownouts, from 14:00 UTC to midnight on October 5, 12, 16, 19, 23, 26, 29, 30 and 31 and November 1. The changelog lists the first eight; the issue adds October 31 and November 1. A job then ended as Cancelled in the second it was created, with no runner and no steps, and this message:

This job failed because of a scheduled macOS 14 runner image brownout. macOS 14 runner images will be retired on November 2, 2026. For migration options and the brownout schedule, see https://github.com/actions/runner-images/issues/13518

A run cancelled on the evening of November 1 (UTC) was a brownout, not the retirement. The other jobs of the run can still succeed, so a release workflow can publish everything except the macOS artifact.

Jobs still ran on November 2

The date is not a switch. On November 2, public runs on macos-14 still got a runner at 02:15, 11:47 and 12:26 UTC, with the image macos-14-arm64 version 20260831.0302.1. A job that runs today can stop any day now. Before the date, GitHub also warned it may reduce macOS 14 capacity, which means longer queues.

When the label stops answering

runner-images #13518 says workflows on these labels "will be terminated with an error". When older images were removed (ubuntu-18.04, macOS 11), the job waited a day for a runner and then failed with this, followed by a note that the image is deprecated (quoted in rogchap/v8go #399 and maticzav/nookies #592):

This request was automatically failed because there were no enabled runners online to process the request for more than 1 days.

Until then the job shows "Waiting for a runner to pick up this job" (the other reasons a job waits). Cancelling it does not help; the label has to change.

Which label to use

From the issue:

macos-latest is macOS 26 now and moves to the next image by itself. A numbered label such as macos-15 stays put until that image retires in turn, which makes the next move a choice instead of a surprise.

What changes with the move

To find every place in a repository:

grep -rnE "macos-14(-large|-xlarge)?" .github/

Across an organization, GitHub code search: org:YOUR-ORG path:.github/workflows "macos-14". Azure Pipelines is affected too: runner-images #13518 lists Azure DevOps among the platforms.

See failed and queued runs from IntelliJ IDEA

Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, so a macOS job that failed or is still queued while the others ran shows at a glance, and your current branch's runs are in the status bar. Reading is free; re-running, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).

GitHub and GitHub Actions are trademarks of GitHub, Inc.; macOS and Xcode are trademarks of Apple Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc., Apple Inc. or JetBrains.

More: "Waiting for a runner to pick up this job" · Cancelling a run that will not stop · Re-running jobs with debug logging · GitHub Actions plugins for IntelliJ IDEA compared · 日本語