GitHub Actions macOS runner queue / slow provisioning
macOS-hosted capacity is scarcer than Linux, so macOS jobs frequently wait minutes in a queue before a runner is provisioned, even though they eventually run.
What this error means
Jobs on macos-latest or macos-14 sit in "Waiting for a runner to pick up this job..." far longer than Linux jobs before starting, inflating total pipeline time.
Waiting for a runner to pick up this job...
(macos-latest provisioning delayed)Common causes
Limited macOS pool capacity
macOS runner pools are smaller and in high demand, so queueing during busy periods is common.
Many parallel macOS jobs
A wide matrix of macOS jobs competes for the same scarce capacity, serializing pickups.
How to fix it
Reduce macOS demand
- Run only the jobs that truly need macOS on macOS; keep the rest on Linux.
- Narrow the macOS matrix to essential OS/version combinations.
- Cache heavy macOS steps so reruns are shorter.
Use warm managed capacity
Latchkey managed runners keep warm pools so jobs start without a cold-start queue, auto-retry transient provisioning failures, and run at roughly 69% less than GitHub-hosted runners.
How to prevent it
- Keep macOS-only work isolated to the jobs that need it.
- Avoid wide macOS matrices that fight for scarce capacity.
- Track macOS queue time as a pipeline metric.