What a GitHub-Hosted Runner Label Resolves To - ubuntu-latest to Ubuntu 26.04, the macos-14 Retirement, and Tool Versions in AWS Deploy Jobs
First Published:
Last Updated:
runs-on: ubuntu-latest execute jobs on runner images provided by GitHub. As of October 16, 2026, this line refers to the Ubuntu 24.04 image. On September 17, 2026, GitHub announced that this label will move to the Ubuntu 26.04 image. The GitHub Changelog describes the timing of the migration as follows:The ubuntu-latest label will migrate from Ubuntu 24.04 to Ubuntu 26.04. This migration will roll out gradually between October 19 and November 19, 2026. During this window, workflows that use ubuntu-latest will automatically move to Ubuntu 26.04.
The single line in the workflow remains unchanged; what changes is the image to which that line resolves. When the resolved image changes, the versions of tools in the image, such as Python, Node.js, Docker, Docker Compose, Helm, and OpenSSL also change. The sources state the default Java version differently. For jobs deploying to AWS, the pre-installed AWS CLI and AWS SAM CLI are also part of this image. The Node.js version that runs the
aws-actions actions is determined by the Actions runner (Section 6.1).This article examines GitHub-hosted runner labels, distinguishing between the labels users write and the images those labels resolve to. It then outlines who is changing these resolution targets, when, and at what stage, according to GitHub's primary sources, and explains how to stay on the previous resolution target. For 2026, it covers the migration of
ubuntu-latest from Ubuntu 24.04 to Ubuntu 26.04, the deprecation of ubuntu-22.04, the brownouts and retirement of macos-14, and the migration of macos-latest. The tool versions are compared by examining the README files of two images, using the latest tags available as of the verification date (ubuntu24/20261012.334 and ubuntu26/20261012.163). Where the sources disagree, both statements are presented. This article does not say which labels to use, nor does it discuss pricing. The information presented was verified as of October 16, 2026, prior to the ubuntu-latest migration.Related articles on this site:
- Hardening GitHub Actions for AWS Deployments - Workflow Permissions, Untrusted Triggers, Action Pinning, and What the Trust Policy Cannot Catch
- AWS IAM Inbound Workload Federation - IAM Roles Anywhere, OIDC, and SPIFFE Converging on One Trust Policy Condition
- CI/CD Tools History and Timeline - Trademarks, Acquisitions, Foundations, and Where the Build Runs
- Java Version and LTS Timeline - Release History, the LTS Model, and Support Across Distributions
- Python Version Support and EOL Timeline - Release Schedule, Support Policy, and End-of-Life Dates
- Node.js Release and EOL Timeline - LTS Schedule, Active LTS and Maintenance, and End-of-Life Dates
- OpenSSL Release and Support Timeline - The Release Strategy, LTS Releases, and Where the End-of-Support Dates Come From
- Dependency Cooldowns by Package Manager - Defaults Since Which Version, What Update Bots Do Not Wait For, and the Publish Times CodeArtifact Returns
- GitHub App Installation Tokens and Token Length and Format Assumptions - Where Validation Patterns, Storage, Proxies, and Log Redaction Hard-Code the Shape of a Token
- Which Lines of the AWS Helm Instructions Change Under Helm 4 - Server-Side Apply, Wait Strategies, Post-Renderer Plugins, and Amazon ECR Login
- AWS History and Timeline regarding AWS SDKs and the AWS CLI - Overview, Major Versions, Lifecycle Phases, Summary of Updates, and Introduction
Table of Contents
- 1. A Runner Label Is a Name, Not an Image
- 2. How to Read the Tables
- 3. What the runner-images Policy Says About Labels
- 4. Label Changes in 2026, Stage by Stage
- 5. Tool Versions That Change Under the Same runs-on Line
- 6. Where the Change Lands in an AWS Deploy Job
- 7. Staying on the Previous Image, and Checking Which Image Actually Ran
- 8. Failure Modes
- 9. Frequently Asked Questions About GitHub-Hosted Runner Label Migrations
- 10. Summary
- 11. References
1. A Runner Label Is a Name, Not an Image
This section categorizes "runners" into four distinct types. It also defines the intended audience, the scope of this article, and the date of verification, as well as the materials consulted.1.1 Intended Audience
This article is intended for developers who:- Have workflows that deploy to AWS, running on GitHub-hosted runners using
ubuntu-latestormacos-14. For example, workflows that utilizeaws-actions/configure-aws-credentialsto obtain temporary OIDC credentials, push images to Amazon ECR, and deploy using AWS SAM, AWS CDK, or Helm. - Are CI engineers who want to determine what changes, when, and how to stay on the previous image as a result of the
ubuntu-latestmigration that begins on October 19, 2026.
1.2 Four Things Called "Runners"
In the context of workflows, the following four items can sometimes be referred to as "runners." This article keeps these four separate.| Layer | Example on 2026-10-16 | Who Changes It | Where You See It |
|---|---|---|---|
Label (what you write in runs-on) | ubuntu-latest, ubuntu-24.04, ubuntu-26.04, macos-14, macos-latest | You choose the label; GitHub decides which image each label points to | Your workflow file; the Available Images table in the runner-images README |
| Image (the OS image the label resolves to) | Ubuntu 24.04, Ubuntu 26.04, macOS 26 Arm64 | GitHub (runner images) | The Available Images table; the image README |
| Image version (one weekly build of an image) | 20261012.334.1 (Ubuntu 24.04), 20261012.163.1 (Ubuntu 26.04) | GitHub (runner images), typically weekly | The Set up job step log; the release tag such as ubuntu26/20261012.163 |
| Tool version (software preinstalled on that build) | In the Ubuntu 26.04 README: Java 25.0.4+1 (default), Helm 4.3.0, AWS CLI 2.37.13 | GitHub (runner images), within the policy in Section 3 | The image README for that release tag |
Labels represent the name a user specifies. Images refer to the operating system that label resolves to. An image version represents a weekly build of that image. A tool version refers to the version of the software included in that build. In the
ubuntu-latest migration, the image that the label resolves to is what changes. Image versions and tool versions typically change on a weekly basis, even without a migration (see Section 3.3).
Throughout this article, terms with the same spelling but referring to different concepts will be differentiated as follows:
- latest: Labels ending in
-latest(e.g.,ubuntu-latest) represent names. It is important to note that "latest" in this context is distinct from the most recent version. GitHub's documentation clarifies that the-latestimage may not always reflect the latest version provided by the operating system vendor (see Section 3.1). - image: In this article, "image" refers to the operating system image used by the runner. Container images pushed to Amazon ECR are referred to as "container images."
- version: Image versions (e.g.,
20261012.163.1), tool versions (e.g.,4.3.0), and operating system versions (e.g., Ubuntu 26.04) are referred to by those names respectively. - default: In this article, "default" refers to which version of a tool is designated as the default within a set of available versions. For example, the default Java version.
- release: Releases in the runner-images repository refer to the corresponding GitHub releases for each image version. These releases may have a pre-release status (see Section 3.4).
- brownout: In this article, a "brownout" refers to the practice of intentionally causing jobs associated with a specific label to fail for a defined period before its retirement. A brownout related to changes in the format of tokens described in GitHub App Installation Tokens and Token Length and Format Assumptions is a separate event.
1.3 What This Article Covers, and What It Does Not
This article focuses on four key areas:- Labeling Policies: This covers how the runner-images README and GitHub documentation address the
-latestlabel, the number of GA images, the removal of tool versions, and the publication of image versions. - Timeline for Label Changes in 2026: This lists the dates of announcement, general availability, migration start, planned migration completion, deprecation start, brownout, and retirement for labels, presented in separate entries.
- Differences in Tool Versions: This compares the README files for Ubuntu 24.04 and Ubuntu 26.04 images, focusing on the latest tags available as of the verification date.
- Components Encountered in Jobs That Deploy to AWS: This covers the execution environment of aws-actions, how to install AWS SAM CLI, the pre-installed AWS CLI and AWS SAM CLI, and the version of Helm used by the runners.
This article does not cover:
- Workflow Security: Topics such as permissions, untrusted triggers, action version pinning, and self-hosted runners are addressed in Hardening GitHub Actions for AWS Deployments. Section 6 of that article covers action version pinning, and Section 8.1 addresses self-hosted runners.
- OIDC Trust Policies: These are covered in AWS IAM Inbound Workload Federation.
- End-of-Life Dates for Languages and Libraries: The end-of-life dates for Java, Python, Node.js, and OpenSSL are covered in their respective timeline articles. This article only documents the versions included in the images.
- Helm 4 Behavior: This article covers the inclusion of Helm 4.3.0 in the Ubuntu 26.04 image. It does not cover changes to the default behavior of
helm installorhelm upgradein Helm 4. These are covered in Which Lines of the AWS Helm Instructions Change Under Helm 4 on this site. - Generations of AWS CLI and AWS SDK: This article only documents the versions of the AWS CLI included in the images. A timeline of major versions is covered in AWS History and Timeline regarding AWS SDKs and the AWS CLI on this site.
- History and Timeline of CI/CD Tools: This is covered in CI/CD Tools History and Timeline.
- Pricing: This article does not cover the cost of runners or differences in pricing based on labels.
- Windows Labels: This article covers them only in one paragraph in Section 4.5.
This article does not address which labels to use, which operating systems to choose, or which image will be retired next.
1.4 Verification Date and Reviewed Materials
The information presented in this article was verified on October 16, 2026. This date precedes the planned start of theubuntu-latest migration on October 19, 2026, and also precedes the planned retirement date for macos-14 on November 2, 2026. The state of the system described in this article reflects the conditions as of October 16, 2026. The following materials were reviewed:- GitHub Changelog: 2025-04-15 (Retirement of Windows Server 2019), 2025-09-19 (Deprecation of Node 20), 2026-01-30 (Updates to Docker and Docker Compose), 2026-05-14 (Announcement of image migration), 2026-06-11 (Public preview of new images), 2026-08-20 (Visual Studio 2026 image for Windows 11 arm64), 2026-09-10 (Xcode 27 image moved to macOS 27), 2026-09-17 (General availability of Ubuntu 26.04 and
ubuntu-latestmigration), 2026-09-23 (Removal of Node 20), 2026-10-01 (Retirement of macOS 14), 2026-10-15 (General availability of the Xcode 27 image) - actions/runner-images Repository: README file from the main branch. README files from the main branch for the Ubuntu 24.04 and Ubuntu 26.04 images, as well as versions tagged as
ubuntu24/20261012.334andubuntu26/20261012.163. List of releases and release pages for the two tags. Issues with the "Announcement" label: #13518 (macOS 14), #14254 (Ubuntu 22.04), #14747 (General availability of Ubuntu 26.04), #14748 (ubuntu-latestmigration) - GitHub Documentation: GitHub-hosted runners reference
- actions/runner-images Toolset Files:
toolset-2404.jsonfor tagubuntu24/20261012.334andtoolset-2604.jsonfor tagubuntu26/20261012.163 - aws-actions: The
action.ymland README files (from the main branch) for theconfigure-aws-credentials,amazon-ecr-login, andsetup-samrepositories. - AWS Documentation: AWS SAM Developer Guide (reviewed through a search on aws-knowledge MCP).
No workflow was run for this article. The versions of the tools mentioned in this article refer to the information in the image's README file, except where a sentence names another source. To confirm which version was actually used in a specific job, check the job logs (see Section 7.3).
2. How to Read the Tables
This section defines the columns and terms used in the tables in this article. The tables that document label changes use the same columns to show what users write, what it resolves to, who changes the resolution, when the change takes effect, and how to stay on the previous resolution.2.1 Table Columns for Label Changes
The tables in Section 4 and in Section 6.1 use the following columns:What You Write: This refers to the specific designation the user writes in the workflow. In this article, this refers to theruns-onlabel (in the table in Section 6.1, theruns.usingvalue in an action'saction.yml).Resolves To: This indicates where that designation is resolved to (as of the verification date, October 16, 2026). In this article, this refers to the row in the "Available Images" table in the runner-images README, which corresponds to the image that holds that label (in the table in Section 6.1, the Node.js version that the runner uses to run JavaScript actions).Changed By: This identifies who makes the change to the resolution target.Takes Effect: This specifies the date and stage at which the change takes effect. This information is recorded without altering the original wording (e.g., using the original phrasing likegradually,We plan to, orwill).To Keep the Old Behavior: This describes how to stay on the previous resolution target. Only what is stated in the source material is recorded.Source: This indicates the name and date of the source material that provides the basis for that row.
The
Changed By column will contain one of the following:GitHub (runner images): This indicates that GitHub is modifying the resolution target or the contents of the image.GitHub (Actions runner): This indicates that GitHub is changing the runner application. For example, this could refer to the Node.js version that runs a JavaScript action.You (your workflow or command): This indicates that the user is making the change by modifying their workflow or command.The source does not say.: This indicates that the source material does not specify who is making the change.
2.2 Stage Terminology
TheStage column in the table in Section 4 indicates the stage that the sources describe, using the following terminology:Announced: The date when the change was announced.Public preview: The date when the image became available for public preview.Generally available: The date when the image became generally available.Migration begins: The date when migration of the label begins.Migration planned to complete: The date that the source gives as the planned completion of the migration.Deprecation begins: The date when deprecation of the image begins.Brownout: The period during which jobs for that label temporarily fail.Retirement: The date when the image is retired.Fully unsupported: The date that the source gives as the date when the image will be fully unsupported.
These terms are used throughout this article to line up the stages the sources describe. It is possible that a source may refer to the same stage using different terminology. In such cases, the source's original terminology is retained in the
Takes Effect column.2.3 How to Write Dates and Tool Versions
For GitHub Changelog entries, this article uses the publication date of the entry. For issues, it gives the date the issue was opened and the date the content was read. For image README files, it uses the tag name. For documentation, it gives the page name and the verification date. Dates in tables are written as numbers, in the order of year, month, and day.Tool versions are written as shown in the image README files for the tags
ubuntu24/20261012.334 and ubuntu26/20261012.163. These two tags represent the most recent tags as of the verification date, and both have image versions that begin with 20261012. At 07:10 UTC on the verification date, both tags were in a pre-release status. At 12:10 UTC on the same day, both had become releases (see Section 3.4). If the value in the README for the main branch read at 07:10 UTC differs from the tag value, the article notes that as well (see Section 5.3).2.4 When the Source Does Not State Something, or When the Sources Disagree
Each cell of the table contains either the source's statement or a summary of it. If the source does not address a particular point, the cell saysThe source does not say. Before writing this, the article searches for the complete text of the source document, as well as the link it references, and also looks for related information on another page from the same provider. If the source only mentions general principles but does not specifically address the topic of that row, the cell gives both the general principle and a note indicating that no specific mention was found in the source.When sources provide conflicting information, the article lists both statements, each with its corresponding source, without favoring either one. In such cases, it marks the discrepancy as
the sources disagree. In this article, the sources disagree on the Java default (Section 5.6). Similarly, it lists both the title and content of the issue described in Section 4.1, as well as both the announcement and image version for Docker (Section 5.7). If a statement cannot be found after searching, the article writes no statement was found.3. What the runner-images Policy Says About Labels
This section outlines the policies stated in the actions/runner-images README and the GitHub documentation regarding labels, images, image versions, and tool versions. Individual changes in 2026 are detailed in Section 4.3.1 The -latest Label Moves Gradually
The README for runner-images, in the "Latest Migration Process" section, describes the -latest label as follows:These labels point towards the newest stable OS version available.
The same section outlines the migration process as follows:
The -latest migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the -latest label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-14, windows-2022, ubuntu-22.04).
The examples provided in this section,
macos-14 and ubuntu-22.04, were both labels in the middle of deprecation as of the verification date (Sections 4.2 and 4.3).The README's "Label scheme" section reads as follows:
In general the -latest label is used for the latest OS image version that is GA.
Before moving the -latest label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows.
The GitHub-hosted runners reference documentation on GitHub, in the "Note" section, states:
The -latest runner images are the latest stable images that GitHub provides, and might not be the most recent version of the operating system available from the operating system vendor.
As of the verification date, the Ubuntu 26.04 image was generally available, while
ubuntu-latest referred to the Ubuntu 24.04 image (Section 4.1). The text in the README's "Label scheme" section begins with "In general." This article simply presents this text alongside the state as of the verification date.3.2 The Number of GA Images and the Point at Which Deprecation Begins
The runner-images README states the following in the Support Policy section:We support (at maximum) 2 GA images and 1 beta image at a time. We begin the deprecation process of the oldest image label once the newest OS image label has been released to GA.
The same README, in the GA section, states:
GA images are eventually deprecated according to our guidelines as we only support the latest 2 versions of an OS.
Issue #14254, which announces the deprecation for Ubuntu 22.04, includes the following in the motivation section:
GitHub Actions maintains the latest two stable versions of any given OS version.
The start date for the deprecation of Ubuntu 22.04 (September 17, 2026) coincides with the general availability date of Ubuntu 26.04 (see Sections 4.1 and 4.2). As of the verification date, the README for runner-images lists three images – Ubuntu 22.04, Ubuntu 24.04, and Ubuntu 26.04 – in the Available Images table. No statement directly explaining why these three images are listed at the same time was found in the sources this article read. This article simply lists the three statements above.
The Image Deprecation Policy section of the README describes the deprecation process as follows:
- Images begin the deprecation process of the oldest image label once a new GA OS version has been released.
- Deprecation process begins with an announcement that sets a date for deprecation.
- As it gets closer to the date, GitHub begins doing scheduled brownouts of the image.
- During this time there will be an Announcement pinned in the repo to remind users of the deprecation.
- Finally, GitHub will deprecate the image and it will no longer be available.
3.3 Tool Versions Change Independently of Label Migration
The tool versions in the images change independently of any label migration. The README for runner-images specifies the update interval as follows:We typically deploy weekly updates to the software on the runner images.
Regarding the removal of tool versions, the Support Policy section states:
Tools and versions will typically be removed 6 months after they are deprecated or have reached end-of-life
The subjects of these sentences are the tools and their versions. They do not describe the retirement schedule for labels or images.
Concerning changes to the default version, the Default Version Update Policy section states:
- In general, once a new version is installed on the image, we announce the default version update 2 weeks prior to deploying it.
- For potentially dangerous updates, we may extend the timeline up to 1 month between the announcement and deployment.
Each of these statements is written with a degree of generality, using phrases like "typically" or "in general." This article does not define these as fixed periods.
3.4 Where the Main-Branch README and the Tag README Show Different Image Versions
In the runner-images repository, each image version is associated with a GitHub release. The "Image Releases" section in the README file describes the status of these releases as follows:A pre-release is created when the deployment of an image has started. As soon as the deployment is finished, the pre-release is converted to a release.
The README's FAQ section describes where to verify the version of the image used in a job and when the main branch's README file is updated, as follows:
Usually, image deployment takes 2-3 days, and documentation in the main branch is only updated when deployment is finished. To find out which image version and what software versions are used in a specific build, see Set up job (GitHub Actions) or Initialize job (Azure DevOps) step log.
At 07:10 UTC on the verification date, the latest tags for Ubuntu 24.04 and Ubuntu 26.04 were
ubuntu24/20261012.334 and ubuntu26/20261012.163, respectively. Both of these tags were listed as "pre-release." However, the README file for the main branch indicated that Ubuntu 24.04 used image version 20261004.327.1 and Ubuntu 26.04 used image version 20260927.149.1. Therefore, at that time, the README file presented two different image versions for the same images.| Image | Latest release tag (state at 07:10 UTC on 2026-10-16) | Image version in that tag's README | Image version in the main-branch README (07:10 UTC) |
|---|---|---|---|
| Ubuntu 24.04 | ubuntu24/20261012.334 (Pre-release) | 20261012.334.1 | 20261004.327.1 |
| Ubuntu 26.04 | ubuntu26/20261012.163 (Pre-release) | 20261012.163.1 | 20260927.149.1 |
At 12:10 UTC on the same day, the release pages showed both tags as releases. The main-branch README files listed image version
20261012.334.1 for Ubuntu 24.04 and 20261012.163.1 for Ubuntu 26.04, and their contents matched the README files of the two tags.This article compares the README files of these two tags (Section 5). The README files associated with the tags describe builds whose deployment has started. To determine which build a job ran on, refer to the job's logs (Section 7.3).
4. Label Changes in 2026, Stage by Stage
This section outlines the label changes announced for 2026 that this article covers, presenting them stage by stage for each label. The order isubuntu-latest, ubuntu-22.04, macos-14, and macos-latest sequentially, followed by Windows and Arm64 labels in a single paragraph. This article does not cover the Xcode labels (xcode-27 and xcode-27-xlarge). About the Xcode 27 image, the GitHub Changelog (2026-09-10) states, The image previously ran on macOS 26. It also states that the same labels continue to be used. The GitHub Changelog (2026-10-15) announced the general availability of the Xcode 27 image and states, Previously in public preview, this GitHub-hosted image runs on macOS 27 and includes the Xcode 27 toolchain and Apple SDKs.
ubuntu-22.04 brownout box follows issue #14254 as listed, and the issue gives no year (Section 4.2).4.1 ubuntu-latest: From Ubuntu 24.04 to Ubuntu 26.04
The Ubuntu 26.04 image entered public preview on June 11, 2026, and became generally available on September 17, 2026. On the same day, GitHub announced the migration of ubuntu-latest.| What You Write | Stage | Takes Effect | Changed By | Source |
|---|---|---|---|---|
ubuntu-26.04, ubuntu-26.04-arm | Public preview | 2026-06-11 | GitHub (runner images) | GitHub Changelog, 2026-06-11 |
ubuntu-26.04, ubuntu-26.04-arm | Generally available | 2026-09-17 | GitHub (runner images) | GitHub Changelog, 2026-09-17; issue #14747 |
ubuntu-latest | Announced | 2026-09-17 | GitHub (runner images) | GitHub Changelog, 2026-09-17; issue #14748 |
ubuntu-latest | Migration begins | will roll out gradually between October 19 and November 19, 2026 (Changelog); will be rolled out over a period of several weeks beginning October 19, 2026 (issue) | GitHub (runner images) | GitHub Changelog, 2026-09-17; issue #14748 |
ubuntu-latest | Migration planned to complete | We plan to complete the migration by November 19, 2026. | GitHub (runner images) | issue #14748 |
The table below shows what each label resolves to on the verification date, and how to stay on the previous image.
| What You Write | Resolves To (2026-10-16) | Changed By | Takes Effect | To Keep the Old Behavior | Source |
|---|---|---|---|---|---|
ubuntu-latest | Ubuntu 24.04 (x64) | GitHub (runner images) | Moves to Ubuntu 26.04 gradually between October 19 and November 19, 2026 | Write ubuntu-24.04 | runner-images README; GitHub Changelog, 2026-09-17; issue #14748 |
ubuntu-24.04 | Ubuntu 24.04 (x64) | The source does not say. | No announcement of a migration of this label was found as of 2026-10-16 | Not applicable | runner-images README |
ubuntu-26.04 | Ubuntu 26.04 (x64) | The source does not say. | Generally available since 2026-09-17 | Not applicable | runner-images README; issue #14747 |
ubuntu-24.04-arm | Ubuntu 24.04 Arm64 | The source does not say. | issue #14748 describes the move for the x64 ubuntu-latest label | Not applicable | runner-images README; issue #14748 |
The GitHub Changelog (2026-09-17) describes how to continue using the previous behavior as follows:
If you are not ready to move, pin your workflows to ubuntu-24.04 to stay on the current image.
Issue #14748 lists two mitigation methods:
Switch back to Ubuntu 24.04 by specifying the ubuntu-24.04 label.
Use ubuntu-26.04 to test against the new image explicitly.
Issue #14748 specifies that the migration applies to the x64
ubuntu-latest label. The runner-images README's "Available Images" table does not use the -latest label for Ubuntu Arm64 images.The title of issue #14748 is:
[Ubuntu] ubuntu-latest label will use Ubuntu 26.04 in November 2026
The body of the same issue describes the migration timeline as follows:
This change will be rolled out over a period of several weeks beginning October 19, 2026.
We plan to complete the migration by November 19, 2026.
The title is written as November 2026. The body of the text states that the process will be carried out over several weeks, starting on October 19, 2026, and is planned to be completed by November 19, 2026. This article presents these two dates together, without considering either as an error. As the migration will proceed in stages, between October 19, 2026, and November 19, 2026, the same
ubuntu-latest jobs may run on Ubuntu 24.04 images, or they may run on Ubuntu 26.04 images. You can verify which image was used by checking the job logs (Section 7.3).The GitHub Changelog (2026-09-17) states the following regarding the tools used with the Ubuntu 26.04 image:
Ubuntu 26.04 includes updated, and in some cases removed, tools and tool versions compared to earlier images. These changes can break workflows that depend on specific software versions or preinstalled packages.
The differences in tool versions are described in Section 5.
4.2 ubuntu-22.04: Deprecation and Brownout
The deprecation of the Ubuntu 22.04 image is announced in issue #14254. The text in the issue states the timeframe as follows:Deprecation will begin on September 17th, 2026 and the images will be fully unsupported by April 17th,, 2027 for GitHub Actions and Azure DevOps.
The issue includes a comma duplication in the date
April 17th,, 2027. This is preserved from the original text. The "Target date" section in the same issue states: Retirement: April 17th, 2027.| What You Write | Stage | Takes Effect | Changed By | Source |
|---|---|---|---|---|
ubuntu-22.04, ubuntu-22.04-arm | Deprecation begins | 2026-09-17 | GitHub (runner images) | issue #14254 |
ubuntu-22.04, ubuntu-22.04-arm | Brownout | 4 periods in March and April (see the quote below) | GitHub (runner images) | issue #14254 |
ubuntu-22.04, ubuntu-22.04-arm | Fully unsupported | will be fully unsupported by April 17th,, 2027 (Target date: Retirement: April 17th, 2027) | GitHub (runner images) | issue #14254 |
Issue #14254 lists the brownout periods as follows:
March 23, 14:00 UTC - March 23, 00:00 UTC
March 30, 14:00 UTC - March 30, 00:00 UTC
April 6, 14:00 UTC - April 6, 00:00 UTC
April 13, 14:00 UTC - April 13, 00:00 UTC
In each of these four lines, the end time is earlier than the start time. The year is also missing. This article will not interpret or rewrite these time periods; instead, the original text from the issue will be reproduced directly.
In issue #14254, the "Mitigation ways" section says that workflows should be updated from
ubuntu-22.04 to ubuntu-24.04, ubuntu-26.04, or ubuntu-latest, and from ubuntu-22.04-arm to ubuntu-24.04-arm or ubuntu-26.04-arm. A GitHub Changelog article announcing the deprecation of Ubuntu 22.04 was not found in the search scope of this article (searching the Changelog for Ubuntu 22, runner image, and ubuntu-latest).4.3 macos-14: Brownout and Retirement
The deprecation of macOS 14 images is announced in issue #13518 (opened on January 11, 2026). The issue details specify the timeframe as follows:Deprecation will begin on July 6th, 2026 and the images will be fully unsupported by November 2nd, 2026 for GitHub Actions and Azure DevOps.
The GitHub Changelog (2026-10-01) lists the retirement date as follows:
The macOS 14 runner image will be retired on November 2, 2026.
The same Changelog entry lists eight specific periods for the brownout, and issue #13518 lists the same eight periods.
October 5, 14:00 UTC to October 6, 00:00 UTC
October 12, 14:00 UTC to October 13, 00:00 UTC
October 16, 14:00 UTC to October 17, 00:00 UTC
October 19, 14:00 UTC to October 20, 00:00 UTC
October 23, 14:00 UTC to October 24, 00:00 UTC
October 26, 14:00 UTC to October 27, 00:00 UTC
October 29, 14:00 UTC to October 30, 00:00 UTC
October 30, 14:00 UTC to October 31, 00:00 UTC
| What You Write | Stage | Takes Effect | Changed By | Source |
|---|---|---|---|---|
macos-14, macos-14-large, macos-14-xlarge | Announced | issue opened 2026-01-11 | GitHub (runner images) | issue #13518 |
macos-14, macos-14-large, macos-14-xlarge | Deprecation begins | 2026-07-06 | GitHub (runner images) | issue #13518 |
macos-14, macos-14-large, macos-14-xlarge | Brownout | 8 periods from October 5 to October 31, 2026, each 14:00 UTC to 00:00 UTC the next day | GitHub (runner images) | GitHub Changelog, 2026-10-01; issue #13518 |
macos-14, macos-14-large, macos-14-xlarge | Retirement | will be retired on November 2, 2026 | GitHub (runner images) | GitHub Changelog, 2026-10-01 |
The GitHub Changelog (2026-10-01) lists the following macOS arm64 labels as destinations for workflow updates.
macos-latest (macos-26)
macos-15
macos-latest-xlarge (macos-26-xlarge)
macos-15-xlarge
The same article notes that job wait times may increase before the retirement of the
macos-14 label. As of the verification date (October 16, 2026), three macos-14 labels remained listed in the Available Images table in the runner-images README, marked as deprecated.4.4 macos-latest: From macOS 15 to macOS 26
The GitHub Changelog (2026-05-14) announced the migration of macos-latest as follows:The macos-latest image label migration will begin June 15 and take 30 days to complete. The macos-latest image label will point to the macOS 26 image instead of macOS 15. During the migration, users should expect to see their workflows begin running on the macOS 26 image.
The same article described how to continue using previous versions:
To continue using macOS 15, you can target the macos-15 label directly.
| What You Write | Resolves To (2026-10-16) | Changed By | Takes Effect | To Keep the Old Behavior | Source |
|---|---|---|---|---|---|
macos-latest | macOS 26 Arm64 | GitHub (runner images) | will begin June 15 and take 30 days to complete (2026) | Write macos-15 | GitHub Changelog, 2026-05-14; runner-images README |
macos-14 | macOS 14 Arm64 (deprecated) | GitHub (runner images) | will be retired on November 2, 2026 | The source does not say. The Changelog lists macos-latest, macos-15, and their -xlarge labels as the labels to update to | GitHub Changelog, 2026-10-01; runner-images README |
A GitHub Changelog article announcing the completion of the
macos-latest migration could not be found in the scope of this search (searching the Changelog for macos-latest, macOS 14, and runner image). As of the verification date, the "Available Images" table in the runner-images README listed macos-latest under the macOS 26 Arm64 entry. A Changelog article dated October 1, 2026, also states macos-latest (macos-26).4.5 Windows and Arm64 Labels
Changes in 2026 have also been announced for the Windows and Arm64 labels. The GitHub Changelog (2026-05-14) announced that thewindows-latest and windows-2025 labels will be migrated to the Visual Studio 2026 image, a process that will take place over a week, starting on June 8, 2026, and will complete by June 15, 2026. The entry said that workflows can use the windows-2022 label to stay on Visual Studio 2022. The GitHub Changelog (2026-08-20) stated that the windows-11-arm image will be gradually updated to the Visual Studio 2026 image, starting on September 21, 2026, and that the rollout will complete by September 30, 2026. The same entry from 2026-05-14 indicated that the ubuntu-24.04-arm and ubuntu-22.04-arm images will not be updated and will not have release notes published in the runner-images repository during their migration to GitHub's internal pipelines. Previously, on April 15, 2025, the GitHub Changelog announced that the Windows Server 2019 image would be fully retired by June 30, 2025. This article covers the Windows labels only within this paragraph.5. Tool Versions That Change Under the Same runs-on Line
This section compares the versions of tools included in Ubuntu 24.04 and Ubuntu 26.04 images, using the latest tags from their respective README files. The comparison uses the README files for tagsubuntu24/20261012.334 and ubuntu26/20261012.163, with the verification date being October 16, 2026 (see Sections 2.3 and 3.4). The tables are divided into categories: language runtimes, container and Kubernetes tools, AWS tools, and build tools and libraries. The rows in the table represent the tools selected for this article, and do not include every line from the README files.5.1 Language Runtimes
| Tool (as the README names it) | ubuntu24/20261012.334 | ubuntu26/20261012.163 |
|---|---|---|
| Python | 3.12.3 | 3.14.4 |
| Node.js | 22.23.3 | 24.21.0 |
| Java (the row marked default) | 17.0.20+1 (default) | 25.0.4+1 (default) |
| Java versions listed | 8.0.504+1, 11.0.32+1, 17.0.20+1, 21.0.12+1, 25.0.4+1 | 11.0.32+1, 17.0.20+1, 21.0.12+1, 25.0.4+1 |
| Ruby | 3.2.3 | 3.3.8 |
| Perl | 5.38.2 | 5.40.1 |
| PHP | 8.3.6 | 8.5.4 |
| Bash | 5.2.21(1)-release | 5.3.9(1)-release |
| Kotlin | 2.4.21 | 2.4.21 |
| Rust | 1.99.0 | 1.99.0 |
| .NET Core SDK | same list on both (8.0.131 through 10.0.401) | same list on both (8.0.131 through 10.0.401) |
| PowerShell | 7.6.6 | 7.6.6 |
The Python and Node.js entries in this table correspond to the "Language and Runtime" section in the README. The "Cached Tools" section in the README, however, lists the versions of tools that are cached separately. The versions of Go, Node.js, Python, PyPy, and Ruby listed in the "Cached Tools" section were the same across the two tags (for example, Python versions 3.10.22, 3.11.17, 3.12.15, 3.13.16, and 3.14.8).
The default Java version is described in Section 5.6. The end-of-life dates for each language version are covered in the following resources: Java Version and LTS Timeline, Python Version Support and EOL Timeline, and Node.js Release and EOL Timeline.
5.2 Container and Kubernetes Tools
| Tool (as the README names it) | ubuntu24/20261012.334 | ubuntu26/20261012.163 |
|---|---|---|
| Docker Client | 28.0.4 | 29.4.2 |
| Docker Server | 28.0.4 | 29.4.2 |
| Docker Compose | 2.38.2 | 5.1.3 |
| Docker-Buildx | 0.38.0 | 0.38.0 |
| Podman | 4.9.3 | 5.7.0 |
| Buildah | 1.33.7 | 1.42.1 |
| Skopeo | 1.13.3 | 1.21.0-dev |
| Helm | 3.22.0 | 4.3.0 |
| Kubectl | 1.37.1 | 1.37.1 |
| Kind | 0.33.0 | 0.33.0 |
| Minikube | 1.39.0 | 1.39.0 |
Helm version is 3.22.0 in the Ubuntu 24.04 image and 4.3.0 in the Ubuntu 26.04 image. Jobs on
ubuntu-latest that use the pre-installed Helm will use Helm 4 once they run on the Ubuntu 26.04 image, without requiring changes to the workflow. This article does not cover the changes to the default behavior in Helm 4. The relationship between the Docker and Docker Compose announcement and these versions is discussed in Section 5.7.5.3 AWS Tools
| Tool (as the README names it) | ubuntu24/20261012.334 | ubuntu26/20261012.163 | main-branch README at 07:10 UTC (24.04 / 26.04) |
|---|---|---|---|
| AWS CLI | 2.37.13 | 2.37.13 | 2.37.9 / 2.37.4 |
| AWS CLI Session Manager Plugin | 1.2.896.0 | 1.2.896.0 | 1.2.835.0 / 1.2.835.0 |
| AWS SAM CLI | 1.168.0 | 1.168.0 | 1.166.2 / 1.166.2 |
| Docker Amazon ECR Credential Helper | 0.12.0 | 0.12.0 | 0.12.0 / 0.12.0 |
According to the README files for the two tags, the versions of AWS CLI, AWS CLI Session Manager Plugin, AWS SAM CLI, and Docker Amazon ECR Credential Helper were the same. However, the main-branch README read at 07:10 UTC indicated that the versions of AWS CLI differed between the two images. The main-branch README read again at 12:10 UTC matched the README files of the two tags. Whether the versions of the AWS tools are the same depends on which build's README file you consult. Because the versions change weekly (as described in Section 3.3), this article does not present the versions listed in this table as differences in label migration.
5.4 Build Tools, Libraries, and Package Managers
| Tool (as the README names it) | ubuntu24/20261012.334 | ubuntu26/20261012.163 |
|---|---|---|
| OpenSSL | 3.0.13-0ubuntu3.16 | 3.5.5-1ubuntu3.7 |
| CMake | 3.31.6 | 4.4.4 |
| gcc (apt package) | 4:13.2.0-7ubuntu1 | 4:15.2.0-5ubuntu1 |
| Clang | 16.0.6, 17.0.6, 18.1.3 | 20.1.8, 21.1.8, 22.1.2 |
| PostgreSQL | 16.15 | 18.6 |
| MySQL | 8.0.46-0ubuntu0.24.04.4 | 8.4.11-0ubuntu0.26.04.1 |
| Pip | 24.0 | 25.1.1 |
| Npm | 10.9.9 | 11.19.0 |
| Git | 2.55.0 | 2.55.0 |
The end-of-life dates for OpenSSL versions are covered in OpenSSL Release and Support Timeline.
5.5 Tools Not Listed in the Ubuntu 26.04 README
Excluding the apt package list, the following tools are listed in the README for tagubuntu24/20261012.334 but not in the README for tag ubuntu26/20261012.163:| Tool (as the Ubuntu 24.04 README names it) | Section in the Ubuntu 24.04 README | ubuntu24/20261012.334 |
|---|---|---|
| Java 8 | Java | 8.0.504+1 |
| Julia | Language and Runtime | 1.13.1 |
| Miniconda | Package Management | 26.7.1 |
| Lerna | Project Management | 10.1.0 |
| Fastlane | Tools | 2.241.0 |
| Haveged | Tools | 1.9.14 |
| MediaInfo | Tools | 24.01 |
| Mercurial | Tools | 6.7.2 |
| Newman | Tools | 6.2.3 |
| Parcel | Tools | 2.16.4 |
| Pulumi | Tools | 3.268.0 |
| Sphinx Open Source Search Server | Tools | 2.2.11 |
This table shows the differences between the two README files. The GitHub Changelog (dated 2026-09-17) indicates that some tools and their versions were removed from the Ubuntu 26.04 image (Section 4.1). However, this article found no specific mentions of which tools were removed in the Changelog article or issues #14747 and #14748. Therefore, this article lists the tools in the table as those not included in the Ubuntu 26.04 README.
Two other tools are noted here. Neither is a difference between the two tag README files.
- Terraform: Not listed in either of the two README files.
- Swift: Both README files list
Swift 6.4. However, it was not listed in the README for the main branch of Ubuntu 26.04 (20260927.149.1). Swift does not represent a difference between the two labels.
5.6 The Java Default — The Sources Disagree
The version of Java that is the default in the Ubuntu 26.04 image varies depending on the source.The Java table in the README for tag
ubuntu26/20261012.163 includes the following entry:| 17.0.20+1 | JAVA_HOME_17_X64 |
| 25.0.4+1 (default) | JAVA_HOME_25_X64 |
The Java table in the README for tag
ubuntu24/20261012.334 includes the following entry:| 17.0.20+1 (default) | JAVA_HOME_17_X64 |
| 25.0.4+1 | JAVA_HOME_25_X64 |
The README for the main branch of Ubuntu 26.04 (
20260927.149.1) also stated 25.0.4+1 (default). In addition to the image's README, the runner-images repository contains files that define the toolsets included in the images. For tag ubuntu26/20261012.163, the java entry in toolset-2604.json is as follows:"default": "25",
For the same entry in tag
ubuntu24/20261012.334 (specifically toolset-2404.json), it states "default": "17".Meanwhile, issue #14748, which announced the
ubuntu-latest migration, contains a table outlining the software differences between Ubuntu 24.04 and Ubuntu 26.04. The Java row in that table lists 17.0.20+1 (default) for both the Ubuntu 24.04 and Ubuntu 26.04 columns, and the Notes column includes the following text:Default version remains Java 17
The table in issue #14747, which announced the general availability of Ubuntu 26.04, also has the same entry for Java. Issue #14747 includes the following text about this table:
The table is not an exhaustive list of installed software.
The AWS CLI row in issue #14748 lists
2.36.40 in both columns. This version differs from the version listed in the README as of the verification date (Section 5.3).On October 15, 2026, a user commented on issue #14748 and asked the following:
This issue says that Java 17 is still default in Ubuntu 26.04, but README here says that default is version 25. So which is true?
As of the verification date (October 16, 2026), there was no reply from GitHub to this comment in the issue, and the table in the issue still indicated
Default version remains Java 17. This article presents both the 25.0.4+1 (default) listed in the README and the Default version remains Java 17 shown in the issue's table, without assuming either is incorrect. The actual default Java version used in the job can be verified by outputting the values of java -version and JAVA_HOME in the job (see Section 7.3). This article did not run any workflow.5.7 Docker — The Announcement and the Image Versions
The GitHub Changelog (2026-01-30) announced updates for Docker and Docker Compose as follows:On February 9th, 2026, Docker and Docker Compose will be updated on all Windows and Ubuntu runner images except ubuntu-slim.
The same article describes the new version as follows:
Docker Engine: v29.1
Docker Compose: v2.40 (or higher if new v2 minor versions release before our change)
The README file for the tag
ubuntu24/20261012.334 lists Docker Client 28.0.4, Docker Server 28.0.4, and Docker Compose 2.38.2. The README file for the tag ubuntu26/20261012.163 lists Docker Client 29.4.2, Docker Server 29.4.2, and Docker Compose 5.1.3.| Item | Value | Source |
|---|---|---|
| Announced update for Ubuntu runner images | Docker Engine v29.1 and Docker Compose v2.40 (or a higher v2 minor version), on February 9th, 2026 | GitHub Changelog, 2026-01-30 |
| Ubuntu 24.04 image on 2026-10-16 | Docker 28.0.4, Docker Compose 2.38.2 | ubuntu24/20261012.334 README |
| Ubuntu 26.04 image on 2026-10-16 | Docker 29.4.2, Docker Compose 5.1.3 | ubuntu26/20261012.163 README |
The announced version and the version of the Ubuntu 24.04 image differ. The sources this article read did not provide an explanation for this discrepancy. This article does not speculate on the reason. In a comment from October 15, 2026 (issue #14748), a user pointed out that Ubuntu 24.04 uses Docker 28, while Ubuntu 26.04 uses Docker 29, and that this fact was not documented in the issue.
6. Where the Change Lands in an AWS Deploy Job
This section describes the aws-actions actions frequently used in jobs that deploy to AWS, as well as the pre-installed AWS tools, and their relationship to the runner image. The versions of Docker and Docker Compose used when pushing images to Amazon ECR are in Sections 5.2 and 5.7, and the Python version that the default installation method ofsetup-sam uses through python3 is in Section 5.1.6.1 aws-actions Actions Run on node24
On the main branch, as of the verification date, the action.yml files showed that aws-actions/configure-aws-credentials, aws-actions/amazon-ecr-login, and aws-actions/setup-sam all used runs.using: node24.The GitHub Changelog (2026-09-23) states the following regarding Node 20:
This is the final notification that Node 20 is no longer available on GitHub Actions runners. Runners now use Node 24 for JavaScript actions. The temporary ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out is no longer available.
A GitHub Changelog article (2025-09-19) announcing the deprecation of Node 20 included three Editor's notes at the top as of the verification date.
Editor’s note (August 25, 2026): Updated the Node20 removal date to September 23rd, 2026.
Editor’s note (February 25, 2026): Updated the migration date to June of 2026.
Editor’s note (May 19, 2026): Updated the migration date to June 16th, 2026.
| What You Write | Resolves To (2026-10-16) | Changed By | Takes Effect | To Keep the Old Behavior | Source |
|---|---|---|---|---|---|
A JavaScript action whose action.yml has runs.using: node20 | Node 20 is no longer available on GitHub Actions runners | GitHub (Actions runner) | Removal on September 23rd, 2026 (the date set by the Editor's note of August 25, 2026) | The source does not say. The ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out is no longer available | GitHub Changelog, 2025-09-19 and 2026-09-23 |
aws-actions/configure-aws-credentials, aws-actions/amazon-ecr-login, aws-actions/setup-sam | runs.using: node24 in each action.yml on the main branch | The source does not say. | Not applicable | Not applicable | aws-actions repositories (checked 2026-10-16) |
What changed here is the Node.js version that the runner uses to run JavaScript actions. This is a separate change from label migration. Even if an action is pinned to a commit SHA, its execution environment is not pinned. This point is addressed in Sections 6.2 and 10.9 of Hardening GitHub Actions for AWS Deployments.
6.2 aws-actions/setup-sam — Installer or python3
aws-actions/setup-sam is an action that installs the AWS SAM CLI within a job. action.yml defines the use-installer input as follows: use-installer:
description: "Set to true to install using native installers instead of pip"
required: false
default: false
The README describes
use-installer as follows:This is the recommended approach on supported platforms. It does not require Python to be installed, and is faster than the default installation method.
Currently supports Linux x86-64 and aarch64 (ARM) runners. For ARM architecture, only versions 1.104.0 and above are supported.
Regarding Python, which is used when
use-installer is not specified, the README describes the python input as follows:The Python interpreter to use for AWS SAM CLI. Defaults to python on Windows, and python3 otherwise.
The README for the Ubuntu 26.04 image lists
Python 3.14.4 in the Language and Runtime section. The README for the Ubuntu 24.04 image lists Python 3.12.3 (Section 5.1). No statement giving the maximum Python version supported when installing the AWS SAM CLI with pip, nor any information regarding its operation with Python 3.14, was found in the sources this article read. The search covered the setup-sam README and three searches of AWS documentation (the AWS SAM Developer Guide and What's New). The AWS SAM Developer Guide's page on getting started with Terraform support, as a prerequisite for building Lambda artifacts within a Terraform project, states, Python 3.8 or newer is required for use with the AWS SAM CLI. It does not specify an upper limit. This article does not state whether or not the AWS SAM CLI will function with Python 3.14. The README for setup-sam states that the version of the AWS SAM CLI can be specified using the version input.The AWS SAM CLI version to install. Installs the latest version by default.
6.3 Pre-installed AWS CLI and AWS SAM CLI
The Ubuntu 24.04 and Ubuntu 26.04 images include the AWS CLI and AWS SAM CLI (see Section 5.3). The versions of these tools typically change weekly with each build of the images. As of the verification date, the versions were consistent across both images according to the README files of the two tags. However, the main-branch README read at 07:10 UTC indicated different versions of the AWS CLI.Therefore, the pre-installed version of the AWS CLI may change weekly, regardless of label migration. The version used in a job can be determined by examining the logs, as the commands
aws --version and sam --version can be executed in the job to output the version information. This article does not address changes in AWS CLI and AWS SDK generations. These are covered in AWS History and Timeline regarding AWS SDKs and the AWS CLI on this site.6.4 Helm on the Runner
The Ubuntu 26.04 image includes Helm 4.3.0 (see Section 5.2). The Ubuntu 24.04 image, on the other hand, includes Helm 3.22.0. Inubuntu-latest jobs, workflows that utilize the pre-installed helm to deploy charts to Amazon EKS will run Helm 4 without any changes to the workflow definition, starting from the date when the jobs began running on the Ubuntu 26.04 image. This does not apply to workflows that install a different version of Helm in the job. How each line of the AWS Helm instructions changes under Helm 4 is covered in Which Lines of the AWS Helm Instructions Change Under Helm 4 on this site.7. Staying on the Previous Image, and Checking Which Image Actually Ran
This section collects the ways the sources give to stay on the previous image, and the places to check which image a job actually used. These are all methods the sources describe, and do not constitute a recommendation on which method to choose.7.1 Writing ubuntu-24.04
The GitHub Changelog (2026-09-17) and issue #14748 mention writing the ubuntu-24.04 label as the way to stay on the Ubuntu 24.04 image (see Section 4.1).jobs:
deploy:
runs-on: ubuntu-24.04
None of the 12 open issues with the Announcement label in the runner-images repository on the verification date announced the deprecation of the
ubuntu-24.04 label itself. The README for runner-images states that the deprecation of the oldest image label begins when the newest OS image reaches General Availability (GA) (see Section 3.2). This article does not attempt to predict the timing of the deprecation for the Ubuntu 24.04 image.7.2 Running on ubuntu-26.04 Before the Migration
The GitHub Changelog (2026-09-17) notes that you should test the workflow on ubuntu-26.04 before the migration begins. Issue #14748 also says to use ubuntu-26.04 to test against the new image explicitly (see Section 4.1).7.3 Viewing Image and Tool Versions in Job Logs
The FAQ in the runner-images README mentions that the logs from theSet up job step in GitHub Actions can be used to verify the image version and software version used in a job (see Section 3.4). The GitHub documentation, specifically the GitHub-hosted runners reference, also states that the workflow logs record the runner that executed the job.It is also possible to confirm the default version of a tool by running a command in the job and logging the output. The following example shows a step that simply outputs the tool version, without using any secrets or AWS credentials.
jobs:
record-tool-versions:
runs-on: ubuntu-latest
steps:
- name: Print the default tool versions on this image
run: |
java -version
echo "JAVA_HOME=$JAVA_HOME"
python3 --version
node --version
docker version
docker compose version
helm version
aws --version
sam --version
This article does not execute this step.
7.4 Keep a Record of Verification Dates
The image version and the tool versions can change from week to week. What a label resolves to changes when GitHub migrates the label. When documenting decisions related to labels, be sure to record the label itself, the image version (the value from theSet up job log), and the date it was verified. When referencing documentation, include the document's name and date (e.g., the Changelog publication date, the issue verification date, or the tag name in the README).8. Failure Modes
This section outlines common errors that occur when interpreting labels and images, comparing them with the descriptions found in the sources this article read.- Reading that
ubuntu-latestmoves to Ubuntu 26.04 all at once on October 19, 2026: According to the GitHub Changelog, the migration will occur gradually between October 19, 2026, and November 19, 2026. Issue #14748 indicates that the process will take several weeks and is planned to be completed by November 19, 2026. During this period, jobs with the same label may run on either image (Section 4.1). - Reading that pinning a label also pins the tool versions: Even when using
ubuntu-24.04, the image version and the tool versions can change with weekly builds. The README states that software updates aretypicallyreleased on a weekly basis (Section 3.3). - Reading the versions in the table of announcement issue #14748 as the versions in the image: The table lists Java as the default version 17 and AWS CLI as
2.36.40. The README for the verification date lists Java as the default version25.0.4+1for Ubuntu 26.04 and AWS CLI as2.37.13(Sections 5.3 and 5.6). Issue #14747 notes that the table does not provide a comprehensive list of all installed software. - Reading the main-branch README as a description of the image that runs today: The FAQ in the README states that the documentation for the main branch is updated after the deployment is complete. At 07:10 UTC on the verification date, the image version differed between the README for the deployment tag and the README for the main branch. By 12:10 UTC on the same day, they matched (Section 3.4).
- Reading that each tool missing from the Ubuntu 26.04 README has its own removal announcement: The GitHub Changelog mentions that some tools have been removed, but it does not specify which ones. This article highlights the differences in lines between the two README files (Section 5.5).
- Reading a brownout as the retirement: Before retirement, a brownout involves intentionally causing jobs to fail during specific time windows. The brownout for
macos-14consists of eight periods between October 5, 2026, and October 31, 2026, and the image is scheduled to be retired on November 2, 2026 (Section 4.3). - Reading that one source settles the default Java version on Ubuntu 26.04: The README and the table in the issue are inconsistent. On the verification date, there was no response from GitHub in a comment on the issue that inquired about this discrepancy (Section 5.6).
- Reading that writing
ubuntu-24.04keeps a job on Ubuntu 24.04 indefinitely: The runner-images README states that only the latest two versions of an OS are supported as GA images. On the verification date, no deprecation announcement for Ubuntu 24.04 was found, but this article does not attempt to predict future events (Sections 3.2 and 7.1).
9. Frequently Asked Questions About GitHub-Hosted Runner Label Migrations
This article addresses common questions that may arise before and after the migration of theubuntu-latest label.Q1. Will ubuntu-latest switch to Ubuntu 26.04 on October 19, 2026?
No. October 19, 2026, is the date the migration will begin. The GitHub Changelog states that the migration will proceed gradually between October 19, 2026, and November 19, 2026, and issue #14748 indicates that it is scheduled to be completed by November 19, 2026 (Section 4.1).Q2. What should you type to remain on the Ubuntu 24.04 image?
To use the Ubuntu 24.04 image, you should specifyruns-on: ubuntu-24.04. This configuration is mentioned in the GitHub Changelog (September 17, 2026) and issue #14748 (Sections 4.1 and 7.1).Q3. Will ubuntu-24.04-arm jobs also move to Ubuntu 26.04 as part of the ubuntu-latest migration?
Issue #14748 describes the migration as applying to the ubuntu-latest label for x64 systems. ubuntu-24.04-arm is a different label, and the README for the runner images, as of the verification date, does not use the -latest label for the Ubuntu Arm64 images (Section 4.1).Q4. Is the default Java version in the Ubuntu 26.04 image Java 17 or Java 25?
The sources disagree. The README for the image states25.0.4+1 (default), while the table in issue #14748 indicates Default version remains Java 17. The actual value in a job can be verified by printing java -version and JAVA_HOME to the job log (see Sections 5.6 and 7.3).Q5. Is the absence of Pulumi in the Ubuntu 26.04 README file due to it being removed?
The sources this article read do not provide a definitive answer. The GitHub Changelog mentions that some tools were removed, but it does not specify which ones. Pulumi was included in the Ubuntu 24.04 README, but it is one of the tools that is not listed in the Ubuntu 26.04 README (Section 5.5).Q6. Could the macos-14 job fail before its scheduled retirement date?
Yes. The GitHub Changelog (2026-10-01) states that macOS 14 jobs temporarily fail during eight periods between October 5 and October 31, 2026. The scheduled retirement date is November 2, 2026 (Section 4.3).Q7. Do the aws-actions actions require any modifications when used with Ubuntu 26.04?
This article found no such statement in the sources it read. As of the verification date, aws-actions/configure-aws-credentials, aws-actions/amazon-ecr-login, and aws-actions/setup-sam run on node24. Node 20 was removed from GitHub Actions runners on September 23, 2026. This change is separate from the label migration (see Section 6.1).Q8. When was the information in this article verified?
As of October 16, 2026. This was verified prior to theubuntu-latest migration and before the retirement of macos-14. The tool versions referenced are based on the latest tags available on that date (ubuntu24/20261012.334 and ubuntu26/20261012.163) (Sections 1.4 and 3.4).10. Summary
- Labels and images are distinct: Users specify labels, while GitHub determines the corresponding image. The image version and the tool versions can change with weekly builds (Sections 1.2 and 3.3).
- The
ubuntu-latestmigration will be gradual: It will begin on October 19, 2026, and is planned to be completed by November 19, 2026. During this period, jobs associated with the same label may run on either of the two images (Section 4.1). - To remain on Ubuntu 24.04, use the
ubuntu-24.04label: The GitHub Changelog and issue #14748 both give this way of writing it (Section 7.1). macos-14will be retired after a brownout period: The brownout period consists of eight periods between October 5 and October 31, 2026. The planned retirement date is November 2, 2026.ubuntu-22.04began deprecation on September 17, 2026, and is scheduled to become fully unsupported by April 17, 2027 (Sections 4.2 and 4.3).- Many tool versions change with Ubuntu 26.04: These include Python 3.14.4, Node.js 24.21.0, Docker 29.4.2, Docker Compose 5.1.3, Helm 4.3.0, and OpenSSL 3.5.5. As of the verification date, the README files of the two tags showed that the AWS CLI and AWS SAM CLI versions were consistent across both images (Section 5).
- The sources disagree on the default Java version: The image README lists
25.0.4+1 (default), while the table in issue #14748 statesDefault version remains Java 17(Section 5.6). - The README can be read in two places: The README for ongoing builds is available on the pre-release tag, while the README for completed builds is on the main branch. The version used in a job can be verified in the
Set up joblogs (Sections 3.4 and 7.3). - The
aws-actionsactions run onnode24: Node 20 was removed from GitHub Actions runners on September 23, 2026. The default installation method forsetup-samuses the pip ofpython3(pythonon Windows) (Sections 6.1 and 6.2).
11. References
- Ubuntu 26 generally available and latest migration - GitHub Changelog
- New runner images in public preview - GitHub Changelog
- GitHub Actions: Upcoming image migrations - GitHub Changelog
- GitHub Actions: macOS 14 runner image retirement - GitHub Changelog
- Windows 11 arm64 VS2026 image generally available - GitHub Changelog
- Xcode 27 runner image now runs on macOS 27 - GitHub Changelog
- Xcode 27 runner image generally available - GitHub Changelog
- Docker and Docker Compose version upgrades on hosted runners - GitHub Changelog
- Deprecation of Node 20 on GitHub Actions runners - GitHub Changelog
- Node 20 is no longer available in GitHub Actions - GitHub Changelog
- Upcoming breaking changes and releases for GitHub Actions - GitHub Changelog
- actions/runner-images README - GitHub
- Ubuntu 24.04 image README at tag ubuntu24/20261012.334 - GitHub
- Ubuntu 26.04 image README at tag ubuntu26/20261012.163 - GitHub
- actions/runner-images releases - GitHub
- Issue #14748: ubuntu-latest label will use Ubuntu 26.04 in November 2026 - actions/runner-images
- Issue #14747: Ubuntu 26.04 and Ubuntu 26.04 Arm64 are now generally available - actions/runner-images
- Issue #14254: [Ubuntu] The Ubuntu 22 based runner images will begin deprecation on September 17th and will be fully unsupported by April 17th for GitHub Actions and Azure DevOps - actions/runner-images
- Issue #13518: [macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps - actions/runner-images
- GitHub-hosted runners reference - GitHub Docs
- aws-actions/configure-aws-credentials - GitHub
- aws-actions/amazon-ecr-login - GitHub
- aws-actions/setup-sam - GitHub
References:
Tech Blog with curated related content
Written by Hidekazu Konishi