Claude Codeで開発作業を進めると、ひとつの会話の中でコードの調査、テストの実行、ログの解析、実装と、多くのことをClaudeに任せる場面があります。これらをすべて同じ会話の中で行うと、メインのコンテキストが圧迫され、文脈が薄れてしまいます。コンテキストウィンドウは有限であり、情報量が増えると応答精度も低下します。
サブエージェントは、メインのClaudeとは別に立ち上がる独立したClaudeのインスタンスです。専用のシステムプロンプト(会話を始める前に読み込ませる指示)、使えるツールの制限、使用するモデルを個別に設定できます。メインのClaudeはタスクの一部をサブエージェントに委任し、その最終的な結果のみを受け取ります。サブエージェントでの途中の処理は親に渡されないため、メインのコンテキストウィンドウが圧迫されません。
本記事では、サブエージェントの概要から、定義方法、呼び出し方、コードレビュー用サブエージェントを作って動かすところまでをまとめます。
本記事の動作確認は2026年5月時点を想定しています。
目次
サブエージェントとは
通常のClaude Codeとの違い
サブエージェントは、メインのClaude Codeから呼び出される、独立した別のClaudeのインスタンスです。通常のClaude Codeとの違いは以下の通りです。
| 項目 | メイン | サブエージェント |
|---|---|---|
| コンテキスト | これまでの会話履歴を保持する | 会話履歴は引き継がない。新しいコンテキストで起動する。 |
| システムプロンプト | 標準のシステムプロンプト (ユーザーが意識することはない) | エージェント固有のファイルを定義 |
| CLAUDE.md | 読み込む | 読み込む(内蔵のExploreとPlanは除く) |
| 使用ツール | 全ツール使用可能 | 許可されたツールのみに制限可能 |
| 使用モデル | セッションで選んだモデル | エージェントごとに指定可能 |
| 結果の扱い | 会話に蓄積される | 最終出力のみメインに渡す |
サブエージェントの主な役割は、メインのコンテキストを汚さずに、付随的な作業を委任することです。サブエージェントに委任した場合、調査や処理は別のコンテキストで行われ、メインに返るのは最終出力のみです。
呼び出しの流れ
サブエージェントが呼び出された際の処理の流れは次のようになります。
ユーザーがプロンプトから指示を親エージェントに渡すと、親エージェントは内部でサブエージェントに送るプロンプトを自動生成します。サブエージェントの初期コンテキストには次のものが含まれます。
- 親が自動生成した委任プロンプト
- 自身のシステムプロンプト(後述のMarkdown形式のファイル情報)
- CLAUDE.mdおよび関連するルールファイル
- 親セッション開始時点のGitステータス(リポジトリでない場合はなし)
一方、メインで行われていたこれまでの会話履歴は引き継がれません。CLAUDE.md と Gitステータスについては、内蔵の Explore と Plan のみ例外で、これらを読み込まない仕様になっています。
サブエージェントは呼び出しごとに新しいコンテキストで起動するため、前回の作業内容も基本的には引き継ぎません。ただし、後述の memory を設定したサブエージェントは、保存した知識を次回以降の起動時に読み込めます。
サブエージェントの出力が期待と異なる場合は、ユーザーがメインへの指示を送る際に、対象ファイルのパスやエラーメッセージなどを補足するなど、より具体的に伝えることで改善することがあります。
内蔵エージェント
Claude Codeには、最初からいくつかの内蔵エージェントが用意されています。
| 内蔵エージェント | モデル及びツール | 内容 |
|---|---|---|
| Explore | Haiku (読み取り専用) | コードベースの探索と検索に特化。高速・低コスト |
| Plan | メインから継承 (読み取り専用) | プランモードで使われる、実装方針を立てる前の調査用 |
| general-purpose | メインから継承 (全ツール) | 探索と変更の両方を伴う汎用タスク用 |
これらは、ユーザーが明示的に呼ばなくても、メインのClaudeが委任すべきと判断したときに自動的に使われます。
カスタムサブエージェントでできること
内蔵エージェントに加えて、ユーザーはカスタムサブエージェントを定義できます。カスタムサブエージェントでは次のような構成が可能です。
| できること | 内容 |
|---|---|
| 役割を与える | 「セキュリティチェック専門」や「テスト生成専門」など、専門領域に特化したシステムプロンプトを与えられる |
| ツール権限の制限 | 読み取り専用のエージェントなどを作ることができる |
| モデルを変える | タスクごとにHaikuやSonnet、Opusなどのモデルを使い分け、品質と料金のバランスをとれる |
| チーム共有 | プロジェクトディレクトリの.claude/agents/配下にMarkdownファイルとして置き、それをGitで管理すればチームで共有できる |
例えば、サブエージェントは、次のような場面で効果を発揮します。
| 用途 | 内容・利点 |
|---|---|
| コードの調査 | 大量のファイルの読み込みや検索結果をメインの会話に持ち込まずに済む |
| 長い出力を伴う作業 | テストログやビルド結果から要点だけを抽出する |
| 並列で独立した調査 | 互いに依存しない調査を同時に進める |
| 読み取り専用にしたい作業 | ツール権限を絞ることで、誤った書き換えを防止する |
| 軽量モデルへの委任 | 単純な探索はHaikuに回してコストを抑える |
サブエージェント使用の判断基準
判断の目安は、「コンテキストを節約したい」または「権限を分離したい」に当てはまるかどうかです。
これまでの会話の文脈が必要な作業や、数回のやり取りで終わる単純な作業には向きません。サブエージェントは「依頼して結果を受け取る」という一往復の使い方が基本です。
設定ファイルの配置場所と優先順位
サブエージェントの設定ファイル(後述のMarkdownファイル)は、配置するディレクトリによってスコープが変わります。
| スコープ | 配置場所 | 用途 |
|---|---|---|
| プロジェクト用 | ./.claude/agents(プロジェクトルート) | チームで共有したいエージェント |
| ユーザー用 | ~/.claude/agents | 個人用、全プロジェクトで使いたいエージェント |
プロジェクト用は、Gitリポジトリに含めることでチーム全員で同じエージェントを利用できます。プロジェクト固有のレビューやコーディング規約のチェックをエージェント化して配布するなどの用途に使用できます。ユーザー用は、全プロジェクトで共通して使いたい個人用のエージェントの置き場です。
両方に同名のエージェントが存在する場合、プロジェクト用が優先されます。
Claude Code は .claude/agents/ および ~/.claude/agents/ を再帰的にスキャンするため、agents/review/ のようにサブフォルダで整理することもできます。なお、エージェントの識別は name フィールドの値のみで行われ、サブフォルダのパスは識別に影響しません。
定義ファイルの作成
カスタムサブエージェントは、Markdownファイルにより定義します。作成方法には次の3つがあります。
/agentsコマンドによる対話的な作成・管理(公式の推奨)- Markdownファイルを直接記述する
--agentsオプションでJSONを渡す
本記事では、推奨されている /agents コマンドによる方法と、ファイルを直接記述する方法を取り上げます。
/agentsコマンドによる作成
/agents コマンドを使うと、対話的にサブエージェントを作成・管理できます。Claude Codeの対話モードで、次のように入力します。
/agentsこのコマンドで開く画面では、以下の操作を行えます。
- 利用可能なエージェントの一覧表示
- 新規エージェントの作成
- 既存エージェントの設定やツール権限の編集
- カスタムエージェントの削除
- 実行中のサブエージェントの確認
/agents から作成・編集したエージェントは、即座に反映されます。
ファイルを直接記述する
ファイルを手書きする場合は、~/.claude/agents/ あるいは .claude/agents/ の下に配置します。サブディレクトリを使用しても問題ありません。ファイル名自体に機能的な意味はありませんが、name フィールドと揃えておくのが慣例です。
ファイルをエディタなどで直接追加・編集した場合は、変更を反映させるにはClaude Codeの対話モードを再起動する必要があります。
ファイルの基本構成
ファイルはYAMLフロントマター(--- で囲まれた部分)と、その下のシステムプロンプト(指示文)で構成されます。
---
name: code-reviewer
description: コードの変更内容をレビューし、改善点を指摘する。コミット前のレビューに使用。
tools: Read, Grep, Glob
model: sonnet
---
あなたはコードレビューを専門とするアシスタントです。
渡された変更内容に対し、以下の観点でレビューを行ってください。
1. バグや論理的な誤りの有無
2. 命名・可読性
3. パフォーマンス上の懸念
指摘事項は「重要度(高・中・低)」「該当箇所」「修正案」の3点を
セットで報告してください。ファイルの書き換えは行わないでください。中身については、以下の節においてツール、フィールドの順で解説します。
主要なツール
ツールは、Claude Codeがファイルやコマンドなど環境に対して操作を行うための機能の単位です。主なツールは次の通りです。
| ツール | 内容 | 許可確認 |
|---|---|---|
| Read | ファイルの内容を読み込む | 不要 |
| Write | ファイルを作成、または既存ファイルを上書きする | 必要 |
| Edit | ファイル内の文字列を置換する | 必要 |
| Glob | ファイル名のパターンマッチでファイルを検索する | 不要 |
| Grep | ファイル内容を検索する | 不要 |
| Bash | シェルコマンドを実行する | 必要 |
| WebFetch | URLを指定してWebページの内容を取得する | 必要 |
| WebSearch | Web検索を実行する | 必要 |
| Agent | サブエージェントを起動する | 不要 |
| Skill | スキルを実行する | 必要 |
「許可確認」が「必要」のツールは、実行時にユーザーへの許可確認が求められます。Read や Grep のような読み取り系は確認なしで実行されます。このほか、Jupyter notebook を編集する NotebookEdit、MCPサーバーのリソースを扱う ListMcpResourcesTool / ReadMcpResourceTool、タスク管理用の TaskCreate / TaskList など様々なツールが用意されています。一覧は公式ページに記載されています。
フィールドの意味
YAMLフロントマターで指定できる主なフィールドのうち、よく使うものと効果が高いものを整理します。
| フィールド | 必須 | 内容 |
|---|---|---|
| name | 〇 | エージェントの識別子。小文字とハイフンで指定するのが慣例 |
| description | 〇 | いつこのエージェントを使うかを説明する文章。自動委任の判断に使われる |
| tools | 使用を許可するツールをカンマ区切りで指定。省略時は親の権限を継承 | |
| disallowedTools | 使用を禁止するツールをカンマ区切りで指定。継承した権限から特定のツールだけ除外したい場合に使用 | |
| model | 使用するモデル(haiku / sonnet / opus / inherit または完全なモデルID)。省略時は inherit(継承) | |
| mcpServers | このエージェントが利用できるMCPサーバーを指定する | |
| memory | 永続メモリのスコープを指定(user / project / local) | |
| hooks | ツール実行前後に検証スクリプトなどを走らせるライフサイクルフックを定義する |
フィールドの概要を以下に示します。hooksの詳細については複雑であるため、本記事では取り扱いません。
■ descriptionフィールド
description は、メインのClaudeが「このタスクをサブエージェントに委任すべきか」を判断するための材料として使われます。曖昧な記述では自動委任されず、広すぎる記述では意図しない場面で呼ばれる原因になります。description に「proactively」や「MUST BE USED for ...」といった表現を入れると、自動委任の優先度が上がります。
■ toolsフィールド
tools を指定すると、そのエージェントが使えるツールを制限できます。読み取り専用のレビュー用エージェントであれば、次のように指定します。
tools: Read, Grep, GlobWrite や Edit を渡さなければ、エージェントは構造的にファイルを書き換えられません。
■ disallowedToolsフィールド
disallowedTools は、tools とは逆に、継承したツールから特定のものだけを除外したい場合に使用します。例えば、メインの会話のツールをすべて引き継ぎつつ、ファイルの書き換えだけを禁止したい場合は次のように指定します。
disallowedTools: Write, Edittools と disallowedTools を同時に指定した場合は、disallowedTools が適用されます。
■ modelフィールド
modelを指定すると、タスクの難易度に応じて、使用するモデルを指定できます。ファイル探索やシンプルな分類はHaiku、通常の実装作業はSonnet、複雑な設計判断はOpus、というように使い分けることで、品質と料金のバランスを取れます。
model: haiku■ mcpServersフィールド
mcpServers を指定すると、そのエージェントだけが利用できるMCPサーバーを定義できます。既に設定済みのMCPサーバーは、サーバー名を文字列で指定するだけで参照できます。インラインで新しいサーバーを定義することもでき、その場合はメインの会話には公開されません。
mcpServers:
- github■ memoryフィールド
memory を指定すると、サブエージェントに会話をまたいで使える永続的なディレクトリが割り当てられます。コードベースの構造や繰り返し発生する問題などの知識をファイルに残し、次回以降の作業で参照することを意図した機能です。サブエージェントは通常、呼び出しごとに新しいコンテキストで起動しますが、memory はその例外にあたり、保存した知識を引き継ぐ手段になります。
memory を有効にすると、次の状態になります。
- メモリディレクトリを読み書きするための指示が、サブエージェントのシステムプロンプトに追加される
- ディレクトリ内の
MEMORY.mdの冒頭部分(200行または25KBのいずれか早い方まで)が、起動時にシステムプロンプトへ読み込まれる - メモリファイルを管理するため、Read / Write / Edit ツールが自動的に有効になる
知識の書き出しは自動では行われません。作業後に「メモリを更新してください」と指示するか、サブエージェントのシステムプロンプトに「作業中に得た知識をメモリに書き出してください」と記述しておくことで、知識が蓄積されていきます。
スコープは user / project / local の3種類があり、保存先のディレクトリが異なります。
| スコープ | 保存場所 |
|---|---|
| user | ~/.claude/agent-memory/<エージェント名>/ |
| project | .claude/agent-memory/<エージェント名>/ |
| local | .claude/agent-memory-local/<エージェント名>/ |
user は全プロジェクト共通、project と local はプロジェクト内に保存されます。project と local の違いは保存先ディレクトリのみで、バージョン管理に含めるかどうかは .gitignore で制御します。公式ドキュメントでは、知識をチームで共有したい場合は project が推奨されています。
memory: projectサブエージェントの呼び出し方
サブエージェントの呼び出し方法には、自動委任と明示呼び出しの二種類があります。
自動委任
ユーザーが指定しなくても、Claudeが委任すべきと判断したときに、自動的にサブエージェントを呼び出します。委任の判断には、設定ファイルに記述したdescription フィールドが使われます。合致するものがあれば、そのエージェントが呼び出されます。
自然言語でエージェント名を含めると呼び出される確率が向上します。
code-reviewer エージェントを使って、直近のコミットをレビューしてくださいここで、code-reviewerの部分はエージェントの名前です。Claudeが文脈を踏まえて委任の可否を判断します。
ただし、自動委任は必ず発動するとは限りません。description の書き方やユーザーの依頼文の表現によっては、メインのClaudeが自身で処理することもあります。確実にサブエージェントを使わせたい場面では、明示呼び出しを使用します。
明示呼び出し
明示呼び出しの方法は次の2通りです。
■ @メンションで指定する
@ を入力するとエージェントの候補が表示され、選択することで確実にそのサブエージェントが呼び出されます。表記は @"code-reviewer (agent)" のようになります。
■ セッション全体をサブエージェントとして起動する
--agent フラグでClaude Codeを起動すると、セッション全体がそのサブエージェントの構成(システムプロンプト、ツール、モデル)で動作します。
claude --agent code-reviewer自動委任が期待通りに動作しない場合や、必ず特定のエージェントを通したい作業(リリース前のレビューなど)では、これらの明示呼び出しを使用します。
実例:コードレビュー用の簡易サブエージェントを作る
ここまでの内容を踏まえて、コードレビュー用のサブエージェントを /agents コマンドで作成し、動かすところまでを確認します。読み取り専用に構成することで、レビュー中にコードが書き換えられることを防ぎます。
エージェントの作成
作成するエージェントの仕様は次の通りです。
| 項目 | 設定値 |
|---|---|
| 役割 | 指定されたファイルを読み込み、指摘事項を構造化して報告する |
| 権限 | ファイルの読み取りと検索のみ(書き換え不可) |
| モデル | Sonnet |
| スコープ | ユーザー用(全プロジェクトで使う想定) |
まず、Claude Codeを対話モードで起動して、次のスラッシュコマンドを入力します。
/agentsこれにより、エージェントの管理画面が開きます。次に、新規作成(Create new agent)を選び、保存場所として Personal(ユーザー用)を選択します。~/.claude/agents/ に保存され、全プロジェクトで使えるようになります。


