Skip to content

GitHub Actions "Waiting for a runner to pick up this job" - Solutions

What are GitHub Actions Runners?

A runner is the machine or environment that executes jobs in a GitHub Actions workflow. Runners can be categorized into two types:

Runner Types

  • GitHub-hosted runner: Managed by GitHub with pre-configured environments
  • Self-hosted runner: Runs on your own infrastructure with custom configurations

When you see "Waiting for a runner to pick up this job," it means your workflow is queued but no runner is available to execute it.

Common Causes and Solutions

1. Unsupported or Deprecated Runner Labels

Using outdated or unsupported operating system labels is a frequent cause:

yaml
# ❌ Deprecated (as of 2025-04-01)
runs-on: ubuntu-20.04

# ✅ Use latest instead
runs-on: ubuntu-latest

WARNING

GitHub regularly deprecates older runner images. Check the GitHub Actions runner images repository for current supported versions.

2. Typographical Errors

Misspelled runner names will cause indefinite waiting:

yaml
# ❌ Common typos
runs-on: ubuntu-latest  # Extra space
runs-on: ubunut-latest  # Misspelled
runs-on: ubuntu-lates   # Missing character

# ✅ Correct syntax
runs-on: ubuntu-latest

3. Self-Hosted Runner Configuration Issues

For self-hosted runners, ensure:

  • The runner is properly registered with GitHub
  • The runner service is running
  • The repository has permission to use the runner
bash
# Restart self-hosted runner service
./svc.sh stop
./svc.sh start

4. Runner Availability and Capacity

TIP

GitHub-hosted runners have limited capacity, especially for free accounts. During peak times, you may experience delays.

5. YAML Syntax Errors

Incorrect indentation or syntax can prevent workflow processing:

yaml
# ❌ Incorrect indentation
jobs:
  build:
  runs-on: ubuntu-latest  # Wrong indentation level
    steps:
    - uses: actions/checkout@v3

# ✅ Correct indentation
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

6. Environment Restrictions

Environment protections can block job execution:

yaml
# ❌ May cause issues if environment has restrictions
environment: production

# ✅ Try without environment specification first
# environment: production

Quick Troubleshooting Steps

  1. Cancel and retry: Sometimes GitHub has temporary capacity issues
  2. Check GitHub Status: Visit githubstatus.com for platform issues
  3. Verify runner syntax: Double-check runs-on values
  4. Review permissions: Ensure repository has access to required runners

Best Practices

  • Always use ubuntu-latest or other -latest tags for future compatibility
  • Regularly review and update your workflow files
  • Monitor GitHub's announcements for runner changes
  • For critical workflows, consider self-hosted runners for guaranteed capacity
Self-Hosted Runner Setup

If using self-hosted runners:

  1. Follow the official setup guide
  2. Ensure proper networking between your runner and GitHub
  3. Monitor runner status in your repository's "Actions" → "Runners" tab

By following these guidelines, you can resolve most "Waiting for a runner" issues and ensure your GitHub Actions workflows run smoothly.