Claude Code エージェントループとは?仕組みから活用法まで徹底解説
「Claude Code を使っているけど、なぜ一度の指示でここまで自律的に動けるのか?」——その答えが エージェントループ(Agent Loop) です。
Claude Code はターミナル上で動作するAIコーディングアシスタントです。単純なバグ修正から複数ファイルにまたがる大規模リファクタリングまで、あらゆるタスクをこの「エージェントループ」というコアアーキテクチャが支えています。本記事では、エージェントループの仕組み、ループを構成するコンポーネント、そして実務での活用ポイントを網羅的に解説します。
テックジム東京本校では、情報科目の受験対策指導やAI駆動開発コースもご用意しております。
目次
エージェントループとは何か
エージェントループとは、Claude Code があるタスクを完了するまで自律的に思考・行動を繰り返す処理の仕組みです。
ユーザーが「このバグを直して」とひとつプロンプトを入力すると、Claude Code は一度だけ回答するのではなく、ファイルを読み込み、コードを編集し、テストを実行し、結果を検証するという一連のアクションを自動的に連鎖させます。この繰り返しがエージェントループです。
┌───────────────────────────────────────────
│ Agent Loop
│
│ ┌──────────┐
│ │ プロンプト│◄──── ユーザーメッセージ
│ └────┬─────┘
│ ▼
│ ┌──────────┐
│ │ Claude │◄──── システムプロンプト + メッセージ履歴
│ │ API │
│ └────┬─────┘
│ ▼
│ ┌──────────────┐
│ │ stop_reason? │
│ └──────┬───────┘
│ │
│ tool_use ──► ツール実行 ──► 結果をメッセージ履歴へ ──► ループ
│ end_turn ──► 処理完了
└───────────────────────────────────────────
チャットボットとの根本的な違い
| 比較項目 | 通常のチャットボット | Claude Code エージェントループ |
|---|---|---|
| 処理単位 | 1メッセージ → 1回答 | 1タスク → 複数アクションの連鎖 |
| 状態管理 | 会話履歴のみ | ツール実行結果を蓄積しながら推論 |
| 自律性 | なし(人が次の入力を行う) | あり(やることがなくなるまで継続) |
| ツール使用 | 原則なし | ファイル読み書き・コマンド実行・Web検索など |
エージェントループはチャットボットではありません。Node.js のイベントループに近い概念で、やることがなくなるまで処理を続けるという設計思想に基づいています。
エージェントループの処理フロー
Claude Code のエージェントループは大きく 3つのフェーズ を繰り返します。
フェーズ1:コンテキスト収集
タスクを理解するために必要な情報を集めます。
- ファイル構造のスキャン
- 関連ファイルの読み込み
- エラーログや既存テストの確認
フェーズ2:実行と編集
収集した情報をもとに実際のアクションを行います。
- コードの編集・生成
- コマンドの実行(ビルド、テスト)
- 依存関係のインストール
フェーズ3:検証とフィードバック
実行結果を確認し、必要であれば次のアクションを決定します。
- テスト実行による動作確認
- エラー内容の解析
- 修正が必要な場合はフェーズ1へ戻る
各ツールの使用結果が Claude に新しい情報を与え、次のステップに情報が引き継がれます。これがエージェントループの実際の動作です。タスクの複雑さによっては、数十のアクションが連鎖することもあります。
ループを支える2つのコンポーネント
エージェントループは以下の2つのコンポーネントによって駆動されます。
1. 推論モデル(Claude)
Claude はループの各ターンで「次に何をすべきか」を判断します。前のステップで得た情報をもとに戦略を立て直し、最適なアクションを選択します。
2. ツール群(Tools)
Claude の判断を実際のアクションに変換する実行エンジンです。主なツールは以下の通りです。
| ツール | 用途 |
|---|---|
| Read | ファイルの読み込み |
| Edit / Write | コードの編集・生成 |
| Bash | コマンド実行(テスト・ビルドなど) |
| Glob / Grep | ファイル検索・コード検索 |
| WebSearch | 最新情報の検索 |
Claude Code はこれらのツールを組み合わせることで、ターミナルでできることほぼすべてに対応します。コーディングだけでなく、ドキュメント作成・ビルド実行・トピック調査なども可能です。
ループの終了条件
エージェントループがいつ止まるかを理解しておくことは、Claude Code を効果的に使う上で重要です。
Claude API からは各ターンでメッセージが返ってきます。そのメッセージの stop_reason によってループの継続・終了が決まります。
stop_reason: "tool_use" → ツールを実行してループを継続
stop_reason: "end_turn" → タスク完了。ループを終了
stop_reason: "max_tokens" → トークン上限。強制終了
なお、ユーザーはループの 任意の時点で割り込んで中断・方向修正 が可能です。間違った方向に進んでいる場合は、修正を入力するだけで Claude はアプローチを調整します。
サブエージェントによるループの拡張
Claude Code のエージェントループは、さらに サブエージェント(Subagent) を組み合わせることで強力な自動化ワークフローを構築できます。
サブエージェントとは
サブエージェントは、特定のタスクに特化した独立したAIアシスタントです。メインの会話セッションとは別のコンテキストウィンドウで動作し、それぞれが固有のシステムプロンプトとツール権限を持ちます。
メインの会話コンテキストを汚染せずに特定のタスクを実行でき、複数のサブエージェントを並列起動することも可能です。
サブエージェントの作成方法
# Claude Code 内でコマンドを実行
/agents
/agents コマンドを実行し、対話形式で設定します。作成されたサブエージェントの定義は Markdown ファイルとして保存されます。
- プロジェクト単位:
.claude/agents/{NAME}.md - 個人単位:
~/.claude/agents/{NAME}.md
活用例:コードレビューワークフロー
メインエージェント(タスク調整)
├── Subagent: code-reviewer(コードレビュー専門)
├── Subagent: test-writer(テスト自動生成専門)
└── Subagent: security-checker(セキュリティチェック専門)
「すべてのサブエージェントでレビューし、指摘を修正してください」のように指示するだけで、複数のエージェントが並列動作し、高レベルなフィードバックループが実現します。
エージェントループの注意点と対策
リトライループ問題
エージェントループにおける代表的なリスクが リトライループ です。Claude がエラーを誤読して、同じツールを同じ引数で延々と繰り返してしまう現象です。これによりトークンが急速に消費される事例も報告されています。
対策1:PreToolUse フック(Hook)を設定する
Claude Code の Hooks 機能を使い、ツール呼び出し前にバリデーションロジックを差し込むことができます。
対策2:MCP サーバーでループを検知する
コミュニティでは、同一ツールを同一引数で閾値回数以上呼び出した場合にアラートを出す MCP サーバーも登場しています。ループ検知のロジックをエージェントループの外側に置くことで、安全性を高められます。
対策3:ユーザーが積極的に介入する
Claude Code はループ中でも随時割り込みが可能です。意図しない繰り返しを感じたら、すぐに修正メッセージを送って方向修正しましょう。
Claude Agent SDK でエージェントループを実装する
自社アプリケーションに Claude のエージェントループを組み込む場合は、Claude Agent SDK(Python / TypeScript)を利用します。
Python での実装例
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
async def main():
# エージェントループ:Claude が作業する間、メッセージをストリーミング
async for message in query(
prompt="utils.py のクラッシュを引き起こすバグをレビューして修正してください",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"],
permission_mode="acceptEdits", # ファイル変更を自動承認
),
):
if isinstance(message, AssistantMessage):
print(f"Claude: {message.content}")
elif isinstance(message, ResultMessage):
print(f"完了: {message.result}")
asyncio.run(main())
query() 関数がエージェントループのメインエントリポイントです。非同期イテレータを返すため、async for でメッセージをリアルタイムにストリーミングできます。
主な設定オプション
| オプション | 説明 |
|---|---|
allowed_tools |
使用を許可するツールのリスト |
permission_mode |
ファイル変更の承認モード |
system_prompt |
カスタムシステムプロンプト |
mcp_servers |
外部MCPサーバーの設定 |
よくある質問
Q. エージェントループはどれくらい長く動き続けますか?
タスクの複雑さに依存します。シンプルな質問であればコンテキスト収集のみで完了しますが、大規模なリファクタリングでは数十〜数百のツール呼び出しが発生することもあります。
Q. ループ中にユーザーは何もできないのですか?
いいえ。任意のタイミングで割り込み・中断・方向転換が可能です。完了を待つ必要も、最初からやり直す必要もありません。
Q. サブエージェントとAgent Teamsの違いは何ですか?
サブエージェントは「実行特化型」で、親エージェントを経由してのみ情報をやり取りします。Agent Teamsは複数のClaudeインスタンスがチームとして協調動作し、メンバー同士が直接通信できる「合意形成型」の仕組みです。用途に合わせて使い分けることが重要です。
まとめ
Claude Code のエージェントループは、AI を「一問一答のチャットボット」から「自律的に動くコーディングエージェント」へと進化させるコアアーキテクチャです。
- エージェントループはコンテキスト収集・実行・検証の3フェーズを繰り返す
- 推論モデルとツール群の組み合わせが自律的なアクションを実現する
- サブエージェントを活用することで並列・専門化されたワークフローが構築できる
- リトライループのリスクを理解し、Hooks や MCP で対策を講じる
- Claude Agent SDK を使えば自社アプリへの組み込みも容易
エージェントループの仕組みを理解することで、Claude Code をより効果的に活用できるようになります。まずは小さなタスクでループの動きを観察し、徐々に複雑な自動化へと展開してみてください。
参考リンク
■ゼロから始めるClaudeCode講座のご案内
テックジム東京本校では「ClaudeCode」の体験講座を開催。
「その日のうちに動かす」 をゴールに、環境構築から実践まで。
毎週土曜日15時。参加は無料です。対面・ハンズオンだから初心者でも安心。
■らくらくPython塾 – 読むだけでマスター
共通テスト「情報I」対策解説講座
実践で学ぶPython速習講座
■テックジム東京本校
格安のプログラミングスクールといえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
対面型でより早くスキル獲得、月額2万円のプログラミングスクールです。
情報科目の受験対策指導やAI駆動開発コースもご用意しております。