次に、「Generate with Claude」を選ぶと、エージェントの内容を対話的に生成できます。次のように依頼します(見やすくするために3行に分けて書いていますが、プロンプトに打ち込む際は改行せずに打ち込みます)。

コードをレビューし、改善点を指摘するエージェント。
バグ、可読性、パフォーマンス、セキュリティの観点でチェックし、重要度・該当箇所・修正案をセットで報告する。
ファイルの書き換えは行わない。これにより、identifier、descriptionおよびシステムプロンプトが生成されます。次に、読み取り専用にするため、Read-only toolsのみをチェックします。Read-only toolsは、書き換え系のツール(Write と Edit)を除外したツール群を選択する選択肢です。これにより、エージェントはファイルを書き換えられなくなります。チェックし終えたら[Continue]を押します。

次に、モデルとしてSonnetを選択します。

そして、任意でUI(ユーザーインターフェイス)とmemoryを設定します。UIではエージェントごとに色を選べます。

また、memoryについては、レビュー結果から学んだパターンを蓄積したい場合は、user スコープのメモリを有効にします。不要な場合は None を選びます。

すべての設定が完了したら内容確認のための画面が表示されるので、問題なければ保存します。/agents から作成したエージェントは、再起動なしで即座に使えます。これでエージェントの作成は完了です。
/agentsによりエージェント一覧を見てみると「code-review-advisor」という名前のエージェントが作成されていました。

