AGENTS.mdはGitHub Copilotでも読めるようになった——ただし、期待通りの動作をするかは別の話だ。Claude CodeがCLAUDE.mdを扱う厳密さと、CopilotがAGENTS.mdを扱う緩さには明確な差がある。この差を理解せずに「1ファイルで全部解決」を目指すと、ツールごとに微妙に違う挙動で混乱することになる。
この記事では、CopilotのAGENTS.md読み込みの実態、Custom instructionsとの使い分け、そしてClaude Codeと共存させる設定パターンを具体的に説明する。
GitHub CopilotはAGENTS.mdを読むのか
読む。ただし条件がある。
CopilotはAGENTS.md対応を2025年に追加した。Copilot ChatとGitHub.comのウェブエディタではリポジトリルートのAGENTS.mdを読み込む。ただしモードによって対応レベルが違う。
| モード | AGENTS.md対応 |
|---|---|
| Copilot Chat(VS Code) | 対応(リポジトリルート・docs/から) |
| GitHub.com のCopilot | 対応(ウェブエディタ経由でインデックス) |
| Copilot Workspace | 対応(ディレクトリ階層を全て読む) |
| Copilot Edits(インライン) | 部分対応(読み込むが適用が不安定) |
| Copilot CLI | 非対応 |
重要な点は、CopilotのAGENTS.md扱いが「参考にする強いシステムプロンプト」に近く、Claude Codeが「CLAUDE.mdを権威ある設定として厳密に従う」のとは異なるということだ。ルールを破ることへの抵抗感が薄い。
Copilotのファイル探索順序
CopilotはCodexやClaude Codeより単純な探索をする。
- リポジトリルートの
/AGENTS.mdを最初にチェック /docs/AGENTS.mdをフォールバックとしてチェック- Copilot Workspaceでは、タスクが関係するディレクトリ配下のAGENTS.mdも読む
Codexが ~/.codex/AGENTS.md でユーザーレベルの設定を読むのと違い、Copilotにはそれに相当するユーザーレベルのAGENTS.mdパスがない。Copilotでユーザーレベルの設定をしたい場合はCopilotのカスタム指示機能(GitHub.comのアカウント設定)を使う。
Custom Instructions と AGENTS.md の違い
AGENTS.md対応が来る前から、Copilotには独自の設定ファイルがあった。.github/copilot-instructions.mdだ。これは今でもCopilotの主要な設定経路であり、AGENTS.mdが効かない場面でも確実に動作する。
project-root/
├── AGENTS.md # マルチツール共通(Codex・Cursorでも読む)
├── .github/
│ └── copilot-instructions.md # Copilot専用設定
└── CLAUDE.md # Claude Code設定
2つのファイルの性格の違い:
.github/copilot-instructions.md
- Copilot専用。全モード・全セッションで確実に読まれる
- 階層なし(リポジトリ全体に1ファイル)
- Copilot固有の機能(トピックフィルタリング等)が使える
AGENTS.md
- マルチツール標準。Copilot、Codex、Cursor等が読む
- Copilot Workspaceではディレクトリ階層に対応
- Copilot固有の機能は使えない
実用上の方針: Copilotがメインツールなら .github/copilot-instructions.md の方が信頼度が高い。AGENTS.mdは「どのエージェントでも同じ基盤ルールを使いたい」ときに価値が出る。
CopilotがAGENTS.mdで確実に機能するセクション
CopilotはAGENTS.mdを読んだ後、内容を高優先度のコンテキストとして処理する。確実に効くセクションと、そうでないセクションがある。
確実に効く: コマンドとセットアップ
## Commands セクションは高い精度で機能する。Copilotがスクリプトを生成したりターミナルコマンドを提案する際に参照する。
## Commands
- インストール: pnpm install
- 開発サーバー: pnpm dev
- テスト: pnpm test --run
- Lint: pnpm lint && pnpm tsc --noEmit
確実に効く: コードスタイル規約
言語レベルの規約(TypeScript設定、命名規則、推奨パターン)は一貫して適用される。
## コードスタイル
- TypeScript: strict mode、any禁止、外部データにはunknownを使う
- React: デフォルトはServer Components、必要な時だけ'use client'を付ける
- CSS: Tailwindユーティリティクラス、動的値以外のインラインスタイル禁止
- インポート: クロスモジュールは相対パスでなく`@/`エイリアスを使う
効きが弱い部分:
- サブディレクトリ固有のルール(多くのモードで階層をフラットにしてしまう)
- 長いAGENTS.md(2,000トークン超は後半の注意力が落ちる)
- 条件分岐的な指示(「auth/を触るPRの場合は…」系)
Claude Code + Copilot の共存パターン
2つのツールを同じリポジトリで使う場合、設定ファイルが3つ(AGENTS.md、copilot-instructions.md、CLAUDE.md)になる。これを正しく分離すると管理が楽になる。
project-root/
├── AGENTS.md # ツール横断の共通ルール
├── .github/
│ └── copilot-instructions.md # Copilot専用
└── CLAUDE.md # Claude Code専用(AGENTS.mdをインポート)
AGENTS.mdに書くもの(共通基盤):
- プロジェクトアーキテクチャの概要
- ビルド・テストコマンド
- 絶対に守るべき制約(「migrationsの変更は事前承認必須」等)
- 技術スタックとバージョン
- ディレクトリ構造の説明
.github/copilot-instructions.mdに書くもの(Copilot専用):
- Copilot Chatのレスポンススタイル指定
- トピックフォーカス(「TypeScriptに絞る」「Python例は不要」)
- コードレビュー時の振る舞い
CLAUDE.mdに書くもの(Claude Code専用):
- Hooks、パーミッション設定
- サブエージェントへの委譲パターン
- AGENTS.mdをインポートして拡張
ルール競合を防ぐ: CLAUDE.mdでインポートする
CLAUDE.mdがAGENTS.mdの内容を取り込む形にすると、ルールの一元管理ができる。
# CLAUDE.md
@import AGENTS.md
## Claude Code固有設定
### Hooks
PostToolUse: npm run lint -- {path}
Stop: node scripts/verify-build.js
### Permissions
- Bash: allow
- Write: src/外のファイルは確認を求める
このパターンだとAGENTS.mdが共有ルールの単一ソースとなり、CLAUDE.mdはそれを拡張する形になる。ルールの二重管理がなくなり、更新も1ファイルで済む。
Copilot Workspaceでの階層設定
Copilot WorkspaceはAGENTS.md階層への対応が最も充実している。ディレクトリ構造を活かした設定例:
project-root/
├── AGENTS.md # グローバル指示
├── src/
│ ├── AGENTS.md # フロントエンド固有ルール
│ └── api/
│ └── AGENTS.md # APIレイヤー固有ルール
└── tests/
└── AGENTS.md # テスト記述規約
src/api/AGENTS.mdの例:
# APIレイヤー指示
## 認証
- `/auth/*` 以外の全エンドポイントに `requireAuth` ミドルウェアが必要
- JWTシークレットはハードコード禁止。必ず `process.env.JWT_SECRET` を使う
- リフレッシュトークンのローテーションロジックは `auth/refresh.ts` のみで管理
## エラーハンドリング
- 全エラーをRFC 7807の `problem+json` 形式で返す
- `req.correlationId` からの相関IDでログを記録する
- 本番環境ではスタックトレースをクライアントに返さない
Copilot Workspaceで src/api/ 配下に関わるタスクを作ると、ルートのAGENTS.mdと src/api/AGENTS.md の両方が適用される。競合がある場合はサブディレクトリのファイルが優先される。
Copilotが実際に何を吸収したかを確認する方法
Claude Codeと違い、Copilotは「今どんなルールを読んでいるか」を透明に見せてくれない。実用的な確認方法は、設定後にCopilot Chatで直接聞くことだ。
このプロジェクトに設定されている主要な規約と制約を教えてください。
Copilotが吸収した内容を列挙する。これが品質チェックになる。重要なルールが抜けていたら、ファイルの前の方に移動する(Copilotは早い方のコンテンツに高い注目度を向ける)か、.github/copilot-instructions.mdに確実に書く。
実測データ: TypeScript/Next.jsプロジェクトで680トークンのAGENTS.md(アーキテクチャ、コマンド、TypeScript規約)は完全に吸収された。同プロジェクトで説明・背景を加えた2,800トークン版は規約ルールの遵守率が60〜70%程度に落ちた。AGENTS.mdには「何をするか」だけを書き、「なぜか」は人間向けのCONTRIBUTING.mdに分けるのが正解だ。
判断フローのまとめ
| 状況 | 推奨 |
|---|---|
| Copilotのみ使う | .github/copilot-instructions.mdを主軸に |
| Copilot + Claude Code両方使う | AGENTS.mdに共通ルール、各ツールの固有ファイルに拡張 |
| Copilot Workspaceでエージェント作業 | ディレクトリ階層をフルに活用 |
| 絶対守らせたいルールがある | AGENTS.mdだけでなく.github/copilot-instructions.mdにも書く |
| チームがAIツールを統一していない | AGENTS.mdを共通基盤として採用 |
AGENTS.mdはポータビリティを与える。.github/copilot-instructions.mdはCopilot内での確実性を与える。両方使い、明確に役割分担するのが2026年の最適解だ。