Guides / GitHub Actions failing: outage versus workflow bug
Part of: Business apps slow or won't load
Last reviewed · By Harry
GitHub Actions failing: outage versus workflow bug
GitHub Actions red X? Tell a Actions outage from YAML bugs, secrets, runners, rate limits and flaky tests before you blame githubstatus.
The PR is blocked by a red check. Someone posts "GitHub is down" in Slack. Sometimes they are right. More often the runner started, your workflow ran, and your job failed. Learning that split saves release trains.
Is Actions having an incident?
Open the GitHub status page. GitHub usually names Actions separately from git operations / API / Codespaces. Also glance at githubstatus.com components. Signals of a real Actions outage:
- Jobs stuck on "Queued" for a long time across unrelated repos and orgs.
- Official component degraded or major incident for Actions.
- Even a trivial
echo helloworkflow on a public template hangs or never picks up a runner.
If your other workflows are green and only one repo is red, stop reading status Twitter and open the failed job log.
Read the job log like an engineer
- Did the runner start? "Requested labels … waiting for a runner" points at runner availability (GitHub-hosted capacity or your self-hosted pool), not a test failure.
- Checkout / auth errors.
fatal: could not read Username, bad PATs, expired GitHub App tokens, or OIDC role trust misconfig fail early. - Secret / variable misses. Empty env vars after an org secret rename are classic Friday failures.
- Dependency and registry. npm/PyPI/Docker Hub rate limits and upstream 5xx look like "Actions is broken" when the workflow simply cannot pull.
- Assertion failures. Tests failed. That is a product bug or flake, not an outage. Quarantine flakes; do not disable the gate silently.
- Timeout / OOM. Job timeout minutes too low, or a memory-hungry build on a small runner label.
Workflow and YAML footguns
- Wrong
branches:filter so the workflow never runs on the PR you care about (then someone "reruns" nothing). pull_request_targetvspull_requestconfusion after a security hardening change.- Matrix excludes that skip the only platform that would have caught the bug.
- Reusable workflow pin moved (
@v3→ broken tag) across many repos at once — feels like an outage, is a supply-chain pin. - Concurrency groups cancelling in-progress runs when pushes land quickly.
Runners: hosted versus self-hosted
- GitHub-hosted. Capacity incidents are announced on status. Heavy queue times without a status post can still happen regionally; try a smaller label or rerun later.
- Self-hosted. Disk full, Docker polluted, agent offline, or label typo. Check the runner machine before opening a GitHub ticket. Autoscaling groups that scale to zero overnight produce morning "Actions dead" tickets.
Permissions, billing and org policy
- Actions disabled for the repo or org; or public PR workflows restricted.
- Minutes exhausted on a private-repo plan — jobs fail with billing messages buried in annotations.
- Environment protection rules waiting for a reviewer; the check looks stuck, not failed.
- OIDC to AWS / Azure failing because the trust policy audience changed — console access may still work; deploys do not.
When to escalate
Escalate to GitHub Support when Actions queues never drain across orgs, status names Actions, and minimal workflows cannot acquire runners. Include org name, workflow run URLs, UTC times, and runner labels. A single repo with a stack trace from your unit test is an engineering fix in your tree.
Related status pages
Related guides
- How to tell if a service is down or it's just you
- AWS Console or Azure Portal sign-in stuck or looping
- Jira or Confluence slow, timed out, or spinning
FAQ
- How do I know if GitHub Actions is down?
- Check the GitHub status Actions component and whether unrelated orgs also queue forever. One red workflow with a log full of test failures is not an Actions outage.
- Jobs stuck on Queued — what now?
- Often runner capacity or a self-hosted agent offline. Confirm labels, agent connectivity, and GitHub status. Rerun after capacity recovers.
- Why did Actions fail after a secret rotation?
- Workflows read secrets at job start. Renamed or deleted org secrets leave empty values and auth failures. Update the workflow or secret name.
- Are flaky tests an outage?
- No. Quarantine or fix the flake. Treating flakes as vendor outages trains the team to ignore real gates.
Did this help?
Thanks. That stays in this tab.