Im April und Mai 2026 geriet GitHub Actions unter den Druck von AI Coding Agents. Actions-Rechenzeit stieg von 500 Millionen auf 2,1 Milliarden Minuten pro Woche, Agent-Commits nahe 275 Millionen, am 6. Mai Runner-Fehler 17,1 Prozent; GitHub kündigte einen 30x-Kapazitätsplan an. Parallel machten TanStack-npm (11. Mai) und Mini-Shai-Hulud, der ~/.claude.json und MCP-Konfigurationen ausliest, aus pull_request_target, Fork-Checkout und CLAUDE.md Poisoning eine vordergründige Angriffsfläche. Für technische Leads und CI-Verantwortliche mit iOS/macOS-Pipelines und autonomen Copilot-, Claude- oder Cursor-PRs liefern wir Schmerzpunkte, Kapazitäts- und Angriffsflächenmatrizen, einen Acht-Schritte-Offload auf Remote Mac mini M4 Pro in sechs Regionen sowie Kennzahlen und Fehlermatrix. Zahlen stammen aus GitHub-Status, CSA-Notiz und Runner-Guard-Hinweisen; Links nach Upstream-Updates erneut öffnen. Preise: Mietpreisseite; Bestellung: Bestellseite; Remote: Hilfezentrum. Vertiefung: Remote-Mac-Runner, Xcode-Cloud-Hybrid, CI-Zeitfenster. Personenbezogene Artefakte und Protokolle abstimmen Sie mit DSGVO-Dokumentation, Datenminimierung und Auftragsverarbeitung.
[ SECTION_01 ] // PAIN_MAP Wo GitHub CI/CD zuerst bricht, wenn Agenten den Traffic treiben
- Actions-Warteschlangen vertiefen sich. PR-Workflows rutschen von Sekunden auf Minuten-Pending; Ursache ist oft Agent-Sättigung upstream, nicht fehlende Runner.
- Agent-Sitzungen stocken. Startfehlerraten bis 84 Prozent, Wartezeiten bis 54 Minuten; Rate-Limit-Cache erzeugt Mini-Ausfälle.
- Concurrency-Cap 100 greift. Agent-Fork-PR-Fluten blockieren auch menschliche Pushes in derselben Gruppe.
- Webhooks fallen still. Limit 1500 Events pro 10 s; die UI zeigt „kein Lauf“, obwohl nichts in der Queue landete.
- macOS zuerst betroffen. Nur 5 parallele macOS-Jobs (Free/Pro/Team), 50 auf Enterprise; Archive warten hinten.
- Kein Agent-Cancel, schwache Audit-Spur. Credentials und Egress erscheinen erst nachträglich in Logs.
- Feedback-Schleifen verlängern sich. Hunderte Agent-Iterationen pro Tag treffen Lint, Unit und E2E; Cache und Status-Callbacks hinken hinterher.
[ SECTION_02 ] // SCALE_MATRIX Kapazitätsmatrix: Wo Agent-Traffic Actions-Grenzen durchbricht
Wer publizierte Actions-Limits, Concurrency-Slots und das Agent-Lastprofil in einer Matrix gegenüberstellt, erkennt die Reihenfolge der Engpässe sofort.
| Dimension | Dokumentiertes Limit | Agent-Ära-Muster | Erster Ausfallmodus |
|---|---|---|---|
| Workflow-Trigger-Events | 1.500 pro 10 s pro Repository | Agent pusht Kind-Branches über viele Fork-PRs | Events verworfen; CI wirkt idle |
| Workflow-Run-Queueing | 500 pro 10 s | Reusable-Workflow-Fan-out in Monorepos | Läufe blockiert bei Queue-Overflow |
| Concurrency-Group-Queue | 100 pro Gruppe mit queue: max |
Multi-Agent-Fork-PR-Fan-in in eine Gruppe | Lauf Nummer 101 abgewiesen |
| macOS-Concurrency | 5 auf Free/Pro/Team, 50 auf Enterprise | iOS-Smoke, Archive, Notarisierung auf macOS | Mac-Jobs sichtbar in Queue |
| Self-Hosted-Job-Queue | 24 Stunden ungeplant, dann Auto-Cancel | Nächtliche Agent-Läufe, Kapazitätsrückstand | Jobs still abgebrochen |
| Plattform-Compute | ~2,1 Mrd. Actions-Minuten pro Woche (2026 Q2) | Agent-Commits 275 M wöchentlich, PRs 4 M bis 17 M | 30x-Plan hinkt der Kurve hinterher |
Kleinere Teams sehen zuerst macOS-Concurrency und das Concurrency-Group-Limit brechen; Monorepos erreichen Webhook-Limits früher. Agenten warten nicht auf Review – volle CI-Matrizen werden innerhalb von Stunden ausgereizt, nicht Tagen.
Der Engpass ist nicht „wir brauchen mehr Runner“, sondern dass drei Limit-Schichten (Events, Queues, Concurrency-Slots) gleichzeitig durch die Agent-Commit-Kadenz ausgereizt werden. Ohne neu gezeichneten Flowplan verschiebt punktuelles Skalieren nur den Schmerz.
[ SECTION_03 ] // TRUST_BOUNDARY pull_request_target-Vertrauensbruch und CLAUDE.md Poisoning
2026 entscheidet das Angriffsflächenproblem: Agents verarbeiten nicht vertrauenswürdige Repository-Inhalte (PR-Titel, Issues, Kommentare) mit Schreibzugriff und Pipeline-Geheimnissen (CSA-Notiz, 3. Mai). TanStack-npm (11. Mai) zeigt den durchgängigen Exploit-Pfad. Die Tabelle priorisiert Workflows für das erste Audit.
| Angriffsfläche | Auslösebedingungen | Öffentliche Referenz | Minimale Fix-Richtung |
|---|---|---|---|
| pull_request_target plus Fork-Checkout | Workflow nutzt pull_request_target, checkt Fork-Code aus und baut |
TanStack-npm-Kompromiss, 11. Mai | Wechsel zu pull_request; Release-Geheimnisse erst nach Base-Branch-Review |
| CLAUDE.md / .cursorrules Poisoning | Fork-PR überschreibt CLAUDE.md, copilot-instructions.md oder .cursorrules |
Runner Guard RGS-010 und RGS-011 | Agent-Anweisungen nur aus Base laden; Fork-Checkout-Pfade nie vertrauen |
| .mcp.json und MCP-Server-Hijack | Mini-Shai-Hulud-Wurm exfiltriert ~/.claude.json und MCP-Konfigurationen |
Datadog Security Labs Analyse | MCP-Credentials aus Agent-Prozess fernhalten; Secrets nur an Sandbox-Grenzen injizieren |
| Prompt Injection über PR-Metadaten | Anweisungen versteckt in PR-Titel, Issue-Body oder Kommentaren | CSA-Forschungsnotiz-Beispiele | Pre-Execution-Policy-Filter, Tool-Allowlists, Secrets aus Modellkontext ausschließen |
| Sticky Self-Hosted Runner | Ein Runner bedient mehrere PRs ohne Environment-Reset | Orca-2026-Risiko-Rundown | Ephemere Runner; pro Job zerstören und neu erstellen |
| Third-Party Actions und Cache Poisoning | uses: org/action@v1 statt voller SHA; Cache über PRs geteilt |
TanStack-Kette nutzte Actions-Cache-Poisoning | Auf Commit-SHA pinnen; Cache nach Vertrauen partitionieren; Release-Runner lehnen PR-Cache ab |
Drei-Schichten-Baseline: GitHubs Agentic-Workflows-Architektur trennt Agent-Entscheidung, Ausführung mit Geheimnissen und Release-Credentials; Write-Tokens bleiben aus dem Agent-Prozess. Apple-Signatur-, Provisioning- und Notarisierungs-Credentials zuerst isolieren. EU-Teams dokumentieren personenbezogene Testdaten gemäß DSGVO-Grundsätzen wie Zweckbindung und Löschfristen.
[ SECTION_04 ] // RUNBOOK Acht-Schritte-Plan: Offload auf Self-Hosted Mac-Runner mit Drei-Schichten-Split
Runbook nach GitHub-Sicherheitsleitfäden, CSA-Notiz und NOVAKVM-iOS-Deployments auf Remote Mac mini M4 und M4 Pro; Upstream-Links nach Policy-Updates erneut prüfen.
https://docs.github.com/en/actions/security-for-github-actions
https://docs.github.com/en/actions/reference/limits
https://github.com/marketplace/actions/runner-guard
https://github.com/markndg/varden
- pull_request_target auditieren. Suchen Sie nach Workflows mit PR-Ref-Checkout plus Build, Publish oder Install; zurück zu
pull_requestoder Base-only- und Fork-Jobs splitten. - Drei Runner-Labels.
fork-prnur Lint, Unit, sandboxed E2E ohne Release-Secrets;trusted-buildauf geschützten Branches;release-onlyhinter Protected Environment mit Reviewern. - fork-pr auf Remote Mac. NOVAKVM M4-Knoten mit
--ephemeralregistrieren; hebt das GitHub-macOS-Fünf-Spur-Limit und liefert frische Umgebungen pro Job. - Regional routen. Labels
region=ap-sg,jp-tk,us-west; APAC-Agenten auf Singapur, Hongkong, Tokio; nordamerikanische auf US East und US West. - Actions pinnen, Poisoning scannen. Volle Commit-SHAs statt Tags; Runner Guard auf
fork-prfürCLAUDE.md,copilot-instructions.md,.cursorrules,.mcp.json. - Permissions, OIDC, Environments. Top-level
permissions: read-all; langlebige PATs durch OIDC-Kurzzeit-Tokens ersetzen; Release hinter Required Reviewers. - Runtime-Guardrails. Default-Deny-Egress auf fork-pr; allowlisten GitHub-APIs und Registries; Varden für MCP-Tool-Calls; Secrets nie im Modellkontext.
- 30-Tage-Kapazitätsreview. Actions-Nutzung monatlich nach Trigger splitten; macOS über 80 Prozent zwei Wochen: M4 16 GB, M4 24 GB oder M4 Pro 64 GB hochstufen, 1 TB/2 TB und Parallel-Ressourcen ergänzen.
$ ./config.sh \
--url https://github.com/acme/ios-app \
--token "$RUNNER_TOKEN" \
--labels "self-hosted,macOS,arm64,fork-pr,region=ap-sg" \
--ephemeral
$ ./config.sh \
--url https://github.com/acme/ios-app \
--token "$RUNNER_TOKEN" \
--labels "self-hosted,macOS,arm64,trusted-build,region=ap-sg" \
--ephemeral
runner registered: fork-pr region=ap-sg ephemeral=true
runner registered: trusted-build region=ap-sg ephemeral=true
name: ios-fork-pr
on: pull_request
permissions: read-all
concurrency:
group: fork-pr-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
build:
runs-on: [self-hosted, macOS, arm64, fork-pr]
steps:
- uses: actions/checkout@<full-sha>
- uses: vigilant-llc/runner-guard@<full-sha>
with:
checks: rgs-010,rgs-011,unpinned-actions
- run: xcodebuild -scheme App -configuration Debug \
-destination "platform=iOS Simulator,name=iPhone 15"
[ SECTION_05 ] // HARD_FACTS Zitierbare Kennzahlen und GitHub-Actions-Fehlermatrix
- Agent-Commit-Volumen: Spitze ~275 M pro Woche 2026, monatliche PR-Volumina von 4 M (September 2025) auf 17 M (März 2026).
- Actions-Rechennutzung: 500 M Minuten pro Woche 2023, 1 Mrd. 2025, ~2,1 Mrd. pro Woche 2026 Q2 (GitHub Availability Report, 28. April).
- 30x-Kapazitätsplan: Der 10x-Plan aus Oktober 2025 galt im Februar 2026 als unzureichend; neues Ziel 30x. Der Plan ist Designziel, keine gelieferte Kapazität – Spitzenverkehr unter der Woche queue’t weiter.
- Vorfall 6. Mai: Copilot Cloud Agents mehrere Stunden offline; Actions-Runner-Fehlerquote ~17,1 Prozent. Ursache: Runner-Allokationssystem brach unter Burst-Agent-Anfragen zusammen.
- Actions-Limits (GitHub-Doku): Workflow-Trigger-Events 1.500 pro 10 s pro Repository; Workflow-Run-Queue 500 pro 10 s; Concurrency-Group-Queue 100; Self-Hosted-Jobs nach 24 h Queue auto-cancelled.
- macOS-Concurrency: Free, Pro, Team max. 5 gleichzeitige macOS-Jobs; Enterprise max. 50; Larger Runners teilen dasselbe Cap.
- AI-Config-Poisoning-Erkennung: Runner Guard RGS-010 und RGS-011 decken Umschreibungen von
CLAUDE.md,copilot-instructions.md,.cursorrulesund.mcp.jsonab. TanStack-npm und Mini-Shai-Hulud sind als IOC-Signaturen enthalten.
| Symptom | Wahrscheinliche Ursache | Minimale Verifikation |
|---|---|---|
| Workflows lange in Queue | macOS-Concurrency erschöpft; Agent sättigt Queue | Actions Insights Concurrency prüfen; fork-pr self-hosten evaluieren |
| Lauf abgebrochen, Concurrency-Group voll | Concurrency-Group erreicht 100-Lauf-Cap | Nach PR-Nummer gruppieren; Agent-Fork-PR-Gruppen isolieren |
| Manche Pushes triggern keinen Lauf | Webhook-Events bei 1.500 pro 10 s verworfen | Webhook-Delivery prüfen; Agent drosseln oder Pushes batchen |
| Self-Hosted-Job nach 24 h auto-cancelled | Runner-Kapazität offline oder unterdimensioniert | Runner-Uptime prüfen; Ressourcen nach ephemeral-Fehlern zurückholen |
| Fork-PR-Build erhielt Base-Geheimnisse | pull_request_target plus Fork-Ref-Checkout |
Auf pull_request wechseln; Geheimnisse in Protected Environment |
| Agent-Verhalten plötzlich abweichend | Fork-PR vergiftete CLAUDE.md oder .cursorrules |
Runner Guard RGS-010/011; Agent-Config nur aus Base laden |
| Credentials in ausgehendem Traffic | Mini-Shai-Hulud-Klasse liest ~/.claude.json oder MCP |
Credentials rotieren; MCP aus Agent-Prozess; Egress verschärfen |
| Unerwarteter npm-Publish | release.yml Vertrauensbruch plus Cache Poisoning | Publish über Protected Environment, Reviewer, OIDC, gepinnte SHAs |
[ SECTION_06 ] // PLATFORM_CLOSE Sechs-Regionen-M4-Pro-Fußabdruck und warum Fork-PRs auf Remote Mac gehören
Singapur und Hongkong sind Standard für APAC Fork-PR und Trusted Build; SSH, Clone und Notarisierung bleiben stabil. Tokio und Seoul für release-only mit App-Store-Regionalflows. US East und US West für EU-Zeitzonen-Agenten und Roundtrips zu GitHub-, OpenAI- und Anthropic-APIs ohne APAC-Konkurrenz.
Sizing: M4 16 GB / 256 GB ephemer für fork-pr; M4 24 GB / 512 GB trusted-build; M4 Pro 64 GB / 2 TB für release-only und Multi-Xcode (Multi-Xcode, Zeitfenster). Parallel laufende Simulator- und Metal-beschleunigte UI-Tests brauchen getrennte Speicher- und IOPS-Planung.
Alternativen schwächeln: GitHub-hosted setzt Kapazität und Vertrauensgrenzen auf noch nicht geliefertes 30x; der 17,1-Prozent-Ausfall vom 6. Mai war kein Einzelfall. Büro-Macs und Laptops fehlen Ephemeralität, Regionen und fallen bei Deckel zu – dieselbe Domäne wie Produktions-Credentials wie beim TanStack-Vorfall. Virtualisierte macOS-VPS wackeln unter Agent-Triggern; Notarisierung auf Bare Metal ist zuverlässiger.
Für iOS- und macOS-Teams, die Fork-PR, Release-Credentials und Agent-Erreichbarkeit wirklich trennen, sind NOVAKVM Bare-Metal-Mieten die passendere Wahl: sechs Regionen, dediziertes Apple Silicon, elastische Tages-, Wochen- oder Monatsmiete für Agent-Spitzen. Preise: Mietpreisseite; Pilot: Bestellseite; Remote: Hilfezentrum; Hybrid: Xcode Cloud, Remote-Runner.