GitHub 上で iOS/macOS ビルドを回し、同時に Cursor、Claude Code、Devin、Copilot Cloud Agent などの AI コーディングエージェントに自動でコード修正と CI 起動を任せている開発チームにとって、2026 年に最初に体感するのは AI の生産性向上ではなく、GitHub Actions のキューが深夜や朝のピークに分単位まで伸び、ホスト型 macOS Runner がコールドスタートで詰まり、さらに 5 月には CI/CD を直接狙う 2 件のサプライチェーン攻撃(Mini Shai-Hulud と Megalodon)が連続発生するという現実です。本記事では、公開情報の 4 組の数値で「GitHub CI/CD が限界に達した」事実を整理し、ホスト型 macOS Runner が最初に詰まる理由を分解し、AI エージェント時代の CI/CD セキュリティ面の新軸と、ホスト型からの移行判定木、KVMNODE 専用クラウド Mac 上で「人/AI エージェントの二重キュー+資格情報サンドボックス+deny-by-default なワークフロー」を実装し、調達文書にそのまま転記できる方針を提示します。GitHub Actions セルフホスト RunneriOS CI と OpenClaw 同居複数席 SSH ガバナンスXcode Cloud ハイブリッド日次 spike と六地域 と併読してください。
01

「GitHub CI/CD が壊れている」と言える 4 組の事実(2026 年)

不安を数値化することから始めます。コミット量については、GitHub の COO Kyle Daigle と CTO Vlad Fedorov が 4 月に「AI エージェントが毎週 GitHub へ約 2.75 億コミットを投入し、年間で約 140 億コミットに到達する見込み」と公表しました。これは 2025 年全体の 10 億コミットの 14 倍に相当します。リクエスト量では、AI エージェントが起こす PR が 2025 年 9 月の月間 400 万件から、2026 年 3 月には月間 1700 万件まで急増しています。計算リソースでは、GitHub Actions の週次使用分が 2023 年の 5 億分から、2026 年 4 月には単週 21 億分に達しました。安定性では、2 月だけで 37 件の障害が発生し、4 月 9–13 日にはエージェントセッションの待ち時間が通常の 15–40 秒から 54 分まで伸び、失敗率は最大 97.5% に達しました。5 月 6 日の Copilot Cloud Agents 障害時には、Actions Runner 全体の失敗率が約 17.1% を記録しています。

GitHub 側もこれを認めており、Fedorov は容量計画を 10x から 30x へ書き換え、パフォーマンスクリティカルな Ruby 経路を Go に移植し、Git と Actions のサービスを分離し、Stacked PRs を導入し、メンテナが PR 受付自体を停止できるオプションを検討しています。ただし供給側の拡張は中長期の話であり、2026 年下半期は「キューの裾延と散発的な失敗が初期値である」状態が iOS パイプライン全体の前提になります。「もう少し待てば収まる」期待は捨ててください。

01

週 275M コミット:AI エージェントの書き込み圧は 2025 年全体の 14 倍。1 PR が Actions、マージ可否、Webhook、キャッシュに同時に波及するため雪だるま式に増幅します。

02

月 17M エージェント PR:4 月 23 日のマージキュー障害では 658 リポジトリと 2,092 PR が同時に影響を受けました。

03

週 21 億 Actions 分:計算と Runner プールが AI 自動化で幾何級数的に消費され、macOS プールの圧迫は Linux よりはるかに強くなります。

04

17.1% の失敗率:5 月 6 日の事例は Runner 割当サブシステムが burst に追いつかない、まさに中央集中型 CI の臨界点の典型例です。

05

30x の容量目標:10x の計画がわずか 4 カ月で不足に陥った事実から、混雑は 2027 年の新データセンター稼働まで続くと見るのが妥当です。

06

2 月だけで 37 件の障害:SLA は「滅多に起きない」前提から「2 日に 1 度は何かある」前提へ書き換えてください。

これら 4 組の数値が示すことはひとつです。パイプラインの安定性を単一の中央 Runner プールに縛り付けるコストが、AI エージェント時代に入って再評価されているのです。次節では macOS Runner と「人 vs エージェント」という 2 つの軸でさらに掘り下げます。

02

なぜホスト型 macOS Runner が最初に詰まるのか:プール規模、単価、retry 嵐の連鎖

