🚧 GitHub 8月17日障害を読み解く: 出荷を止めたのは認証ゲートだった
目次

⚠️ 非公開(zenn 未公開)

🚧 GitHub 8月17日障害を読み解く: 出荷を止めたのは認証ゲートだった

2026年8月17日、GitHub.com が7時間47分にわたって広範囲に劣化しました。GitHub CTO の Vladimir Fedorov 氏による The August 17 outage, and the work ahead と、GitHub Status の RCA が公開されています。

この記事では、公開された一次情報から次を整理します。

  • 何が起点で、どこまで連鎖したのか
  • 「GitHub が8時間止まった」という読み方はどこまで正しいのか
  • 開発チームが今日から用意できる、障害時の作業分類とクライアント設計

結論を先に書くと、これはストレージやリポジトリの障害ではなく、出荷に必要な制御面(認証・PR・CI・一部の Copilot クライアント)が同じ認証ゲートを共有していたことによる障害です。したがって対策も「GitHub から離れる」ではなく「制御面が落ちても止まらない作業の切り分け」になります。

記事の全体像
この記事の全体像。以下、順に解説します。

何が起きたのか

起点は Central US リージョンの容量です。

  1. 新規のピークトラフィックが Central US に到達する
  2. Istio の sidecar プロキシが concurrency 上限に達する
  3. Horizontal Pod Autoscaler は host 側のサービスしか見ておらず、sidecar の飽和を検知できない
  4. スケールしないままロードバランサのネットワークが飽和する
  5. HAProxy 4ノードが flow limit を使い切る
  6. その先にある gateway の認証経路が遅延・失敗する
  7. 認証ゲートを共有していた製品が一斉に劣化する

ピーク時のエラー率は、web / API がおよそ20%、archive / raw がおよそ50%。影響を受けたコンポーネントは Git Operations、Webhooks、API Requests、Issues、Pull Requests、Actions、Pages、Copilot です。Packages と Codespaces は Status の影響リストに含まれていません。

つまり Git オブジェクト層が全滅したのではなく、認証ゲートというひとつの隘路が製品横断で詰まったという形です。

Central US新規ピーク流入 Istio sidecar がconcurrency 上限 HPA は host のみ監視sidecar を見ない LB ネットワーク飽和 HAProxy 4ノードがflow limit 枯渇 gateway 認証経路の遅延と失敗 Web / API約20% エラー archive / raw約50% エラー SAML / OIDCSCIM / Team Sync Issues / Pull RequestsWebhooks Actions / Pages Git Operations後から劣化 Copilot Token Service VS Code の潜在 retry 7-9K RPS が70-100K RPS へ

注目すべきは最下段です。認証が遅くなったことで VS Code の Copilot クライアントが潜在的な再試行を一斉に発火し、Copilot Token Service へのリクエストが通常の7〜9K RPS からおよそ10倍の70〜100K RPS まで跳ね上がりました。障害が自分自身を増幅する経路が、クライアント側に埋め込まれていたわけです。

「7時間47分」の中身

公開窓は 13:28–21:15 UTC です。ただしこの窓は端から端までであり、全機能がゼロだった時間ではありません。

時刻 (UTC) 事実
13:28 RCA 上の影響開始
13:40 最初の公開投稿「Investigating」
13:40–13:44 API、Actions、Webhooks が degraded
13:45 Pull Requests / Issues 等でおよそ20%エラー
14:04 web / API 約20%、archive / raw 約50%
14:24 SAML/OIDC、SCIM、Team Sync を影響範囲に追加
14:31 Copilot が degraded
15:10 / 15:21 Pages、続いて Git Operations が degraded
16:36 問題コンポーネントを特定し是正。回復の兆候
16:59 API / Actions / Git Operations / Issues / Pages / PR / Webhooks を mitigate
17:30 / 17:36 / 18:48 Git Operations、Issues、API が再劣化
19:13 authentication token retries を部分的に無効化
20:08 / 20:45 一部アプリで Copilot 認証の問題が残存
21:02 / 21:15 Copilot Token Service 復旧、インシデント Resolved

