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 versionRunner labelShapeStoragePer minuteAlias
macOS 26warp-macos-26-arm64-6x6 vCPU, 22GB120GB SSD$0.08none
macOS 26warp-macos-26-arm64-12x12 vCPU, 44GB270GB SSD$0.16none
macOS 15warp-macos-15-arm64-6x6 vCPU, 22GB120GB SSD$0.08warp-macos-latest-arm64-6x
macOS 15warp-macos-15-arm64-12x12 vCPU, 44GB270GB SSD$0.16warp-macos-latest-arm64-12x
macOS 14warp-macos-14-arm64-6x6 vCPU, 22GB120GB SSD$0.08none

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:

DateChange
November 6, 2024macOS 15 ARM64 added as warp-macos-15-arm64-6x
September 2, 2025The macos-latest tag moved to macOS 15 from macOS 14
November 24, 2025macOS 15 12x added at 12 vCPU and 44GB, $0.16 per minute
December 10, 2025macOS 26 added with 6x and 12x labels, aliases kept on macOS 15
February 11, 202612x storage raised to 270GB SSD from 120GB
June 8, 2026macOS 13 runners removed
June 23, 2026Xcode 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.

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.