はじめに

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フロントマターで、エージェントのメタ情報を定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
---
name: Planner
description: 新機能やリファクタリングの実装計画を生成します
tools: ['fetch', 'githubRepo', 'search', 'usages']
model: Claude Sonnet 4
handoffs:
  - label: Implement Plan
    agent: agent
    prompt: 上記の計画を実装してください。
    send: false
---

各プロパティの詳細は以下の通りです。

プロパティ 説明 必須
name エージェント名(ドロップダウンに表示) 任意(未指定時はファイル名)
description エージェントの説明(チャット入力欄にプレースホルダーとして表示) 任意
argument-hint 入力欄に表示されるヒントテキスト 任意
tools 利用可能なツールのリスト 任意
model 使用するAIモデル 任意
infer サブエージェントとして使用可能にするか(デフォルト: true) 任意
target ターゲット環境(vscodeまたはgithub-copilot 任意
mcp-servers 使用するMCPサーバーの設定JSON 任意
handoffs 次のエージェントへの引き継ぎ設定 任意

ボディ(指示内容)

ヘッダーの後に、エージェントへの具体的な指示をMarkdownで記述します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
---
name: Planner
description: 新機能やリファクタリングの実装計画を生成します
tools: ['fetch', 'githubRepo', 'search', 'usages']
model: Claude Sonnet 4
---
# Planning Instructions

あなたは計画モードで動作しています。新機能の実装やコードのリファクタリングに関する実装計画を生成することがタスクです。

コードの編集は行わず、計画の生成のみを行ってください。

計画は以下のセクションを含むMarkdownドキュメントとして作成してください:

* 概要: 機能やリファクタリングタスクの簡潔な説明
* 要件: 機能やリファクタリングタスクの要件リスト
* 実装手順: 機能を実装するための詳細なステップリスト
* テスト: 機能を検証するために実装すべきテストのリスト

ボディ内では、#tool:<tool-name>構文でツールを参照できます。たとえば、#tool:githubRepoと記述すると、GitHubリポジトリ検索ツールが明示的に参照されます。

Custom Agentの作成方法

方法1:コマンドパレットから作成

  1. コマンドパレットを開く(Ctrl+Shift+P / Cmd+Shift+P
  2. 「Chat: New Custom Agent」を選択
  3. 保存場所を選択:
    • Workspace: .github/agents/に保存(そのワークスペースでのみ使用可能)
    • User profile: ユーザープロファイルに保存(すべてのワークスペースで使用可能)
  4. ファイル名を入力
  5. .agent.mdファイルが作成されるので、内容を編集

方法2:Chatビューから作成

  1. Chatビューを開く(Ctrl+Alt+I / Cmd+Alt+I
  2. エージェントドロップダウンから「Configure Custom Agents」を選択
  3. 「Create new custom agent」を選択
  4. 保存場所とファイル名を指定

方法3:手動でファイルを作成

.github/agents/ディレクトリに直接.agent.mdファイルを作成することも可能です。

1
2
3
4
5
6
7
8
9
# ディレクトリ構造
your-project/
├── .github/
│   └── agents/
│       ├── planner.agent.md
│       ├── security-reviewer.agent.md
│       └── refactoring.agent.md
├── src/
└── package.json

VS Codeは.github/agents/フォルダ内の.mdファイルを自動的にCustom Agentとして認識します。

Custom Agentの利用方法

エージェントの切り替え

作成したCustom Agentは、Chatビューのエージェントドロップダウンから選択できます。

  1. Chatビューを開く
  2. 入力欄の上部にあるエージェントドロップダウンをクリック
  3. 作成したカスタムエージェントを選択

選択したエージェントは、別のエージェントに切り替えるまでセッション全体で有効になります。

ドロップダウンリストのカスタマイズ

複数のCustom Agentがある場合、ドロップダウンに表示するエージェントを制御できます。

  1. エージェントドロップダウンから「Configure Custom Agents」を選択
  2. リスト内のエージェントにカーソルを合わせる
  3. 目のアイコンをクリックして表示/非表示を切り替え

ツールの設定

Custom Agentでは、toolsプロパティで利用可能なツールを明示的に指定できます。これにより、エージェントの目的に応じて適切なツールセットを構成できます。

組み込みツールの指定

VS Codeが提供する組み込みツールを指定する例です。

1
2
3
4
5
---
name: CodeReader
description: コードの読み取りと分析のみを行います
tools: ['search', 'codebase', 'problems', 'usages']
---

主要な組み込みツールは以下の通りです。

ツール名 説明
search ワークスペース内のファイル検索
codebase コードベース全体の意味検索
problems エラーや警告の取得
usages シンボルの使用箇所検索
editFiles ファイルの編集
runCommand ターミナルコマンドの実行
fetch Webページの取得
githubRepo GitHubリポジトリの検索
changes Gitの変更差分取得

ツールセットの利用

関連するツールをグループ化したツールセットを使用することもできます。

1
2
3
4
5
---
name: FullEditor
description: 完全な編集機能を持つエージェント
tools: ['#edit', '#search']
---

MCPサーバーのツール

MCPサーバーが提供するツールを含める場合は、サーバー名を指定します。

1
2
3
4
5
---
name: GitHubAgent
description: GitHub操作に特化したエージェント
tools: ['github/*', 'search', 'editFiles']
---

<server-name>/*形式を使用すると、そのMCPサーバーのすべてのツールが有効になります。

ツールの優先順位

Custom Agentとプロンプトファイルを組み合わせて使用する場合、ツールは以下の優先順位で決定されます。

  1. プロンプトファイルで指定されたツール(存在する場合)
  2. プロンプトファイルで参照されたCustom Agentのツール(存在する場合)
  3. 選択されたエージェントのデフォルトツール(存在する場合)

Handoff機能によるワークフロー自動化

Handoff機能は、Custom Agent間で順序立てたワークフローを構築するための機能です。チャット応答の完了後にハンドオフボタンが表示され、ワンクリックで次のエージェントに移行できます。

Handoffの設定

YAMLフロントマターのhandoffsプロパティで、引き継ぎ先を定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
name: Planner
description: 実装計画を生成します
tools: ['search', 'fetch']
handoffs:
  - label: Start Implementation
    agent: agent
    prompt: 上記の計画に従って実装を開始してください。
    send: false
---

各プロパティの意味は以下の通りです。

プロパティ 説明
label ハンドオフボタンに表示されるテキスト
agent 切り替え先のエージェント識別子
prompt 次のエージェントに送信するプロンプト
send プロンプトを自動送信するか(デフォルト: false)

実践的なHandoffワークフロー例

以下は、計画から実装、レビューまでを順番に進めるワークフローの例です。

planner.agent.md:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
---
name: Planner
description: 実装計画を生成します
tools: ['search', 'codebase', 'usages']
handoffs:
  - label: 実装を開始
    agent: implementer
    prompt: 上記の計画を実装してください。
    send: false
---
# 計画エージェント

コードの編集は行わず、詳細な実装計画のみを生成してください。

implementer.agent.md:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
---
name: Implementer
description: 計画に基づいて実装を行います
tools: ['editFiles', 'runCommand', 'search']
handoffs:
  - label: レビューを依頼
    agent: reviewer
    prompt: 上記の実装をレビューしてください。
    send: false
---
# 実装エージェント

計画に従ってコードを実装してください。

reviewer.agent.md:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
---
name: Reviewer
description: コードレビューを行います
tools: ['search', 'codebase', 'problems']
---
# レビューエージェント

以下の観点でコードをレビューしてください:
- コーディング規約への準拠
- パフォーマンスの問題
- セキュリティの脆弱性

MCPサーバーとの連携

Custom AgentにMCPサーバーを統合することで、外部APIやデータベースなどの機能を活用できます。

ワークスペースのMCPサーバーを利用

ワークスペースに設定されたMCPサーバーのツールを使用する場合は、toolsプロパティでサーバー名を指定します。

1
2
3
4
5
6
7
8
9
---
name: DatabaseAgent
description: データベース操作に特化したエージェント
tools: ['database/*', 'search']
---
# データベースエージェント

#tool:database を使用してデータベースのスキーマを確認し、
クエリの最適化やマイグレーションの提案を行ってください。

MCPサーバーの直接設定(GitHub Copilot向け)

target: github-copilotを指定する場合、mcp-serversプロパティでMCPサーバー設定を直接埋め込むことができます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
name: ExternalAPIAgent
description: 外部API連携エージェント
target: github-copilot
mcp-servers:
  - type: http
    url: https://api.example.com/mcp
    headers:
      Authorization: Bearer ${input:api-key}
---

実践的なCustom Agent活用例

例1:セキュリティレビューエージェント

セキュリティ観点でのコードレビューに特化したエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
---
name: SecurityReviewer
description: セキュリティ脆弱性を検出するコードレビューを行います
tools: ['search', 'codebase', 'problems', 'usages']
model: Claude Sonnet 4
---
# セキュリティレビューエージェント

あなたはセキュリティ専門家として、コードの脆弱性を検出します。

以下の観点で徹底的にレビューしてください:

## チェック項目

### 入力検証
- SQLインジェクション
- コマンドインジェクション
- パストラバーサル
- XSS(クロスサイトスクリプティング)

### 認証・認可
- 認証バイパスの可能性
- 権限チェックの漏れ
- セッション管理の問題

### データ保護
- 機密情報のハードコーディング
- 暗号化の不備
- ログへの機密情報出力

### 依存関係
- 既知の脆弱性を持つライブラリ
- 安全でないパッケージバージョン

発見した問題には、CVSSスコアの目安と修正案を提示してください。

例2:テスト駆動開発エージェント

TDDワークフローを支援するエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
---
name: TDDAgent
description: テスト駆動開発を支援します
tools: ['editFiles', 'runCommand', 'search', 'problems']
handoffs:
  - label: テストを実行
    agent: agent
    prompt: 作成したテストを実行し、失敗を確認してください。
    send: true
---
# TDDエージェント

テスト駆動開発(TDD)のサイクルに従って開発を進めます。

## ワークフロー

1. **Red**: まず失敗するテストを作成
2. **Green**: テストが通る最小限のコードを実装
3. **Refactor**: コードをリファクタリング

## テスト作成のルール

- テストは明確で読みやすい名前をつける
- 1つのテストで1つの振る舞いのみを検証
- Given-When-Then形式でテストを構造化
- エッジケースと異常系も網羅

例3:ドキュメント生成エージェント

技術ドキュメントの作成に特化したエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
---
name: DocWriter
description: 技術ドキュメントを生成します
tools: ['search', 'codebase', 'fetch']
---
# ドキュメント作成エージェント

コードから技術ドキュメントを生成します。

## ドキュメント形式

### API仕様書
- エンドポイントの説明
- リクエスト/レスポンスの例
- エラーコードの一覧

### 関数・クラスのドキュメント
- 概要説明
- パラメータの型と説明
- 戻り値の説明
- 使用例

### アーキテクチャ文書
- システム構成図(Mermaid記法)
- コンポーネント間の依存関係
- データフロー

出力はMarkdown形式で、必要に応じてコード例を含めてください。

例4:リファクタリングエージェント

コードの品質改善に特化したエージェントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
---
name: Refactorer
description: コードのリファクタリングを行います
tools: ['editFiles', 'search', 'usages', 'problems']
handoffs:
  - label: 変更をレビュー
    agent: reviewer
    prompt: リファクタリングの変更内容をレビューしてください。
    send: false
---
# リファクタリングエージェント

コードの品質を改善するリファクタリングを行います。

## リファクタリング観点

### コードの簡素化
- 重複コードの抽出と共通化
- 複雑な条件分岐の簡素化
- 長いメソッドの分割

### 設計の改善
- 単一責任原則(SRP)の適用
- 依存性の注入パターンの導入
- インターフェースの抽出

### 可読性の向上
- 意味のある変数名・関数名への変更
- マジックナンバーの定数化
- 適切なコメントの追加

## 制約

- 既存の機能を変更しない(振る舞いの保持)
- テストが通ることを確認
- 段階的に小さな変更を積み重ねる

チーム間でのCustom Agent共有

ワークスペースレベルの共有

.github/agents/フォルダに配置したCustom Agentは、リポジトリをクローンしたすべてのチームメンバーが利用できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# リポジトリ構造
your-project/
├── .github/
│   ├── agents/
│   │   ├── planner.agent.md
│   │   ├── security-reviewer.agent.md
│   │   └── team-conventions.agent.md
│   └── copilot-instructions.md
├── src/
└── README.md

組織レベルの共有(実験的機能)

GitHub組織レベルでCustom Agentを定義し、組織内のすべてのリポジトリで共有することもできます。

この機能を有効にするには、VS Codeの設定で以下を有効にします。

1
2
3
{
  "github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents": true
}

組織レベルのエージェントは、個人やワークスペースのエージェントと同様に、エージェントドロップダウンに表示されます。

注意点とベストプラクティス

セキュリティに関する注意

  • Custom Agent内でMCPサーバーを使用する場合、信頼できるソースからのみサーバーを追加してください
  • 機密情報(APIキーなど)は直接ファイルに記述せず、入力変数を使用してください
  • ツールの自動承認を有効にする場合は、セキュリティリスクを十分に理解した上で設定してください

パフォーマンスの最適化

  • 必要なツールのみを有効にすることで、応答の精度と速度が向上します
  • 1リクエストあたり最大128ツールの制限があるため、MCPサーバーを多数使用する場合は注意が必要です
  • 大規模なコードベースでは、codebaseツールよりもsearchツールを優先することで応答が高速化する場合があります

命名規則

  • エージェント名はcamelCaseまたはPascalCaseを使用
  • 空白や特殊文字は避ける
  • 機能や役割を明確に表す名前をつける(例:SecurityReviewerDocWriter

既存のchatmodeファイルの移行

以前の.chatmode.mdファイルは引き続き認識されますが、Quick Fixアクションを使用して.agent.md形式に移行することを推奨します。VS Codeがファイルを検出すると、自動的に変換オプションが表示されます。

まとめ

GitHub Copilot Custom Agentは、開発ワークフローを大幅に効率化できる強力な機能です。本記事で紹介した内容を活用することで、以下のような成果が期待できます。

  • プロジェクト固有の要件に最適化されたAIアシスタントの構築
  • Handoff機能による計画→実装→レビューの自動化ワークフロー
  • MCPサーバー連携による外部ツールとの統合
  • チーム全体で一貫したAI活用の実現

Custom Agentは.agent.mdファイル1つで定義できるため、導入のハードルは低いです。まずはシンプルなエージェントから作成し、徐々に高度な機能を追加していくことをおすすめします。

参考リンク