読み取れる点は3つあります。

  • 公開より検知が12分早い。 RCA の影響開始 13:28 に対し、最初の公開投稿は 13:40。ステータスページだけを監視していると、体感より遅れて事実を知ることになります。
  • コアの制御面が重かったのは、窓全体ではなく前半の3〜5時間程度。 16:36 に多くが回復兆候を見せ、17:30 以降は再劣化と Copilot 残存が中心です。
  • 復旧は一様ではない。 16:59 の mitigate 宣言に Copilot は含まれておらず、Actions はおよそ 18:03、Copilot Token Service は 21:02 まで戻っていません。

なお、二次報道で見かける「Git は終始通常だった」という記述は、15:21 と 17:30 の Git Operations degraded と整合しません。

なぜ自動フェイルオーバーで閉じなかったのか

一部のトラフィックは Northern Virginia へ退避し、実際に成功処理されています。それでもインシデントが閉じなかったのは、次の3つが重なったためです。

条件 内容
起源が観測外 HPA が sidecar の concurrency を見ていないため、スケールで自然解消しない
クライアントが楽観的 遅延に対して無制限に再試行し、内部 LB とトークン発行を増幅する
退避先でも増幅する 退避したトラフィックも同じ token 経路を10倍で叩く

結果として、閉じるための最後のひと押しは自動化ではなく人の操作でした。そしてその操作はすべて GitHub 社側の管理面に属します。

検知13:40 UTC 公開 一部を NorthernVirginia へ退避 HAProxy 4ノードを同時 pause 16:36大半が回復兆候 gateway retry を減らす一時 PR Copilot token をLB で 403 サイト単位で段階的に復帰 21:02 Token Service21:15 Resolved
操作 依存する管理面 効果
トラフィック再ルーティング リージョン LB / トラフィック制御 一部を Northern Virginia で成功処理
影響インフラの隔離 データセンター / サービス単位の切り離し 段階復旧の前提づくり
HAProxy の同時 pause ロードバランサ制御 広範囲の即時回復
gateway retry を減らす PR 内部変更の出荷経路 退避先での retry storm を止める
Copilot token を 403 で遮断 LB の ACL 失敗応答が再試行を誘発しないようにする
サイト単位の段階復帰 流量制御 Token Service を 21:02 に復旧

ここが実務上いちばん重要な示唆です。顧客側に同等のレバーは存在しません。 手元で操作できるのは、クライアントの再試行上限、SSO を跨がないローカル作業、Actions の手動 re-run、そして github.com 上の定義への依存を減らすこと、この4つに限られます。

隔離環境なら安全か

GitHub Enterprise Cloud with data residency はテナントを分離しますが、今回は github.com 上の public workflow step definitions を参照する Actions が巻き込まれています

GHEC data residency の機能一覧GitHub Connect のドキュメント にも、GHE.com から github.com 上の action を呼ぶ際に api.github.com 固定やトークン境界の結合が残る旨が記載されています。

隔離されたテナントや自社ホストのランナーを使っていても、実行時に github.com の定義を取りに行く限り、今回型の制御面障害は輸入されます

同じことが self-hosted runner にも言えます。8月6日の Actions 障害(15:05 UTC–8月7日 00:14 UTC)では hosted / self-hosted の両方が影響を受け、ピーク時には workflow の71%がインフラ起因で失敗し、残りの75%が5分超の遅延となりました。ランナーを自前で持っていても、github.com 側のジョブ割り当てが落ちれば動きません。

3月の約束と8月の結果

GitHub は2026年3月と4月にも可用性についてのブログを公開しています。その内容と8月時点の結果を並べると、進捗と未達がはっきり分かれます。

3月・4月の方針 8月時点の結果 評価
Git と Actions を共有インフラから隔離 認証経路で両方が劣化 隔離は未完。Git Operations は遅れて巻き込まれた
Azure へ7月までに50%移行 プラットフォーム負荷のおよそ58% 比率目標は達成しても今回の障害は防げていない
availability first 8月に重大インシデント2件 宣言と結果が一致していない
クライアント負荷の shed VS Code の10倍 retry が発生 3月に挙げた課題が再発
フェイルオーバーの dry-run 退避は動いたが、閉じる操作は手動 自動フェイルオーバー単体では不足

負荷の伸びは背景として無視できません。4月時点で月間の merged PR ピークが90M、commit ピークが1.4B、新規リポジトリが20M。8月には commit が2.9Bへ、merged PR がおよそ130M、新規リポジトリがおよそ24Mまで伸びています。追加投入された容量も CPU 300万超、高速ストレージ 120PB と大きい。

