Skipbox

AI コーディングエージェントの CI:ループのたびに GitHub Actions を 20 分待つとき

AI コーディングエージェントのループは、push、CI 待ち、失敗を読む、直す、また push です。20 分の CI は、5 回の修正で 100 分の待ちになります。しかもエージェントは人より多く push します。Anthropic の CI のジョブ数は、6 か月で 25 倍になりました。待ちはこの順に縮めます。lint、型チェック、影響するユニットテストを、push の前にエージェントに走らせる。新しい push が来たら、同じプルリクエストの古い実行を取り消す。速いチェックを別のジョブにして、失敗が 1〜2 分で返るようにする。変更が影響するテストだけを動かす。そして、新しい VM でジョブのたびに繰り返すセットアップをなくします。Docker のレイヤー、パッケージのキャッシュ、ビルドの成果物をジョブのあとも残すマシンでは、astro の CI のジョブが GitHub の 528 秒から Skipbox の 30 秒になりました。

Skipbox は、アカウント専用のマシンでジョブを動かし、その状態がジョブのあとも残ります。runs-on: skipbox の 1行を書き換えるだけで、月 6,000 円の定額、実行時間は無制限です。エージェントが午後に 20 回 push しても請求は増えず、GitHub の予算でジョブが止まることもありません。

エージェントのループで CI がボトルネックになる理由

Anthropic のテスト影響分析の拡張についての記事によれば、「CI のジョブ数は 6 か月で 25 倍になった」。理由として挙げているのは 2 つで、Claude が「小さく細かいプルリクエストを好む」こと、そしてエージェントが「夜も週末も push する」ことです。人は修正をまとめますが、エージェントは修正ごとに push して待ちます。CI の 1分は、ループのたびに払うことになります。

1. push の前に捕まえられるものは捕まえる

いちばん速い CI の実行は、落ちない実行です。CI と同じ lint、型チェック、ユニットテストのコマンドをエージェントに渡し、変えたファイルについて push の前に毎回走らせます。タイプミスは手元の数秒で済み、20 分の往復になりません。

2. 新しい push で置き換わる実行を取り消す

前の実行がまだ動いているうちにエージェントが修正を push すると、同じプルリクエストに実行が 2 つ残ります。古いほうを取り消します(同時実行の制御)。

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

github.head_ref はプルリクエストにしかないので、main への push はそれぞれ別のグループになり、取り消されません。

3. 速いチェックを先に返す

lint と型チェックは、前に needs: を置かない別のジョブにし、遅いテストは別のジョブにします。エージェントは E2E のジョブを待たずに、最初の失敗をすぐに読めます。

4. 変更が影響するものだけを動かす

25 倍への Anthropic の答えは、「変更ごとにどのテストを動かすかを決める」テスト影響分析のサービスでした。たいていのリポジトリは、もっと小さく始められます。Turborepo なら turbo run test --affected(Turborepo の CI のガイド)、1 つのディレクトリにしか関係しないワークフローにはパスのフィルター、そして選び漏れを捕まえるために、マージ後の main ではすべて動かします。

5. ループのたびに同じ状態を作り直さない

GitHub ホストランナーでは、ジョブは毎回新しい VM で始まります。ツールを入れ直し、依存パッケージのキャッシュをダウンロードして展開し、Docker のレイヤーを pull するか作り直し、ビルドはゼロからです。エージェントのループが 1 日に 100 回あれば、待ちのほとんどはこのセットアップです。ディスクをジョブのあとも残すランナーなら、それは最初からそこにあります。

実際のプロジェクトを動かした結果から。ワークフローは変えていません。

6. 実行時間だけでなく、同時に動くジョブの数も見る

何体かのエージェントがそれぞれマトリックス付きのプルリクエストを push すると、GitHub の標準ランナーの同時実行の上限に届きます。GitHub Free で 20、Pro で 40、Team で 60、Enterprise で 500 です(上限)。超えたジョブは待ちます。分課金なら、そのジョブも 1 つずつ課金されます。上限に達した予算は、「The job was not started because recent account payments have failed or your spending limit needs to be increased」でジョブを止めます(対処)。

Skipbox がエージェントの CI にすること

