GitHub Actions のジョブが「Waiting for a runner」のまま始まらない:原因と対処法
「Waiting for a runner to pick up this job」は、そのジョブの runs-on のラベルをすべて持つ空きランナーがない、という意味です。原因は 3つのどれかです。ラベルがどのランナーにも合っていない。セルフホストランナーがオフラインか、ほかのジョブで使用中。アカウントの同時実行数の上限に達している。まず runs-on の行を、次に Settings → Actions → Runners を見てください。
毎週のようにセルフホストのマシンが落ちて待たされているなら、直すのはランナーの持ち方です。Skipbox は、いつでもそこにいる GitHub Actions のランナーです。アカウント専用のマシンを、ヘルスチェックと復旧まで Skipbox が面倒を見ます。料金は月 6,000 円の定額で、実行時間は無制限。移行は runs-on: skipbox の 1行です。
ジョブが待たされる理由
ジョブは、runs-on のラベルをすべて持つランナーで動きます。多い順に並べると、原因はこうです。
| 原因 | 見分け方 | 対処 |
|---|---|---|
| ラベルがどのランナーにも合っていない | 打ち間違いか、ubuntu-20.04 のような廃止されたイメージ。GitHub は知らないラベルをエラーにせず、来ないランナーを待ち続けます | runs-on の行を直す |
| セルフホストランナーがオフライン | Settings → Actions → Runners で Offline と出る | マシンかサービスを起動し直す |
| セルフホストランナーが使用中 | Active と出る。ランナー 1つが動かせるのは 1ジョブ | 待つか、ランナーを増やす |
| ランナーがそのリポジトリから使えない | Organization では Idle なのに、リポジトリの一覧にない | ランナーグループにリポジトリを足す |
| アカウントの同時実行数の上限 | GitHub Free は 20、Pro は 40、Team は 60。動いているジョブが終わると、待っているジョブが始まる | 同時に動くジョブを減らすか、上限の外のランナーを使う |
セルフホストランナーを待っているジョブは、24時間でキャンセルされます。ラベルを間違えると、丸 1日、実行が開いたままになります。上限の数と増やし方は、同時実行数の上限のガイドにまとめました。
セルフホストランナーのジョブが queued のまま動かないとき
GitHub のセルフホストランナーの監視とトラブルシューティングのページ(2026年11月14日に確認)に、状態とログの見方があります。確かめる順はこうです。
- 状態を見る。 Settings → Actions → Runners に、ランナーの名前、ラベル、状態が並びます。Idle は GitHub につながって待機中、Active はジョブを実行中、Offline は GitHub につながっていません。
- Offline なら、マシンとサービス。 マシンが落ちているか、ランナーのアプリケーションが動いていないか、GitHub に届いていないかです。Linux なら
sudo journalctl -u actions.runner.<org>-<repo>.<runnerName>.service -fでサービスのログを追えます。アプリケーションのログは、インストール先の_diagにあります。 - Idle なのに取らないなら、ラベルとグループ。
runs-onに書いたラベルを、そのランナーがすべて持っているか。Organization のランナーなら、ランナーグループがそのリポジトリを許可しているか。 - ランナーのバージョン。 ランナーのアプリケーションが古くなりすぎると、ジョブを処理できなくなります。自動更新を止めているなら、ここを疑います。
待ち時間は、人の時間
待たされるのは人です。プルリクエストが 20分キューに入っていれば、レビューが 20分遅れます。夜のうちにセルフホストランナーが落ちれば、だれかが起動し直すまで、朝のマージがすべて止まります。その「だれか」は、自分の仕事を止めて CI のマシンの面倒を見るエンジニアです。
セルフホストランナーを動かし続けるのは、終わらない仕事です。マシン、OS のパッチ、ランナーのアプリケーションの更新、Docker のイメージで埋まるディスク、前のジョブが次のジョブを壊さないための後片付け。
GitHub ホストランナーに戻せば、その仕事は分課金の請求に変わります。
| 月の実行時間(4 vCPU) | GitHub | Skipbox S | 毎月の差額 |
|---|---|---|---|
| 10,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 20,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 30,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分のチームの分数で計算するなら、トップページの料金計算に入れてください。
そして、実行が増えるほどどちらも悪くなります。AI のコーディングエージェントは時間を選ばずに push するので、ジョブが重なり、だれもランナーを見ていない時間に届きます。請求を抑えるために GitHub の予算を設定すれば、月の途中でジョブが止まります。これも待ち時間です。
Skipbox が引き受けること
落ちないランナー。 プランごとに、アカウント専用のマシンが付きます。マシンの用意、イメージの更新、ジョブごとの後片付け(ランナーの認証情報、プロセス、コンテナを消します)、ヘルスチェック、通らなかったときのクリーンなイメージからの作り直しまで、Skipbox が行います。チームのだれも、何も起動し直しません。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果(target/)を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
同時に動かす数は自分で決める。 GitHub から見ると Skipbox のジョブはセルフホストランナーのジョブなので、GitHub ホストの同時実行数の上限には数えられません。Skipbox で同時に動く数は、プランの vCPU で決まります。収まらないジョブは順番を待ち、前のジョブが終わるとすぐ始まります。待っているジョブの数と時間は、アカウントのページに出ます。もっと同時に動かすなら、プランを足します。
| プラン | マシン | 月額 |
|---|---|---|
| S | 4 vCPU・メモリ 16 GB | 6,000 円 |
| M | 8 vCPU・メモリ 16 GB | 12,000 円 |
| L | 16 vCPU・メモリ 32 GB | 23,000 円 |
ジョブが短くなり、待ちも短くなる。 マシンには Docker のレイヤー、パッケージのキャッシュ、ツールがジョブのあとも残ります。準備にかかる時間が減り、ランナーが早く空きます。
予算で止まらない。 実行時間は無制限です。Skipbox のジョブは GitHub の分数を使わないので、GitHub の予算で止まることもありません。
移行は runs-on を 1行書き換えるだけ
jobs:
build:
runs-on: skipbox # ubuntu-latest や self-hosted から書き換える
steps:
- uses: actions/checkout@v4
- run: npm ci && npm test
- Skipbox に GitHub でログインする
- Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
runs-onを書き換えて push する
Skipbox のジョブが始まらないときは、アカウントのページに、待っているジョブとして出るか、動かさなかった理由が出ます。ページにないジョブは、Skipbox に届いていません。ラベルのつづりと、アプリがそのリポジトリを使えるかを確かめてください。全部の場合はジョブが待機中のままにあります。
セキュリティ
- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナを消します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果(
target/)を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。 - 書き込み権限のない人のコード(フォークからのプルリクエストなど)は、使い捨ての新しいマシンで動きます。
くわしくはジョブの分離のしくみにあります。
まず、いちばん待たされるジョブで試す
カード不要で、7日間かジョブの合計 3,000分まで無料です。いちばんよく待たされるジョブを runs-on: skipbox に替えて push してください。
よくある質問
GitHub Actions のジョブが Waiting for a runner のまま始まらない。原因と対処法は?
ジョブの runs-on のラベルをすべて持つ空きランナーがないのが原因です。ラベルがどのランナーにも合っていない(打ち間違い、ubuntu-20.04 のような廃止されたイメージ、セルフホストランナーがオフラインか、そのリポジトリから使えない)、合うランナーがすべて使用中、アカウントの同時実行数の上限に達している、のどれかです。まず runs-on の行を確かめ、次に Settings → Actions → Runners でランナーの状態を見てください。
セルフホストランナーのジョブが queued のまま動かない。何を確認すればいい?
順に 4つです。Settings → Actions → Runners でランナーが Offline になっていないか(マシンかランナーのサービスが止まっています)。Active のままではないか(ランナー 1つが動かせるのは 1ジョブです)。ランナーのラベルが runs-on とすべて一致しているか。Organization のランナーなら、ランナーグループにそのリポジトリが入っているか。ランナーのアプリケーションが古すぎても、ジョブを受け取らなくなります。
セルフホストランナーがすぐオフラインになるのはなぜ?
動かし続けるのが人の仕事だからです。マシン、サービス、ランナーのアプリケーションの更新、ディスクの空き。どれか 1つが止まると、だれかが気づくまでジョブは待ち続けます。Skipbox はマシンを代わりに動かし、ジョブが終わるたびにヘルスチェックをして、通らなければクリーンなイメージから作り直します。
セルフホストランナーの運用を任せられるサービスはある?
あります。Skipbox は、アカウント専用のマシンで GitHub Actions のジョブを動かすサービスです。マシンの用意、イメージの更新、ジョブごとの後片付け、ヘルスチェックと復旧まで Skipbox が行います。料金は月 6,000 円からの定額で、実行時間は無制限。ジョブの runs-on を skipbox に書き換えるだけで移せます。
ジョブはいつまで待機中のままでいられる?
セルフホストランナーを待っているジョブは、24時間でキャンセルされます。だからラベルを間違えたジョブは、すぐには失敗しません。丸 1日、実行を開いたままにします。
試すのにお金はかかる?
かかりません。カード不要で、7日間かジョブの合計 3,000分まで無料です。ジョブを 1つ runs-on: skipbox に書き換えて push してください。
2026年11月14日 更新