GitHub Copilotのエージェント機能まとめ

Claude Codeを使っていると、GitHub Copilotにも同様のエージェント機能があるのか気になる。結論から言うと、Copilotにもサブエージェント、タスク委譲、カスタムエージェントの機能がある。ただし設計思想が異なり、理解するには少し整理が必要だった。

本記事では、Claude Codeユーザーの視点からGitHub Copilotのエージェント機能を整理する。


全体像:2つの実行環境

GitHub Copilotのエージェント機能を理解する上で最も重要なのは、2つの異なる実行環境があるという点である。

┌─────────────────────────────────────────────────────────────┐
│                    GitHub Copilot                           │
│                                                             │
│  ┌─────────────────────┐    ┌─────────────────────┐        │
│  │   Agent Mode        │    │   Coding Agent      │        │
│  │   (ローカル)         │    │   (クラウド)         │        │
│  │                     │    │                     │        │
│  │  - VS Code内で実行   │    │  - GitHub Actions   │        │
│  │  - 未コミット差分◯   │    │  - コミット済みのみ  │        │
│  │  - リアルタイム編集  │    │  - 非同期でPR作成   │        │
│  │  - #runSubagent     │    │  - /delegate        │        │
│  └─────────────────────┘    └─────────────────────┘        │
└─────────────────────────────────────────────────────────────┘
環境 実行場所 未コミット差分 用途
Agent Mode ローカル(VS Code) 見える リアルタイム開発
Coding Agent クラウド(GitHub Actions) 見えない 非同期タスク委譲

Claude Codeはローカル実行のみなので、この「クラウドで非同期実行」という選択肢はCopilot固有の特徴である。


サブエージェントの仕組み

基本概念

サブエージェントは独自のコンテキストウィンドウを持ち、メインセッションとは分離されて動作する。これはClaude Codeと同じアーキテクチャパターンである。

[メインエージェント]
    │
    ├─→ [サブエージェントA] ─→ 結果のみ返却
    ├─→ [サブエージェントB] ─→ 結果のみ返却
    └─→ [サブエージェントC] ─→ 結果のみ返却

共通の制約

呼び出し方

VS Code内で #runSubagent を使用:

#runSubagent を使って認証メカニズムを調査して、結果をまとめて

#file:api.ts を #runSubagent で分析して、セキュリティ上の問題を報告して

カスタムエージェントの設定

配置場所

場所 スコープ
.github/agents/ リポジトリ固有
{org}/.github/agents/ 組織共通
~/.copilot/agents/ 個人(CLI用)