プランごとに、アカウント専用のマシンが付き、ジョブのあとも残ります。

  • 状態が残ります。 Docker のイメージ、レイヤー、ビルドキャッシュ。~/.npm、pnpm のストア、~/.cache、Go・Gradle・Maven・Cargo のキャッシュ。setup-* で入れたツール。ビルドを残す設定なら、チェックアウトと Cargo の target/、turbo 2 のプロジェクトならいちばん上の .turbo も。
  • 実行時間は無制限です。 GitHub の予算や支出の上限で、Skipbox のジョブが止まることはありません。
  • 同時に動くジョブは、プランの vCPU の分です。 アカウントが持つプランの vCPU に収まるあいだはジョブが同時に動き、残りは順番を待ちます。待っている数と時間はアカウントのページに出ます。S 1 つなら、4 vCPU のジョブが 1 つずつ動きます。プランはどんな組み合わせでも足せます。
  • エージェント自身のジョブもそこで動きます。 runs-on を skipbox にするだけです。

4 vCPU で月 20,000分なら、GitHub の請求は 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。、Skipbox の S は 6,000 円です。月 30,000分なら 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。です。

移行は runs-on を 1行書き換えるだけ

jobs:
  checks:
    runs-on: skipbox # ubuntu-latest から書き換える
  1. Skipbox に GitHub でログインする
  2. Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
  3. runs-on を書き換えて push する

セキュリティ

  • マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
  • ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナを消し、残したチェックアウトからも git の認証情報と追跡していないファイルを消します。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
  • 書き込み権限のない人のコード(フォークからのプルリクエストなど)は、使い捨ての VM で動きます。キャッシュは読めますが、書き換えられません。

くわしくはジョブの分離のしくみにあります。

エージェントが待っているジョブで試す

カード不要で、7日間かジョブの合計 3,000分まで無料です。エージェントが待っているジョブを runs-on: skipbox にし、エージェントに 2 回 push させて、2 回目の実行を GitHub と比べてください。

よくある質問

AI エージェントに PR を書かせると CI 待ちがボトルネックになる。CI を速くする方法は?

エージェントが待つものを、この順に縮めます。lint、型チェック、影響するユニットテストを push の前にエージェント自身に走らせ、ただのタイプミスを CI で初めて見つける形をやめます。新しい push が来たら、同じプルリクエストの古い実行を取り消します(concurrency の cancel-in-progress)。速いチェックを別のジョブにして、失敗が 1〜2 分で返るようにします。変更が影響するテストだけを動かします。そして毎回のジョブが繰り返すセットアップをなくします。Docker のレイヤー、パッケージのキャッシュ、ビルドの成果物をジョブのあとも残すマシンでは、astro の CI が GitHub の 528 秒から Skipbox の 30 秒になりました。

AI エージェントで、CI はどのくらい増える?

Anthropic は、CI のジョブ数が 6 か月で 25 倍になったと書いています。Claude は小さく細かいプルリクエストを好み、エージェントは夜も週末も push するからです。どの push も、ワークフローが取り消すか、飛ばすか、絞り込まないかぎり、ワークフロー全体をもう一度動かします。

PR のほとんどを AI エージェントが書くチームに、いちばん合う CI は?

エージェントにすぐ答えを返し、push ごとに課金されない CI です。lint と型チェックの速いジョブが先に結果を返し、遅いテストはそのあと、同じプルリクエストの古い実行は取り消し、影響するテストだけを動かし、ランナーはキャッシュをジョブのあとも残す。Skipbox はアカウントごとに専用のマシンを定額で用意し、実行時間は無制限です。同時に動かせるジョブの数は、アカウントが持つプランの vCPU で決まります。

エージェントで GitHub の同時実行の上限にかかる?

かかることがあります。GitHub ホストの標準ランナーで同時に動くジョブは、GitHub Free で 20、Pro で 40、Team で 60、Enterprise で 500 までで、残りは待ちます。何体かのエージェントがそれぞれマトリックス付きのプルリクエストを push すると、すぐに届きます。Skipbox では、アカウントのプランの vCPU に収まるあいだジョブは同時に動き、残りは順番を待ちます。エージェントを何体も同時に動かすチームは、プランを複数持つか、大きいプランにします。

エージェント自身のジョブも Skipbox で動かせる?

動かせます。Linux のジョブはどれも runs-on でマシンを選ぶので、Claude Code のアクションを動かすジョブも同じです。skipbox にすれば、CI と同じマシンで動きます。

試すのにお金はかかる?

かかりません。カード不要で、7日間かジョブの合計 3,000分まで無料です。4 vCPU で、ジョブは 1 つずつ動きます。エージェントが待っているジョブを runs-on: skipbox にして、2 回目の実行の時間を測ってください。

2026年11月13日 更新

常に warm なキャッシュで CI/CD を高速化するなら

専用ランナーを定額で。実行時間は無制限

フル稼働なら GitHub の 1/12 の費用。定額だから一日中動かせる。GitHub の 7倍のキャッシュ容量。

  • カード不要
  • GitHub でログイン
  • いつでも解約