GitHub ホスト型 Linux Runner は大規模で汎用的な x86_64 プール上で動作し、容量基盤が広く、スケジューリングの自由度も高い構成です。macOS Runner は Apple Silicon の物理機供給とソフトウェアライセンスの制約により、プール規模が Linux に比べて大幅に小さく、分単位の課金は約 10 倍になります。AI エージェントが大量参加していない 2024–2025 年であれば、キュー長と retry でこの差を吸収できました。AI エージェント時代に入ると、1 リポジトリの夜間リファクタが数時間で数十件の PR を生成し、各 PR が lint・unit・integration・archive・notary の各ワークフローを順次起動するようになるため、macOS Runner の利用率 ρ は容易に 1 に接近します。待ち行列理論上、平均待ち時間は ρ が 1 に達する遥か手前から急増し、P50 は秒単位から分単位、P95 は十数分まで伸びます。

さらに厳しいのは retry 嵐とコールドスタートの重畳です。flaky test が 1 回失敗すると、エージェントが自動 retry で即座に再申請を行い、複数のエージェントが同時に「申請→失敗→再申請」のループに入ることで、Runner 割当サービスに対する thundering herd を形成します。ホスト型 macOS Runner のコールドスタートは 60–120 秒であり、lint や PR 検証のような短時間ジョブには非常に高いオーバーヘッドとなる一方、archive や TestFlight アップロード、notary などの長時間ジョブでは「キュー段階で十数分待たされた後にようやく実行が始まる」状態になり、タイムアウトを連発します。下表は AI エージェント負荷下での Linux、ホスト型 macOS、KVMNODE 専用セルフホスト macOS の差分を整理した比較表で、そのまま RFC や調達文書に貼り付けて利用できます。

項目GitHub ホスト型 LinuxGitHub ホスト型 macOS専用セルフホスト macOS(KVMNODE)
プール規模大規模・複数リージョン小規模・Apple 供給に依存注文単位で専有可能
分単価低(約 $0.008/min)Linux の約 10 倍日/週/月固定。高負荷ほど割安
エージェント負荷時のキュー裾分単位の変動5–10 分以上の揺らぎが常態自前 Runner、業務都合で計画可能
コールドスタート10–30 秒60–120 秒常駐 Runner で秒未満
資格情報の隔離単位ワークフロー単位ワークフロー単位アカウント/キーチェーン/プロファイル
アーカイブ/notary への影響大(長尾ジョブが増幅)専有ノードで時間枠を固定

2026 年の macOS Runner の問題は「遅い」ではなく「いつ遅くなるか読めない」ことです。

既に GitHub Actions セルフホスト Runner ガイドに沿って組織レベルの Runner と並行制限グループの分離まで進めている場合、次に行うべきは「AI エージェント PR と人手 PR の Runner をラベルで分割すること」です。まだ完全ホスト型のチームは、§4 の移行しきい値と判定木を確認してください。

03

AI 時代の CI/CD セキュリティ新軸:Mini Shai-Hulud、Megalodon、そして「PR レビュー」だけでは守れない

2026 年 5 月、CI/CD と AI ツールチェーンを狙った 2 件のサプライチェーン攻撃が、「自動化されたコミットは監査対象外」という暗黙の前提を完全に破壊しました。Mini Shai-Hulud は npm ワームで、GitHub Actions の OIDC トークンを盗み取って正規の SLSA/Sigstore provenance を偽造し、被害者の開発環境で長期的に存続するために ~/.claude/settings.json.vscode/tasks.json といった AI エディタ/エージェントが信頼する設定ファイルに悪意あるフックを書き込みました。Linux 環境では gh-token-monitor.service も併設され、開発者が GitHub トークンを更新した瞬間にホームディレクトリを破壊するトリップワイヤを仕掛けています。Megalodon はもっと直接的で、5 月 18 日 11:36–17:48 UTC のわずか 6 時間で、攻撃者が build-botauto-cici-botpipeline-bot 等の偽造 ID を用いて 5,561 のリポジトリへ 5,718 件の悪意あるコミットを投入し、GitHub Actions ワークフローを差し替えて OIDC トークン、SSH 鍵、Docker 認証情報、各種クラウドキーを 216.126.225.129:8443 へ流出させました。両攻撃の共通点は、コミットメッセージや author フィールドが通常の CI 自動メンテと見分けがつかないこと、そして低シグナルの時間帯を意図的に選んでいることです。