ただし、HPA が sidecar を見ていないことと、クライアントの再試行に上限がないことは、成長とは独立した設計上の欠陥です。ここは容量を積んでも解消しません。

なお CTO ブログは両障害について「code/configuration change が原因ではない」と述べていますが、RCA 側は misconfigured policy を、8月6日は routine deployment を trigger として記録しています。本質が容量であっても、起動条件は設定とデプロイであった、と読むのが妥当です。

現場のランブック: 作業を5つに分類する

ここからが実務です。GitHub を「動く / 動かない」の1ブロックとして扱うと、対応は「全部止める」しかなくなります。実際にはローカルで完結する作業、制御面に依存する作業、復旧後に人手で再実行する作業の3面に分かれます。

開発作業 ローカル完結継続する github.com 制御面止めるか劣化前提 復旧後人手で再実行 clone 上の編集単体テスト / 設計 SSO ログイン / PR マージActions / Webhook workflow 手動 re-run再 push / SCIM 差分

より細かくは、次の5区分で足ります。

区分 具体例 根拠 事前準備
障害中も続ける 既存 clone の編集、ローカルテスト、設計、差分整理 Git オブジェクト層は全滅していない。ただし archive / raw は約50%失敗するため新規取得は当てにしない 作業リポを事前に clone。依存 tarball をローカルまたは別キャッシュへ
劣化前提で止める SSO ログイン、PR マージ、レビュー承認、Actions、Webhook 連携、VS Code の Copilot gateway 認証と Token Service を共有している ステータスで API / Auth / Actions / Copilot を確認。マージ凍結の判断基準を決めておく
クライアントを切り替える Copilot を CLI または GitHub App 経由へ 残存フェーズでは CLI と GitHub App は影響なしと Status に記載 同じタスクを CLI でも回せる手順を用意
復旧後に人手で replay workflow の手動 re-run、再 push、PR 再同期、失敗ジョブの cancel/retry、SCIM / Team Sync の差分点検 8月6日は復旧後もイベントが自動 replay されなかった replay 対象ジョブの一覧を runbook 化。IdP 側の未反映も点検対象に
隔離環境でも切る依存 GHEC data residency / GHES から github.com の public action や reusable workflow をその場取得 今回 Actions が巻き込まれた経路そのもの action を内部ミラー化、または commit SHA で pin する

3つ目の「クライアント切り替え」には注意が必要です。CLI と GitHub App が無事だったのは 20:08 以降の残存フェーズの事実であり、14:31–16:59 のピーク時に使えたかどうかは公開情報からは確認できません。フォールバック先として過信せず、あくまで残存フェーズ向けの逃げ道として扱ってください。

AI 開発基盤への読み替え

コーディングエージェントや AI 開発基盤を運用しているなら、今回の事象は次のように翻訳できます。

  • モデル API の障害と、SCM / CI / 認証の障害は別の失敗域である。 今回エージェントを止めたのは後者です。モデル側の冗長化だけでは埋まりません。
  • エージェントの楽観的な再試行は、VS Code の10倍 retry とまったく同じ型です。 失敗応答を増幅しない retry budget と、403 / 5xx を受けたときの停止条件を先に入れておく必要があります。
  • トークン発行が律速になる。 エージェントはモデルを呼ぶ前に認証で止まります。今回 Copilot Token Service が最後まで復旧しなかったのは象徴的です。

再試行設計の勘所は「失敗を検知したらまず自分の流量を下げる」ことです。GitHub 自身が最終的に取った手段が、gateway の retry を減らす PR と、token リクエストの403遮断だったことを思い出してください。復旧を早めたのは、再試行を増やす側ではなく減らす側の操作でした。

契約面: SLA が守る範囲

障害対応の計画を立てるうえで、契約上どこまで保証されているかも確認しておく価値があります。

GitHub Online Services SLA(Version: June 2026)は四半期ごとに99.9%を定めています。対象は Actions、GitHub Enterprise Cloud の git / Issues / Pages / Pull Requests / Webhooks とそれらの API、および Packages です。

Copilot はこの列挙に含まれていません。 つまり、Copilot が使えることを99.9%の前提に置いた業務設計は、契約上の裏付けを持ちません。エージェント前提の開発フローを組むなら、この点は明示的にリスクとして扱うべきです。

