はじめに
GitHub Copilot Chatには、Ask、Edit、Agentといった組み込みのエージェントモードが用意されています。しかし、プロジェクト固有の要件や開発ワークフローに合わせて、より専門的なAIアシスタントが欲しいと感じることはないでしょうか。
GitHub Copilot Custom Agent(カスタムエージェント)は、開発タスクに特化した独自のAIペルソナを作成できる機能です。セキュリティレビュー担当、設計ドキュメント作成、コードリファクタリングなど、特定の役割に最適化されたエージェントを定義し、必要なときにすぐ切り替えられます。
本記事では、GitHub Copilot Custom Agentの概要から作成方法、実践的な活用例まで詳しく解説します。この記事を読むことで、以下のことができるようになります:
- Custom Agentの仕組みと用途を理解する
.agent.mdファイルを作成して独自のエージェントを定義する- ツールやMCPサーバーと連携した高機能エージェントを構築する
- Handoff機能を使ったワークフロー自動化を実現する
前提条件
GitHub Copilot Custom Agentを使用するには、以下の環境が必要です。
| 項目 | 要件 |
|---|---|
| VS Code | バージョン1.106以降(Custom Agent機能は1.106でGA) |
| GitHub Copilot拡張機能 | 最新版をインストール |
| GitHub Copilotサブスクリプション | Copilot Individual、Business、Enterprise、または無料プラン |
Custom Agent機能は、以前は「Custom Chat Modes(カスタムチャットモード)」と呼ばれていました。既存の.chatmode.mdファイルは引き続き認識されますが、新規作成時は.agent.md拡張子を使用してください。
Custom Agentとは
GitHub Copilot Custom Agentは、特定の開発タスクや役割に最適化されたAI設定をファイルとして定義する機能です。エージェントごとに使用するツール、指示内容、AIモデルを指定でき、チャットのドロップダウンから簡単に切り替えられます。
Custom Agentが解決する課題
通常のCopilot Chat利用では、以下のような課題が発生しがちです:
- 計画フェーズでは読み取り専用ツールだけを使いたいのに、編集ツールも有効になっている
- セキュリティレビュー時に毎回同じ観点(SQLインジェクション、XSSなど)を指示する必要がある
- チームメンバー間でエージェントの使い方にばらつきが生じる
- 複数のタスクを順番に実行する際、手動でコンテキストを引き継ぐ必要がある
Custom Agentを導入することで、これらの設定を一度定義しておけば、ワンクリックで適切な環境に切り替えられます。
Custom Agentとプロンプトファイルの違い
GitHub Copilotには「プロンプトファイル(.prompt.md)」という類似機能がありますが、目的が異なります。
| 機能 | Custom Agent | プロンプトファイル |
|---|---|---|
| 適用方法 | エージェントドロップダウンで選択 | /コマンドで呼び出し |
| 主な用途 | 特定の役割・ペルソナの定義 | 特定タスクの実行 |
| ファイル形式 | .agent.md |
.prompt.md |
| 保存場所 | .github/agents/ |
.github/prompts/ |
| ツール制御 | エージェント全体で固定 | プロンプトごとに指定可能 |
| セッション継続 | 切り替えるまで維持 | 単発実行 |
Custom Agentは「セッション全体を通じて適用されるペルソナ」、プロンプトファイルは「オンデマンドで実行するタスク」と捉えると理解しやすいでしょう。
Custom Agentファイルの構造
Custom Agentは、.agent.md拡張子のMarkdownファイルで定義します。ファイルは、YAMLフロントマター(ヘッダー)とMarkdown本文(ボディ)で構成されます。
ヘッダー(YAMLフロントマター)
ファイル先頭のYAMLフロントマターで、エージェントのメタ情報を定義します。
|
|
各プロパティの詳細は以下の通りです。
| プロパティ | 説明 | 必須 |
|---|---|---|
name |
エージェント名(ドロップダウンに表示) | 任意(未指定時はファイル名) |
description |
エージェントの説明(チャット入力欄にプレースホルダーとして表示) | 任意 |
argument-hint |
入力欄に表示されるヒントテキスト | 任意 |
tools |
利用可能なツールのリスト | 任意 |
model |
使用するAIモデル | 任意 |
infer |
サブエージェントとして使用可能にするか(デフォルト: true) | 任意 |
target |
ターゲット環境(vscodeまたはgithub-copilot) |
任意 |
mcp-servers |
使用するMCPサーバーの設定JSON | 任意 |
handoffs |
次のエージェントへの引き継ぎ設定 | 任意 |
ボディ(指示内容)
ヘッダーの後に、エージェントへの具体的な指示をMarkdownで記述します。
|
|
ボディ内では、#tool:<tool-name>構文でツールを参照できます。たとえば、#tool:githubRepoと記述すると、GitHubリポジトリ検索ツールが明示的に参照されます。
Custom Agentの作成方法
方法1:コマンドパレットから作成
- コマンドパレットを開く(
Ctrl+Shift+P/Cmd+Shift+P) - 「Chat: New Custom Agent」を選択
- 保存場所を選択:
- Workspace:
.github/agents/に保存(そのワークスペースでのみ使用可能) - User profile: ユーザープロファイルに保存(すべてのワークスペースで使用可能)
- Workspace:
- ファイル名を入力
.agent.mdファイルが作成されるので、内容を編集
方法2:Chatビューから作成
- Chatビューを開く(
Ctrl+Alt+I/Cmd+Alt+I) - エージェントドロップダウンから「Configure Custom Agents」を選択
- 「Create new custom agent」を選択
- 保存場所とファイル名を指定
方法3:手動でファイルを作成
.github/agents/ディレクトリに直接.agent.mdファイルを作成することも可能です。
|
|
VS Codeは.github/agents/フォルダ内の.mdファイルを自動的にCustom Agentとして認識します。
Custom Agentの利用方法
エージェントの切り替え
作成したCustom Agentは、Chatビューのエージェントドロップダウンから選択できます。
- Chatビューを開く
- 入力欄の上部にあるエージェントドロップダウンをクリック
- 作成したカスタムエージェントを選択
選択したエージェントは、別のエージェントに切り替えるまでセッション全体で有効になります。
ドロップダウンリストのカスタマイズ
複数のCustom Agentがある場合、ドロップダウンに表示するエージェントを制御できます。
- エージェントドロップダウンから「Configure Custom Agents」を選択
- リスト内のエージェントにカーソルを合わせる
- 目のアイコンをクリックして表示/非表示を切り替え
ツールの設定
Custom Agentでは、toolsプロパティで利用可能なツールを明示的に指定できます。これにより、エージェントの目的に応じて適切なツールセットを構成できます。
組み込みツールの指定
VS Codeが提供する組み込みツールを指定する例です。
|
|
主要な組み込みツールは以下の通りです。
| ツール名 | 説明 |
|---|---|
search |
ワークスペース内のファイル検索 |
codebase |
コードベース全体の意味検索 |
problems |
エラーや警告の取得 |
usages |
シンボルの使用箇所検索 |
editFiles |
ファイルの編集 |
runCommand |
ターミナルコマンドの実行 |
fetch |
Webページの取得 |
githubRepo |
GitHubリポジトリの検索 |
changes |
Gitの変更差分取得 |
ツールセットの利用
関連するツールをグループ化したツールセットを使用することもできます。
|
|
MCPサーバーのツール
MCPサーバーが提供するツールを含める場合は、サーバー名を指定します。
|
|
<server-name>/*形式を使用すると、そのMCPサーバーのすべてのツールが有効になります。
ツールの優先順位
Custom Agentとプロンプトファイルを組み合わせて使用する場合、ツールは以下の優先順位で決定されます。
- プロンプトファイルで指定されたツール(存在する場合)
- プロンプトファイルで参照されたCustom Agentのツール(存在する場合)
- 選択されたエージェントのデフォルトツール(存在する場合)
Handoff機能によるワークフロー自動化
Handoff機能は、Custom Agent間で順序立てたワークフローを構築するための機能です。チャット応答の完了後にハンドオフボタンが表示され、ワンクリックで次のエージェントに移行できます。
Handoffの設定
YAMLフロントマターのhandoffsプロパティで、引き継ぎ先を定義します。
|
|
各プロパティの意味は以下の通りです。
| プロパティ | 説明 |
|---|---|
label |
ハンドオフボタンに表示されるテキスト |
agent |
切り替え先のエージェント識別子 |
prompt |
次のエージェントに送信するプロンプト |
send |
プロンプトを自動送信するか(デフォルト: false) |
実践的なHandoffワークフロー例
以下は、計画から実装、レビューまでを順番に進めるワークフローの例です。
planner.agent.md:
|
|
implementer.agent.md:
|
|
reviewer.agent.md:
|
|
MCPサーバーとの連携
Custom AgentにMCPサーバーを統合することで、外部APIやデータベースなどの機能を活用できます。
ワークスペースのMCPサーバーを利用
ワークスペースに設定されたMCPサーバーのツールを使用する場合は、toolsプロパティでサーバー名を指定します。
|
|
MCPサーバーの直接設定(GitHub Copilot向け)
target: github-copilotを指定する場合、mcp-serversプロパティでMCPサーバー設定を直接埋め込むことができます。
|
|
実践的なCustom Agent活用例
例1:セキュリティレビューエージェント
セキュリティ観点でのコードレビューに特化したエージェントです。
|
|
例2:テスト駆動開発エージェント
TDDワークフローを支援するエージェントです。
|
|
例3:ドキュメント生成エージェント
技術ドキュメントの作成に特化したエージェントです。
|
|
例4:リファクタリングエージェント
コードの品質改善に特化したエージェントです。
|
|
チーム間でのCustom Agent共有
ワークスペースレベルの共有
.github/agents/フォルダに配置したCustom Agentは、リポジトリをクローンしたすべてのチームメンバーが利用できます。
|
|
組織レベルの共有(実験的機能)
GitHub組織レベルでCustom Agentを定義し、組織内のすべてのリポジトリで共有することもできます。
この機能を有効にするには、VS Codeの設定で以下を有効にします。
|
|
組織レベルのエージェントは、個人やワークスペースのエージェントと同様に、エージェントドロップダウンに表示されます。
注意点とベストプラクティス
セキュリティに関する注意
- Custom Agent内でMCPサーバーを使用する場合、信頼できるソースからのみサーバーを追加してください
- 機密情報(APIキーなど)は直接ファイルに記述せず、入力変数を使用してください
- ツールの自動承認を有効にする場合は、セキュリティリスクを十分に理解した上で設定してください
パフォーマンスの最適化
- 必要なツールのみを有効にすることで、応答の精度と速度が向上します
- 1リクエストあたり最大128ツールの制限があるため、MCPサーバーを多数使用する場合は注意が必要です
- 大規模なコードベースでは、
codebaseツールよりもsearchツールを優先することで応答が高速化する場合があります
命名規則
- エージェント名はcamelCaseまたはPascalCaseを使用
- 空白や特殊文字は避ける
- 機能や役割を明確に表す名前をつける(例:
SecurityReviewer、DocWriter)
既存のchatmodeファイルの移行
以前の.chatmode.mdファイルは引き続き認識されますが、Quick Fixアクションを使用して.agent.md形式に移行することを推奨します。VS Codeがファイルを検出すると、自動的に変換オプションが表示されます。
まとめ
GitHub Copilot Custom Agentは、開発ワークフローを大幅に効率化できる強力な機能です。本記事で紹介した内容を活用することで、以下のような成果が期待できます。
- プロジェクト固有の要件に最適化されたAIアシスタントの構築
- Handoff機能による計画→実装→レビューの自動化ワークフロー
- MCPサーバー連携による外部ツールとの統合
- チーム全体で一貫したAI活用の実現
Custom Agentは.agent.mdファイル1つで定義できるため、導入のハードルは低いです。まずはシンプルなエージェントから作成し、徐々に高度な機能を追加していくことをおすすめします。