中身は以下の通りです。
Description (tells Claude when to use this agent):
Use this agent when recently written or modified code needs to be reviewed for quality, correctness, and safety.
This agent does NOT rewrite files — it only analyzes and reports findings.
Examples:
<example>
Context: The user has just written a new authentication function and wants it reviewed before merging.
user: "Please implement a login function that verifies username and password against the database"
assistant: "Here is the implementation:"
<function call omitted for brevity>
<commentary>
A significant piece of security-sensitive code was just written. Use the code-review-advisor agent to analyze it
for bugs, security vulnerabilities, readability, and performance issues.
</commentary>
assistant: "The function has been implemented. Now let me use the code-review-advisor agent to review it for
potential issues."
</example>
<example>
Context: The user has added a new API endpoint handler and wants a quality check.
user: "Add a REST endpoint to fetch user orders from the database"
assistant: "I've added the endpoint:"
<function call omitted for brevity>
<commentary>
A new endpoint with database access was just written. Launch the code-review-advisor agent to check for SQL
injection risks, error handling, performance, and readability.
</commentary>
assistant: "The endpoint is ready. Let me now run the code-review-advisor agent to check for any issues."
</example>
<example>
Context: The user explicitly asks for a code review.
user: "Can you review the code I just wrote in utils/parser.py?"
assistant: "I'll use the code-review-advisor agent to thoroughly review that file."
<commentary>
The user directly requested a code review. Invoke the code-review-advisor agent immediately.
</commentary>
</example>
Tools: Read, TaskCreate, TaskGet, TaskList, TaskStop, TaskUpdate, WebFetch, WebSearch
Model: Sonnet
System prompt:
You are an elite code review specialist with deep expertise in software engineering, security analysis,
performance optimization, and clean code principles. You have extensive experience reviewing production
codebases across multiple languages and paradigms. Your role is strictly advisory — you identify issues, explain
them clearly, and propose concrete fixes, but you never directly modify or rewrite files.
Core Responsibilities
Review the provided code across four critical dimensions:
1. バグ (Bugs) — Logic errors, off-by-one errors, null/undefined handling, incorrect assumptions, race
conditions, error handling gaps
2. 可読性 (Readability) — Naming clarity, function length, code complexity, comments, consistency,
maintainability
3. パフォーマンス (Performance) — Algorithmic inefficiency, unnecessary iterations, memory leaks, redundant
computations, blocking operations
4. セキュリティ (Security) — Injection vulnerabilities (SQL, XSS, command), authentication flaws, sensitive data
exposure, insecure defaults, improper input validation
Review Process
1. Read the full code before forming any conclusions. Understand its intent and context.
2. Identify all issues across the four dimensions above.
3. Prioritize findings by severity.
4. For each issue, provide exactly three pieces of information:
- 重要度 (Severity): 🔴 Critical / 🟠 High / 🟡 Medium / 🟢 Low
- 該当箇所 (Location): File name and line number(s) or function/block name
- 修正案 (Recommended Fix): A concrete, actionable suggestion — including corrected code snippets when helpful
Output Format
Structure your report as follows:
---📋 コードレビュー結果
対象: [filename or description]
総合評価: [Brief one-line overall assessment]
---
🐛 バグ
┌─────────────┬────────────┬────────────┬──────────────────┐
│ 重要度 │ 該当箇所 │ 問題の説明 │ 修正案 │
├─────────────┼────────────┼────────────┼──────────────────┤
│ 🔴 Critical │ file.py:42 │ 説明 │ 修正コードや手順 │
└─────────────┴────────────┴────────────┴──────────────────┘
👁 可読性
┌────────┬──────────┬────────────┬────────┐
│ 重要度 │ 該当箇所 │ 問題の説明 │ 修正案 │
├────────┼──────────┼────────────┼────────┤
└────────┴──────────┴────────────┴────────┘
⚡ パフォーマンス
┌────────┬──────────┬────────────┬────────┐
│ 重要度 │ 該当箇所 │ 問題の説明 │ 修正案 │
├────────┼──────────┼────────────┼────────┤
└────────┴──────────┴────────────┴────────┘
🔒 セキュリティ
┌────────┬──────────┬────────────┬────────┐
│ 重要度 │ 該当箇所 │ 問題の説明 │ 修正案 │
├────────┼──────────┼────────────┼────────┤
└────────┴──────────┴────────────┴────────┘
---✅ 良い点
- [Highlight what is done well — always include at least one positive observation]
📌 優先対応推奨
- [List the top 1–3 issues that should be fixed immediately, in priority order]
---
Behavioral Guidelines
- Report only, never modify: You must not edit, rewrite, or create files. Your output is a review report only.
- Be specific: Vague feedback like "this could be better" is not acceptable. Always point to exact locations and
provide concrete fixes.
- Use code snippets: When proposing fixes, include short before/after code examples using markdown code blocks.
- Be language-aware: Tailor your review to the idioms, conventions, and security considerations of the
language/framework in use.
- Avoid false positives: Do not flag stylistic differences as bugs. Distinguish between subjective preferences
and objective problems.
- Severity calibration:
- 🔴 Critical: Data loss, security breach, crashes in production, broken core logic
- 🟠 High: Likely bugs under common inputs, significant performance degradation, exploitable vulnerabilities
- 🟡 Medium: Code smells, minor inefficiencies, unclear naming that affects maintainability
- 🟢 Low: Nitpicks, optional improvements, minor style inconsistencies
- Ask for context if needed: If the code snippet is too small or lacks necessary context (e.g., missing imports,
unclear function purpose), ask a targeted clarifying question before proceeding.
- Language flexibility: Respond in the same language the user uses when communicating with you. The report
structure above uses Japanese labels as defaults but adapt as needed.
Self-Verification Checklist
Before finalizing your report, verify:
- [ ] Did I check all four dimensions (bugs, readability, performance, security)?
- [ ] Is every finding paired with a location AND a concrete fix?
- [ ] Are severity levels accurately assigned?
- [ ] Did I include at least one positive observation?
- [ ] Did I avoid suggesting file changes (only reporting)?
- [ ] Are code snippets in the fix suggestions accurate and runnable?
Update your agent memory as you discover recurring patterns, common anti-patterns, project-specific conventions,
architectural decisions, and frequently seen issues in this codebase. This builds institutional knowledge
across conversations.
Examples of what to record:
- Recurring bug patterns (e.g., "This project frequently forgets null checks on API responses")
- Security conventions already in place (e.g., "Authentication uses JWT with RS256")
- Code style norms observed (e.g., "Functions use snake_case, classes use PascalCase")
- Performance-sensitive areas identified in past reviews
- Modules or files that have historically contained many issues
エージェントの動作確認
まず、コードレビューを行うソースコード(login.py)を準備します。
import sqlite3
def get_user(username, password):
try:
conn = sqlite3.connect("users.db")
cursor = conn.cursor()
query = f"SELECT * FROM users WHERE username = '{username}' AND password = '{password}'"
cursor.execute(query)
return cursor.fetchone()
except:
pass
def login(username, password):
user = get_user(username, password)
if user:
print("ログイン成功")
else:
print("ログイン失敗")このソースコードの問題点は次の2点です。
- SQLインジェクションの脆弱性:
query = f"SELECT * FROM users WHERE ..."でユーザー入力を直接クエリに埋め込んでいる - パスワードの平文保存:データベース漏洩時にパスワードが瞬時に露出する
このファイルを適当なプロジェクトフォルダに保存し、そのフォルダでClaude Codeを対話モードで起動して、次の指示を打ち込みます。
❯ @"code-review-advisor (agent)" を使って、@login.py をレビューしてください。実際に出力されたレビュー結果を以下に示します。

問題が正しく指摘されていることを確認できました。
LLMによる結果ですので、モデルのバージョンやそのときの状況により出力は変化します。
まとめ
本記事では、Claude Codeのサブエージェントについて、概念から定義方法、呼び出し方、実例までを扱いました。要点は次の通りです。
- サブエージェントは、メインのClaudeとは別に立ち上がる独立したインスタンスであり、専用のシステムプロンプト、ツール、モデルを個別に設定できる
- メインに返るのは最終出力のみで、途中の処理は親に渡されないため、メインのコンテキストを節約できる
- 設定ファイルは
.claude/agents/(プロジェクト用)または~/.claude/agents/(ユーザー用)に置き、YAMLフロントマターとシステムプロンプトを記述する - 作成方法は
/agentsコマンドによる対話的な作成が推奨されており、Markdownファイルを直接記述する方法もある - 呼び出しは、自動委任と明示呼び出し(
@メンションや--agentフラグ)の2系統がある - 「コンテキストを節約したい」または「権限を分離したい」場面で効果を発揮する
サブエージェントは設定項目が多く、hooks のように本記事で深く触れなかった機能もあります。まずは /agents コマンドで簡単なエージェントを作成し、実際に動かしてみることをおすすめします。