なお GHEC 顧客は四半期終了後に SLA クレジットを Support へ請求できます。ただし分単位の downtime 公開値がないため、この記事では金額の試算はしません。

今日から準備できること

優先度順に7つ挙げます。

  1. チームの作業を前掲の5区分にラベルする。 週次の「今日必ずやること」を、github.com 制御面が必須のものとローカルで完結するものに分ける。
  2. CI のルールを決める。 「障害中は新規 trigger しない」「復旧後に手動 re-run するジョブ一覧」をリポジトリごとに持つ。8月6日型(自動 replay なし)を既定の想定にする。
  3. Actions の public workflow / marketplace action を実行時に取得しない。 内部ミラーか SHA pin へ移す。
  4. エージェントと IDE に retry budget と backoff を入れる。 同一トークンでの連続失敗時に停止する条件を定義し、無限再試行を禁止する。
  5. 観測はコンポーネント単位で行う。 Git Operations が緑でも、PR / Actions / Auth が赤なら出荷は止める。総合ステータスのランプ1個で判断しない。
  6. Copilot を99.9%の前提に置かない。 現行契約の対象列挙に含まれていない。
  7. 依存の棚卸しをする。 隔離環境を使っていても、実行時に github.com を見に行く箇所が残っていないか確認する。

一方で、GitHub からの主系統離脱を支持する一次根拠はありません。 ピーク時でも web / API のエラー率は約20%であり、100%ではありませんでした。ローカル clone 上の作業は継続できています。GHEC data residency への移行も、github.com 定義の参照が残る限り今回型の障害は閉じません。

判断を変える条件を先に決めておくなら、こうなります。

  • GitHub が gateway 認証を製品単位に隔離し、Actions と Pull Requests が認証劣化と独立に動くことを示す RCA が出た場合 → 「止める」区分を縮小する
  • Copilot が SLA の対象に加わった場合 → 契約上の扱いだけ更新する(retry 増幅の問題は別途残る)

わかっていないこと

公開情報からは次が読み取れません。断定を避けるべき領域として明示しておきます。

  • ピーク時に Git Operations が何パーセント失敗したか
  • Copilot CLI / GitHub App が 14:31–16:59 のピーク帯に使えたか
  • SLA 上の「5%超の失敗」が何分間だったか
  • 「public workflow step definitions」の具体(reusable workflow なのか action の YAML なのか)
  • codeload への scraping がどの程度の規模だったか(定性的な言及のみ)
  • 3月に示された移行比率と5月の数値が同一指標かどうか

これらは SLA クレジットの算定とフォールバック先の信頼度に影響しますが、作業の5区分を採用する判断自体は妨げません。

まとめ

  • 2026年8月17日の GitHub 障害は、Istio sidecar の concurrency 上限を HPA が観測できず、HAProxy の flow limit 枯渇を経て gateway の認証経路が詰まった容量障害である。
  • 影響は「GitHub 全停止」ではなく、出荷に必要な制御面(SSO・PR・Actions・一部 Copilot クライアント)の共有障害。ローカルで完結する作業は継続できた。
  • 自動フェイルオーバーは一部成功したが閉じきれず、決め手は HAProxy の同時 pause と、再試行を減らす側の人手操作だった。
  • クライアントの楽観的な再試行が障害を10倍に増幅した。これはエージェント/IDE を運用する側の設計課題でもある。
  • 隔離環境でも、実行時に github.com の定義を取得していれば制御面障害を輸入する。
  • 実務の一手は移行ではなく、作業の5区分と retry budget。Copilot は SLA の対象外である点も併せて設計に織り込む。

この記事が少しでも参考になった、あるいは改善点などがあれば、ぜひリアクションやコメント、SNSでのシェアをいただけると励みになります!

参考リンク

  1. Vladimir Fedorov, The August 17 outage, and the work ahead, GitHub Blog, 2026-08-20
  2. GitHub Status, Incident with GitHub.com, 2026-08-17(incident zkxwbgr0cnmx
  3. GitHub Status, Incident with Actions, 2026-08-06(incident qcvjkzcs7j74
  4. Addressing GitHub's recent availability issues, GitHub Blog, 2026-03-11
  5. An update on GitHub availability, GitHub Blog, 2026-04-28
  6. GitHub Online Services SLA, Version: June 2026
  7. Feature overview for GitHub Enterprise Cloud with data residency
  8. About GitHub Connect(GHES 3.17)