設定ファイル形式(.agent.md

Claude Codeと同様、Markdown + YAMLフロントマター形式:

---
name: security-reviewer
description: セキュリティ観点でコードをレビュー。脆弱性、認証・認可の問題を検出。
tools:
  - read
  - search
  - agent
---

# Security Review Agent

## Role
You are a senior security engineer with expertise in OWASP Top 10.

## Review Focus
1. SQL injection, XSS, CSRF vulnerabilities
2. Authentication and authorization issues
3. Secrets exposure in code

## Output Format
- Severity: Critical / High / Medium / Low
- Location: file:line
- Description: What's wrong
- Recommendation: How to fix

利用可能なツール

ツール名 エイリアス 用途
execute shell, Bash シェルコマンド実行
read Read ファイル読み取り
edit Edit, Write ファイル編集
search Grep, Glob 検索
agent Task 他エージェント呼び出し
runSubagent - サブエージェント起動

ツール指定方法:

Handoffs(エージェント間遷移)

VS Codeでは、エージェント間のワークフローを定義できる:

---
name: planner
description: 実装計画を立てる
handoffs:
  - label: "実装を開始"
    agent: implementer
    prompt: "上記の計画に基づいて実装してください"
    send: false
---

Claude CodeではHooksを使ってチェーン化するが、Copilotではhandoffsとして宣言的に定義できる。


コンテキスト管理の設計思想

Copilotのアプローチ:モード切り替え

Copilotはモードによってコンテキスト収集の挙動が変わる

モード コンテキスト収集 追加検索
Ask/Edit 意図検知で判断 なし
Agent Mode 自動で収集 必要に応じて追加

明示的なディレクティブ

Claude Codeのアプローチ:常にエージェンティック

Claude Codeは常にエージェントとして動作し、必要に応じて自動で探索する。モード切り替えは不要。

どちらが良いか

これは**認知負荷をどこに置くか**の違い:

ツール 要求されるスキル
Copilot モードの使い分け(ツール固有の知識)
Claude Code プロンプトの書き方(汎用的なスキル)

コンテキストの与え方が上手な人であれば、Claude Codeの方が「余計なUI/モード切り替えがない分シンプル」と感じるかもしれない。


Copilot Spaces vs Claude Projects

両者とも「コンテキストをまとめて管理する」機能だが、設計思想が異なる。

観点 Copilot Spaces Claude Projects
共有モデル GitHub権限を継承 個人/招待ベース
同期 リポジトリと自動同期 手動アップロード
用途 チーム内ナレッジ共有 個人ワークスペース
場所 GitHub上 Claude.ai上

Copilot Spacesは「組織のナレッジハブをGitHubに統合する」発想、Claude Projectsは「個人のワークスペースを拡張する」発想である。


コードレビュー機能

Copilotには差分に対する専用のコードレビュー機能がある。

アクセス方法

  1. VS Code UI: Source Control > CHANGES > Copilot Code Review ボタン
  2. コマンド: /review
/review                  # 未コミット差分をレビュー
/review develop main     # ブランチ間の差分をレビュー

Agent Modeでの差分レビュー

Agent Modeで「差分をレビューして」と自然言語で指示することも可能だが、専用の /review コマンドの方が確実。

Claude Codeでは「変更をレビューして」と言えば自然に git diff を実行してレビューしてくれる。Copilotでも同様にできるが、専用UIがある分、そちらを使う方が確実という設計になっている。


モノレポでの構成

モノレポでGitHub Copilotのエージェント機能を使う場合、VS Codeで開いたフォルダがワークスペースルートになるという制約を理解する必要がある。

問題:親フォルダの設定が認識されない

/repo-root/
├── .github/
│   └── agents/         ← repo-rootを開いたときのみ有効
└── sub-project/
    └── .github/
        └── agents/     ← sub-projectを開いたときのみ有効

sub-project/をVS Codeで開いた場合、repo-root/.github/の設定は認識されない。

chat.useNestedAgentsMdFiles設定を有効にすると、サブフォルダのAGENTS.mdも再帰的に読み込まれる。

/repo-root/
├── AGENTS.md                    # 共通ルール
├── sub-project-frontend/
│   └── AGENTS.md                # frontend固有の指示
├── sub-project-backend/
│   └── AGENTS.md                # backend固有の指示
└── shared-lib/
    └── AGENTS.md                # 共有ライブラリ固有の指示

この構成では:

その他のアプローチ

方法 特徴
.instructions.mdapplyTo パスパターンで適用範囲を限定
repo-rootに専用エージェント定義 プロンプトでディレクトリを指定(強制力弱め)
Copilot Spaces サブプロジェクトごとにSpaceを作成

Claude Codeとの比較

Claude Codeでは「このディレクトリを探索して」とプロンプトで指示するだけで済む。Copilotは設定ファイルの配置と設定の有効化が必要で、モノレポ対応はまだ発展途上という印象がある。


Claude Codeとの比較まとめ

観点 GitHub Copilot Claude Code
実行環境 ローカル + クラウド ローカルのみ
サブエージェント #runSubagent Taskツール(自動)
設定ファイル .agent.md .md
配置場所 .github/agents/ .claude/agents/
コンテキスト収集 モード依存 常にエージェンティック
差分レビュー 専用UI + コマンド 自然言語で依頼
MCP連携 あり あり
ネスト制約 深さ1レベル 深さ1レベル
モノレポ対応 nested AGENTS.md等で対応 プロンプトで指示

使い分けの指針

両者を併用するケースも増えている。


参考リンク