iOS/macOS チームにとっての意味は明確です。Match keychain、App Store Connect API Key、notary 認証、profile、provisioning がすべて macOS Runner と keychain に集約されており、これらこそが OIDC トークンとワークフロー注入の標的そのものです。「PR をレビュアーに見てもらう」という防衛線は、AI エージェント流量下ではほぼ機能しません。レビュアーは週に数百件のエージェント PR を相手にして注意力が薄れ、しかも正規のエージェントもワークフローファイル(actions のバージョン更新、cache key の調整)を頻繁に書き換えるため、悪意ある変更との視覚的区別が成立しなくなります。以下の 6 つの方針は、防衛線をパイプラインそのものに下ろすための最小集合です。プラットフォームエンジニアリングの四半期ロードマップに組み込んでください。

01

deny-by-default なワークフロー:リポジトリ既定を permissions: {} とし、ジョブ単位で必要な OIDC スコープを最小宣言します。pull_request_target は停止または必須レビュー化します。

02

AI エージェント author の検証:すべてのエージェント commit は GPG/SSH 署名と SSO ドメイン内の author email を必須化し、匿名 author によるアーカイブと notary の発火を CI 側で拒否します。

03

資格情報サンドボックス:macOS Runner の keychain、App Store Connect Key、Match 秘密鍵をエージェント Runner と完全に分離します。fork 由来 PR からの署名トリガを禁止します。

04

OIDC スコープと PAT 期限:PAT は fine-grained と短 TTL に統一します。OIDC subject を repo:org/repo:environment:prod へ絞り、広範な workflow_dispatch は撤回します。

05

