Which macOS Versions Do Runners Support?
WarpBuild macOS runners cover macOS 14, macOS 15, and macOS 26, all on ARM64 across five labels from $0.08 per minute. macOS 13 was removed June 8, 2026.
Last verified:
WarpBuild macOS runners support three macOS versions today: macOS 14, macOS 15, and macOS 26, all on ARM64, across five runs-on labels. macOS 13 runners were removed on June 8, 2026, so a workflow still naming warp-macos-13-arm64-6x queues without a match until it moves to one of the three remaining images (cloud runners documentation, checked on 2026-08-13).
Answer
Five labels cover the three supported versions. Every row comes from the cloud runners documentation, checked on 2026-08-13.
| macOS version | Runner label | Shape | Storage | Per minute | Alias |
|---|---|---|---|---|---|
| macOS 26 | warp-macos-26-arm64-6x | 6 vCPU, 22GB | 120GB SSD | $0.08 | none |
| macOS 26 | warp-macos-26-arm64-12x | 12 vCPU, 44GB | 270GB SSD | $0.16 | none |
| macOS 15 | warp-macos-15-arm64-6x | 6 vCPU, 22GB | 120GB SSD | $0.08 | warp-macos-latest-arm64-6x |
| macOS 15 | warp-macos-15-arm64-12x | 12 vCPU, 44GB | 270GB SSD | $0.16 | warp-macos-latest-arm64-12x |
| macOS 14 | warp-macos-14-arm64-6x | 6 vCPU, 22GB | 120GB SSD | $0.08 | none |
Each image is built from the matching upstream GitHub runner image and carries the same tooling (preinstalled software documentation), so the software list for a version is the published upstream list for that image. macOS 26 carries one addition: the image ships the Xcode 27.0 SDKs and simulator runtimes while GitHub's upstream macOS 27 runner image is in beta, and a dedicated macOS 27 image follows once that image is released (macOS 26 tooling). The per-image toolchain breakdown is on the Xcode versions answer.
Two facts constrain the version choice. The macOS line is ARM64 only, so there is no Intel image behind any of the five labels. And macOS runners cannot run Docker or nested virtualization, so container builds belong on Linux runners or on remote Docker builders while the macOS job stays with Xcode, Swift, and simulator work (cloud runners documentation).
WarpBuild provides Linux x64, Linux ARM64, macOS, and Windows runners.
Detail
The cadence behind the version list
Version support moves on a published schedule, and the changelog carries the dated entry for every image addition, alias move, and removal. The macOS entries since the current lineup started:
| Date | Change |
|---|---|
| November 6, 2024 | macOS 15 ARM64 added as warp-macos-15-arm64-6x |
| September 2, 2025 | The macos-latest tag moved to macOS 15 from macOS 14 |
| November 24, 2025 | macOS 15 12x added at 12 vCPU and 44GB, $0.16 per minute |
| December 10, 2025 | macOS 26 added with 6x and 12x labels, aliases kept on macOS 15 |
| February 11, 2026 | 12x storage raised to 270GB SSD from 120GB |
| June 8, 2026 | macOS 13 runners removed |
| June 23, 2026 | Xcode 27.0 and its simulator runtimes added to the macOS 26 image |
Two patterns fall out of that list. A new macOS image arrives as a versioned label first, with the latest aliases left where they are, which gives a repository a window to test the new image on one job before anything else moves. And a removal is announced ahead of the date it lands: the June 8, 2026 removal followed a deprecation notice sent on May 5, 2026 (changelog).
Pin a version label when the SDK matters
The alias warp-macos-latest-arm64-6x resolves to warp-macos-15-arm64-6x today, in sync with GitHub's macos-latest tag. It resolved to macOS 14 before September 2, 2025, per the dated entry in the changelog. A job on the alias therefore changes images on a date set by the image roadmap rather than by your release calendar, which is the wrong tradeoff for a build whose signing, deployment target, or simulator destination depends on a specific SDK set.
Pin the versioned label on release-critical jobs and let a second matrix leg track the newer image:
name: ios-ci
on:
pull_request:
push:
branches: [main]
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- runner: warp-macos-15-arm64-6x
role: release
- runner: warp-macos-26-arm64-6x
role: forward-check
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- name: Record the image and toolchain
run: |
sw_vers
xcodebuild -version
xcrun simctl list runtimes
- name: Build and test
run: |
xcodebuild test \
-scheme AppScheme \
-destination "platform=iOS Simulator,name=iPhone 16 Pro"sw_vers prints the macOS build the job actually got, which is the record you want in the log when a test starts failing on one leg and passing on the other. fail-fast: false keeps the pinned release leg green while the forward-check leg surfaces breakage on the newer image.
Rates do not vary by version
macOS pricing is set by size, so a macOS 14 minute and a macOS 26 minute cost the same at the same vCPU count: $0.08 per minute at 6 vCPU and $0.16 per minute at 12 vCPU (cloud runners documentation). Moving a job to a newer image changes the toolchain and nothing on the invoice.
Against GitHub's published list price, warp-macos-latest-arm64-6x at $0.080 per minute with 6 vCPU and 22GB compares with $0.102 per minute for the largest GitHub-hosted macOS ARM64 runner at 5 vCPU and 14GB: $0.022 lower per minute, 22 percent lower list price, on a runner carrying one more vCPU and 8GB more memory (GitHub Actions minute multipliers, checked on 2026-08-13). A 30 minute build is $2.40 against $3.06.
Related Questions
Which macOS versions can a GitHub Actions job run on today?
macOS 14, macOS 15, and macOS 26, across five WarpBuild labels, all on ARM64. macOS 13 runners were removed on June 8, 2026, so a job that still names warp-macos-13-arm64-6x has to move to one of the three remaining images. The full lineup with shapes and rates is on the macOS runner hub.
What does warp-macos-latest-arm64-6x resolve to?
macOS 15, in sync with GitHub's macos-latest tag. The alias moves when the latest image moves, so pin warp-macos-15-arm64-6x or warp-macos-26-arm64-6x when a release train depends on a specific SDK set. Alias moves are dated in the changelog.
Is there a macOS 27 runner image?
Not yet. The macOS 26 image ships the Xcode 27.0 SDKs and simulator runtimes while GitHub's upstream macOS 27 runner image is in beta, and a dedicated macOS 27 image follows once that image is released. The Xcode versions answer covers what that means for a pinned DEVELOPER_DIR path.
Pick a version label from the macOS runner hub, check the shape on the macOS runner sizes page, and price your own macOS minutes on the pricing page.
Start with $10 in free credits
Change the runner label in your workflow and keep the rest of your GitHub Actions setup. Runner time is billed per minute.