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

> AI コーディングエージェントは push、CI 待ち、失敗を読む、直す、また push を繰り返すので、20 分の CI は 5 回の修正で 100 分の待ちになります。待ちは効く順に縮めます。push の前にエージェントが走らせるチェック、置き換わった実行の取り消し、速いチェックを先に、影響するテストだけ、そしてキャッシュがジョブのあとも残るマシン。Skipbox ならそのジョブを専用のマシンで月 6,000 円から、実行時間は無制限です。

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 の予算でジョブが止まることもありません。

- astro の CI は GitHub で 528 秒、Skipbox で 30 秒。前のジョブのビルドの成果物が残っているから
- 実行時間は無制限。エージェントの push も、レビュー対応の修正も、再実行も定額のうち
- Docker のレイヤー、パッケージのキャッシュ、ツールが専用のマシンに残り、ループのたびの入れ直しがない

**GitHub Actions を月額固定・使い放題に** Skipbox は、アカウント専用のマシンで GitHub Actions のジョブを動かします。何分動かしても月 6,000 円。ジョブが終わっても Docker のレイヤーと依存パッケージのキャッシュが残るので、次のジョブはすぐ始まります。

4 vCPU のランナーを月 20,000分 使うと、GitHub 約 35,120 円 → Skipbox 6,000 円。毎月 約 29,120 円お得。

移行は `runs-on: skipbox` に 1行書き換えるだけです。

[7日間無料で試す](https://app.skipbox.dev/sign-in?ref=g-ci-for-ai-coding-agents-ja)

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

Anthropic の[テスト影響分析の拡張についての記事](https://claude.com/resources/articles/agentic-coding-is-straining-ci-heres-how-we-scaled-test-impact-analysis-at-anthropic)によれば、「CI のジョブ数は 6 か月で 25 倍になった」。理由として挙げているのは 2 つで、Claude が「小さく細かいプルリクエストを好む」こと、そしてエージェントが「夜も週末も push する」ことです。人は修正をまとめますが、エージェントは修正ごとに push して待ちます。CI の 1分は、ループのたびに払うことになります。

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

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

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

前の実行がまだ動いているうちにエージェントが修正を push すると、同じプルリクエストに実行が 2 つ残ります。古いほうを取り消します（[同時実行の制御](https://docs.github.com/ja/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency)）。

```yaml
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 のガイド](https://turborepo.dev/docs/crafting-your-repository/constructing-ci)）、1 つのディレクトリにしか関係しないワークフローにはパスのフィルター、そして選び漏れを捕まえるために、マージ後の `main` ではすべて動かします。

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

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

[実際のプロジェクトを動かした結果](https://skipbox.dev/ja/guides/rust-cache-slow-rust-ci)から。ワークフローは変えていません。

| プロジェクト | GitHub（公開リポジトリ、4 vCPU・16 GB） | Skipbox の専用のマシン（4 vCPU） |
|---|---|---|
| astro（pnpm、Turborepo） | 528 秒 | **30 秒** |
| tauri（Rust） | 246 秒 | **53 秒** |
| ripgrep（Rust） | 200 秒 | **40 秒** |

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

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

## 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` にするだけです。

| ラベル | マシン | プラン |
|---|---|---|
| `skipbox` | 4 vCPU・メモリ 16 GB | S、月 6,000 円 |
| `skipbox-8x16` | 8 vCPU・メモリ 16 GB | M、月 12,000 円 |
| `skipbox-16x32` | 16 vCPU・メモリ 32 GB | L、月 23,000 円 |

4 vCPU で月 20,000分なら、GitHub の請求は 約 35,120 円、Skipbox の S は 6,000 円です。月 30,000分なら 約 54,110 円です。

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

```yaml
jobs:
  checks:
    runs-on: skipbox # ubuntu-latest から書き換える
```

1. Skipbox に GitHub でログインする
2. Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
3. `runs-on` を書き換えて push する

## セキュリティ

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

くわしくは[ジョブの分離のしくみ](https://docs.skipbox.dev/ja/isolation)にあります。

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

カード不要で、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 更新 · https://skipbox.dev/ja/guides/ci-for-ai-coding-agents