ワークフロー監査基線:.github/workflows/*.yml を保護ファイルとして扱い、エージェント変更は保護ブランチと二人レビュー必須に。開発者端末の ~/.claude/settings.json.vscode/tasks.json も EDR の監視対象に含めます。

06

外向き通信の最小化:セルフホスト macOS Runner の outbound は GitHub、Apple、モデル API のみ許可します。未知 IP への TCP 8443/443 を遮断し、Megalodon 系の C2 経路を遮ります。

これらの対策は単体ではいずれも目新しくありません。新しいのは、AI エージェント時代において「実施しなければインシデントを引き受けることになる」必須項目に格上げされた点です。100% ホスト型 Runner ではプラットフォーム既定により対応の深度が制限されますが、専用セルフホストノードであれば上記 6 項目すべてを macOS keychain、launchd、pf ファイアウォール、Actions Runner ラベルの層で具体的に実装できます。

04

ホスト型から離脱する判定木と KVMNODE 六地域 × M4/M4 Pro の選定

すべてのプロジェクトが直ちに GitHub ホスト型 macOS Runner を離れる必要はありません。以下 4 つの定量しきい値で評価してください。① 月間 macOS Runner 請求額が同等の専有 Mac Mini 月額を超えているか、② P95 キュー待ちが平日朝晩で 10 分を超えてマージを阻害しているか、③ 資格情報の集中度として複数 workflow が同一 keychain と広い OIDC スコープを共有していないか、④ AI エージェント PR の比率がリポジトリ全体の 30% を超えていないか。2 つ以上に該当する場合、専用セルフホスト macOS Runner を次四半期の技術ロードマップへ載せてください。下記の判定木はそのまま計画書に貼って利用できます。

01

しきい値判定:請求額、P95 待ち、資格情報集中度、エージェント PR 比率を採点し、2 項目以上の該当で移行フローへ進みます。

02

リージョン選定:Git リポジトリと成果物ストアの主要リージョンに合わせ、シンガポール/日本/韓国/香港/米東/米西のいずれかを選択し、clone と cache の裾延を抑えます。

03

1 週間のパイロット:M4 16GB·256 または 24GB·512 を夜間 spike Runner と日中 PR Runner として併用し、ホスト型と同 PR セットの P50/P95 を比較します。

04

二重 Runner キュー:同一専用ノード上に actions-runner を 2 インスタンス登録し、self-hosted, macos, humanself-hosted, macos, agent のラベルで PR author 種別ごとに振り分けます。

05

資格情報サンドボックス:エージェント Runner は専用 macOS ユーザと専用 keychain で運用し、署名/notary/TestFlight アップロードは human ラベル Runner と environment の手動承認のみで実行します。

06

スケールアップ閾値:夜間に 3 以上の xcodebuild 並列、シミュレータマトリクス、エージェント回帰テストが同時間帯に重なった時点で M4 Pro 64GB·2TB へ昇格、または第二ノードを並列追加します。

yaml
name: ios-ci
on: [pull_request]
permissions: {}
jobs:
  lint-and-unit:
    runs-on: [self-hosted, macos, agent]
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v4
      - run: ./scripts/lint.sh
      - run: ./scripts/test-unit.sh
  archive-and-notary:
    if: github.event.pull_request.user.type != 'Bot'
    runs-on: [self-hosted, macos, human]
    permissions:
      id-token: write
      contents: read
    environment: prod-signing
    steps:
      - uses: actions/checkout@v4
      - run: ./scripts/archive.sh
      - run: ./scripts/notarize.sh

上記の最小骨格には 3 つの方針が組み込まれています。トップレベルの permissions: {} による deny-by-defaultラベルによる lint/unit と archive/notary の分離、そして if: github.event.pull_request.user.type != 'Bot' によりエージェント PR からの本番署名を拒否です。これらはホスト型 Runner でも表面的には記述できますが、専用ノードでなければ macOS keychain、launchd、pf 出口許可リストと連動して実効化することはできません。複数席 SSH ガバナンス 文書の席数とキューの命名規約と組み合わせれば、「人+AI エージェント+複数開発者」が同一専用ノードを共用する完全な Runbook が完成します。

サイジングについて。PR 検証中心で人手開発者が少数、AI エージェント PR が中程度の中規模 iOS リポジトリであれば、M4 16GB·256 か 24GB·512、月次ベースラインに高ピーク日のスポット課金で十分です。シミュレータマトリクス、エージェント回帰、同居 OpenClaw Gateway が並走する混合負荷では、最初から M4 Pro 64GB·2TB を選択してください。多地域展開やグローバル展開のチームは、六地域選定と賃料 文書の RTT と同地域原則に従って Git 主要リージョンに合わせ、予算が許せば別リージョンに第二ノードをフェイルオーバとして配備し、単一リージョン障害による停止を避けてください。

05

調達文書に転記すべき 3 つの方針と代替案の比較

前 4 節を、調達文書とプラットフォームエンジニアリング四半期計画にそのまま転記できる3 つの硬い方針に集約します。① AI エージェント Runner は専用ラベル+専用 keychain/専用アカウントとし、人手開発者 Runner と隔離します。② OIDC スコープと PAT は短 TTL、最小権限、自動ローテーションを必須とし、本番署名ジョブは environment 保護で開発ジョブと物理的に切り離します。③ AI エージェント commit は verified author を必須とし、すべての .github/workflows/*.yml 改変は保護ブランチ+二人レビュー+必須 lint を経由させます。1 つでも欠ければ次の Mini Shai-Hulud/Megalodon 級攻撃を被弾する確率が幾何級数的に上昇します。

A

4 月 9–13 日のエージェントセッション:待ち 54 分、失敗率最大 97.5%。リリース窓を平日固定にしているチームには冗長経路が必須です。

B

5 月 18 日 Megalodon:6 時間で 5,561 リポジトリに workflow が注入されました。資格情報サンドボックスと deny-by-default が唯一のスケール可能な遮断面です。

C

macOS Runner コールドスタート 60–120 秒:archive/notary の長尾ジョブと重なると体感は「PR が 30 分動かない」になります。常駐専用 Runner が直接の解です。

注意:ホスト型から離脱すると、macOS のアップデートペース、Xcode のバージョン、コマンドラインツール、署名プロファイルの維持を自前で担う必要があります。週次の更新窓を固定し、Xcode ベータのリリースノートを基線として追跡し、OpenClaw 診断ラダー のスクリプト骨格を Runner ヘルスチェックに転用してください。

代替案を比較しておきます。100% GitHub ホスト型を継続すれば、課金とキュー裾延がエージェント流量に応じて線形あるいは指数的に増加し、資格情報サンドボックスは workflow 粒度が上限となり、Megalodon 級攻撃時には公式アナウンスを待つしかありません。蓋を閉じた Mac mini や私物改造で Runner を動かすと、物理安定性が低く、launchd と遠隔管理の整備が薄いため、休日のネットワーク断で出荷が止まります。汎用クラウド VM(Apple ハードウェア以外)で macOS を実行するのは Apple ライセンス違反であり、性能劣化も顕著です。iOS/macOS CI/CD と AI エージェント自動化が共存する本番環境において、KVMNODE Mac Mini クラウドレンタルがより良い解になります。専用 Apple Silicon、7×24 稼働、六地域選択、日/週/月の弾力的契約に加え、二重キュー・資格情報サンドボックス・OIDC 締め付けを 1 枚の変更チケットに収められるからです。プランは 料金ページ、運用は ヘルプセンター、ノートの発注は 注文ページ をご覧ください。