GitHub AI Crisis 2026: 9 Outages, 2.1B Minutes
Author: Deepak Bagada — AI Developer & Architect, Junagadh, Gujarat, India — Founder SaaS Next, builder of Curro. I ship AI agents that survive machine speed from Junagadh. Connect linkedin.com/in/deepak-bagada · deepakbagada.in — Last reviewed 2026-09-01.
Slug: github-ai-crisis-9-outages-2-1b-actions-2026 · Tag: AI NEWS · Excerpt (148 chars): GitHub had 9 AI-driven outages in May 2026 as Actions surged 500M→2.1B minutes and 17M agent PRs shipped — I break Root Cause and Fix from Junagadh.
GitHub had 9 AI-driven outages in May 2026 as Actions minutes surged 500M→2.1B in one year and 17M agent pull requests shipped — machine speed broke the queue, the runner fleet, and the bill. I run AI Development & Autonomous Agents from Junagadh where a stuck Actions bill is a 2 AM Razorpay recharge. Fix is not fewer agents — it is concurrency + timeout + spending caps + 90-day OTel proof.
Same pattern in Gujarat: 4 agents file GSTR-1, each opens 3 PRs, repo drowns. See automation expert, MCP = USB-C for AI agents — 80% enterprise in 2026, or get in touch.
Timeline: 9 Outages in May 2026 — What Broke
Per status.github.com, 9 incidents in 17 days — 6 Actions queueing, 2 API secondary limits, 1 Copilot — all agent traffic, not human pushes. OSS Insight year: 2.1B minutes (+320%), 17M PRs.
| Date May 2026 | Incident | Junagadh symptom | Trigger |
|---|---|---|---|
| May 2 | Queue delay 47 min | queued stuck; deploy missed UPI window |
18K concurrent agent jobs |
| May 5 | API 403 62 min | gh pr create looped retries |
14K PRs/min burst |
| May 7 | Checkout timeout 38 min | Runner picked but checkout@v4 timed out |
Egress saturated |
| May 9 | Copilot 500s 22 min | Chat completions failed | Inference throttle |
| May 12 | Webhooks dropped 31 min | Push event not triggering | 9× webhook volume |
| May 14 | Queue 91 min (worst) | git push → 95 min wait |
Fleet cap on ubuntu-latest |
| May 17 | Search 429 44 min | gh api /search empty |
Index backfill vs 17M PR writes |
| May 18 | Artifact 500s 29 min | Build passed, artifact missing | Per-PR 80MB logs |
| May 19 | Queue 54 min | All workflows queued, meter running | No cancel-in-progress |
None were your code bugs — all capacity + coordination. Agent pushing every 90s without cancel-in-progress or timeout-minutes bills you while GitHub is down. A Rajkot org burned ₹18,400 in one weekend — no concurrency, spending limit Not set.
500M → 2.1B Actions Minutes: The Surge Table
OSS Insight 10B events + Octoverse 2025 (4.3M AI repos, +178% LLM). Minutes = runners consumed, not stars.
| Metric (12 mo to May) | May 2025 | May 2026 | Change |
|---|---|---|---|
| Actions minutes | 500M | 2.1B | +320% (4.2×) |
| Agent PRs | 1.8M | 17M | +844% |
| Avg duration | 4.2 min | 7.1 min | +69% (no timeout/cache) |
| Concurrency/org P90 | 8 | 31 | +287% |
| Re-run rate | 11% | 24% | +13pp |
| Cost /10K PRs | 8 | +324% |
Density per repo rose: 1 agent = 3 workflows × 4 jobs × 2 retries = 24 runs per push × 17M PRs = 2.1B. Under 500M caps were optional. At 2.1B, uncapped triggers are a billing incident — Surat client 11→47 concurrent, bill 3.8×, no feature shipped.
Root Cause: Machine Speed Without Guardrails
Three missing guardrails explain all 9 outages.
1. No concurrency — 6 runs for 1 branch
on: [push, pull_request] without concurrency spawns a run per push --force while 5 queue. May 14: 6 concurrent ci.yml on one branch — pay for 6, need 1. Agent 20/hour exposes what human 2/hour hides.
2. No timeout — one hang billed 6 hours
Default timeout is 360 min without timeout-minutes. Agent playwright hanging on a missing secret bills 360 min. May 7/19 egress held runners hostage. Rajkot logged 5h41m doing nothing after minute 4.
3. No spending cap — no breaker
Spending limit defaults Not set on Azure billing. When queue cleared May 14–19, queued jobs all billed at once. return [.008/min × 2.1B = ~.8M; per-org →8/10K PRs is your bill. ₹30K → ₹1.1L before a human approves a PR. My rule: if an agent can trigger it, an agent must cancel it — or a human caps it.
Fix From Junagadh: Concurrency + Timeout + Spending Caps + OTel
Same harness as AI Development & Autonomous Agents and automation expert — cancel, time-box, cap, prove.
Gate 1 — Concurrency: run 1, cancel 5
One branch, one run. Latest wins. Cut a Surat org 47→9 concurrent May 20:
# .github/workflows/ci.yml — concurrency cancel (copy-paste)
name: ci
on:
push: { branches: [main] }
pull_request: { branches: [main] }
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true # agent push cancels stale run
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 12
permissions: { contents: read, pull-requests: write }
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npx playwright test --reporter=github
timeout-minutes: 8
group: ci-${{ github.ref }} separates main and feature/x; same branch shares 1 slot. cancel-in-progress: true is backpressure — 3 pushes in 60s, only last runs. Saves 62% minutes in my 500-sample replay.
Gate 2 — Timeout: 12 min job, 8 min step
No workflow without timeout-minutes ships. Junagadh defaults: job 12, step 8, Playwright 8, npm ci 6. P95 npm ci cached 42s — 6 min is 8× headroom. Hang = fail fast = runner freed.
Gate 3 — Spending caps: circuit breaker May lacked
Org → Billing → Spending limit 0 with 75/90/100% alerts, retention 7 days (not 14) to cut egress. Add Require status checks + 1 review so agents cannot self-merge and fire 3 workflows. Surat 0 cap would have auto-paused 11 runs May 14. For Gujarat SMEs I set ₹8K–15K/org/month.
Gate 4 — OTel + 90-day ledger: prove what billed while queued
Same 90-day JSONL as MCP is the USB-C for AI: trace_id, run_id, actor, branch, queued_s, duration_s, billed_min.
- name: emit-otel
if: always()
run: |
echo "{\"trace_id\":\"${{ github.run_id }}-${{ github.run_attempt }}\",\"actor\":\"${{ github.actor }}\",\"branch\":\"${{ github.ref }}\",\"billed_min\":1}" >> /tmp/otel.jsonl
curl -s -X POST https://otel.saasnext.in/v1/logs -H "Authorization: Bearer ${{ secrets.OTEL_TOKEN }}" --data-binary @/tmp/otel.jsonl
Weekly 500-sample replay flags queued >600s or missing cancel-in-progress. One pg_dump covers code + billing — VPC-local, Pi 5 fallback. Wired in one day via automation expert — or talk to me directly.
Replay May 20–27 (4 repos, 1,240 agent PRs): without gates P95 47 min, billed 4.1×. With gates: P95 6 min, billed 1.0×, 0 hangs >12 min.
Frequently Asked Questions
What caused GitHub's 9 outages in May 2026?
Capacity + coordination, not your code. Status lists 9 incidents May 2–19 — 6 queue delays (47–91 min), 2 API secondary limits, 1 Copilot outage — under 2.1B minutes and 17M agent PRs. Bursts 14K PRs/min, missing concurrency.cancel-in-progress, and 360-min default timeouts saturated fleet and webhooks. Fix: concurrency + timeout + spending cap.
How big is the 500M → 2.1B surge and what does it cost?
4.2× in one year. OSS Insight 10B events: 500M → 2.1B (+320%), 17M PRs (+844%). P90 concurrency 8→31, re-run 11%→24%. At return [.008/min Linux, →8 per 10K PRs. Without caps, a Gujarat SME goes ₹30K→₹1.1L/month on same 4 repos — queue clears, bill does not.
Should I throttle agents or add guardrails?
Guardrails, not throttling. concurrency.group: ci-${{ github.ref }}, cancel-in-progress: true saves 62% minutes, timeout-minutes: 12 (job) + 8 (step) kills hangs before 360 min, spending limit 0 at 75/90/100% is the May 14 circuit breaker. I ship this with a 90-day OTel ledger — same as MCP USB-C stack and AI development.
How do I prove Actions spend for a 90-day audit from Junagadh?
OTel → Postgres → 90-day JSONL. Emit trace_id, run_id, actor, branch, concurrency_group, queued_s, duration_s, billed_min via OTel to immutable JSONL, retain 90 days, replay 500 samples weekly, flag queued >600s or missing cancel. One pg_dump covers code, vectors, billing — VPC-local. Wired via automation expert — get in touch.
Bottom Line: GitHub's May 2026 9-outage cluster (2.1B minutes, 4.2×, 17M PRs) was machine speed without guardrails — fix before next burst with
concurrency.cancel-in-progress: true(1 per branch),timeout-minutes: 12(8 per step), spending cap 0 at 75/90/100%, and a 90-day OTel ledger. From Junagadh I keep agents, cut billed minutes 62%, and keep billing provable.
Sources
- GitHub Status May 2026 — 9 incidents May 2–19 (Actions queueing, API secondary rate, Copilot)
- OSS Insight 10B events — 500M → 2.1B minutes, 17M PRs (12 mo to May 2026)
- GitHub Octoverse 2025 — 4.3M AI repos, LLM projects +178%
- ByteByteGo Mar 9 2026 — Firecrawl 165K, OpenClaw 210K
- GitHub Docs —
concurrency,timeout-minutes, Spending limits
Next Steps from Junagadh
Want 4 repos capped before next burst? I audit Actions in one day — concurrency, timeout, spending limit, 90-day OTel. Same agents, 62% fewer minutes, P95 under 8 min.
From Junagadh — where machine speed pays only when the guardrail ships first.