Claude CodeとGitHub Copilotの併用設定 — 拡張機能の競合を避ける手順
同一プロジェクトでClaude CodeとGitHub Copilotを併用する設定手順。拡張機能の競合回避、CLAUDE.mdとAGENTS.mdの共存、MCP設定を2つのファイルで食い違わせない運用をまとめます。
Claude CodeとGitHub Copilotは同じプロジェクトで衝突せずに動く
Claude CodeとGitHub Copilotはどちらも別々のVS Code拡張機能(anthropic.claude-codeとGitHub.copilot)として動き、担当する領域が異なります。Copilotはエディタ上のゴーストテキストによるインライン補完、Claude Codeはチャットパネルからのファイル横断編集とコマンド実行が中心です。VS Code拡張機能としてのキー割り当てはお互い重ならない設計ですが、Sparkアイコンが出ないなど拡張機能どうしの干渉が疑われるときの切り分け手順は公式に用意されています。実際に併用するかどうか・タイプ別の判断材料はClaude CodeとGitHub Copilotの違いにまとめてあります。本記事はその先、同一プロジェクトで両方を動かすときに実際に手を動かす設定 — 拡張機能の競合回避、指示ファイルの共存、MCPサーバー設定を2つのファイルに書き分ける運用 — に絞ります。
前提条件
VS Code 1.94.0以上、anthropic.claude-code拡張機能、GitHub.copilotとGitHub.copilot-chat拡張機能をインストール済みであることを前提にします。Claude Codeの拡張機能はチャットパネル用にCLI本体のコピーを内蔵していますが、ターミナルでclaudeコマンドを直接使う場合は別途CLIのスタンドアロンインストールが必要です。
ステップ1: 役割分担を決めてから両方を有効にする
補完はCopilot、ファイル横断のエージェント作業はClaude Codeという分担が最も摩擦が少ない組み合わせです。Copilotのインライン補完はエディタにカーソルを置いた状態で単発の続きを提案する機能で、Claude Codeのチャットパネルは複数ファイルにまたがる変更を計画してから実行する機能なので、動作するタイミングと粒度がそもそも重なりません。
注意が必要なのは、Copilot Chat側にも複数ファイルを自動編集する「エージェントモード」がある点です。同じファイルに対してCopilot ChatのエージェントモードとClaude Codeの両方が並行して自動編集を走らせると、片方の変更をもう片方が古い内容のまま上書きする形の衝突が起こり得ます。大きな機能追加やリファクタリングはどちらか一方に任せ、もう一方は補完やレビュー用途に絞る運用のほうが事故が少なくなります。
ステップ2: キーバインドと拡張機能の競合を避ける
Claude CodeとCopilotのデフォルトキーバインドは重複しません。Claude CodeはCmd+Esc / Ctrl+Esc(フォーカス切り替え)、Cmd+Shift+Esc(新しいタブ)、Option+K / Alt+K(@メンション挿入)を使い、Copilotのインライン補完はTab(受け入れ)・Esc(却下)・Option+] / Alt+](次の候補)を使います。両拡張機能を同時に入れても、キーの奪い合いは基本的に発生しません。
拡張機能どうしの競合が疑われるときは、Claude Code拡張機能の公式トラブルシューティングが「他のAI拡張機能を一時的に無効化する」ことを最初の切り分け手順として挙げています。エディタツールバーにSparkアイコンが表示されない症状の原因切り分けとして案内されている手順で、Copilotを含む他のAI拡張機能を1つずつ無効化しながら症状が消えるかを確認すると、どの拡張機能が影響しているかを特定できます。
ステップ3: 指示ファイルをAGENTS.md起点で共存させる
Claude CodeはCLAUDE.md、GitHub CopilotはVS Code上のChatでAGENTS.mdと.github/copilot-instructions.mdを読みます。ここで見落としやすいのが、VS CodeのCopilot ChatはAGENTS.mdには対応していてもCLAUDE.mdは読まないという点です。公式のサポート一覧でも、VS CodeのCopilot Chatが対応する指示ファイルは「リポジトリ全体の指示(.github/copilot-instructions.md)」「パス別の指示(.github/instructions/**/*.instructions.md)」「エージェント指示(AGENTS.md)」の3種類と明記されており、CLAUDE.mdは含まれていません(CLAUDE.mdが対応リストに載るのは、GitHub.com上で動く別機能の「Copilot cloud agent」だけです)。
つまりCLAUDE.mdだけを整備してもCopilot Chatには届かず、.github/copilot-instructions.mdだけを整備してもClaude Codeには届きません。両方に同じ内容を読ませたいなら、AGENTS.mdを正本にしてClaude Code側から取り込む構成が二重管理を避けられます。
CLAUDE.md
@AGENTS.md
## Claude Code向けの追加指示
- src/billing/配下の変更はplanモードで進めるmacOSとLinuxでは、Claude Code固有の追加指示が不要ならシンボリックリンクでも同じ効果が得られます。
ln -s AGENTS.md CLAUDE.mdWindowsではシンボリックリンクの作成に管理者権限またはデベロッパーモードが必要なため、@AGENTS.mdによるインポート方式を使います。すでに.github/copilot-instructions.mdを運用している場合は、Claude Codeの/initコマンドを実行すると既存のCopilotルールを読み取り、生成するCLAUDE.mdに関連部分を取り込んでくれます。
ステップ4: MCPサーバー設定は2つのファイルに書き分ける
Claude CodeとCopilot ChatはMCPサーバーの設定ファイルが別で、スキーマも異なります。Claude Codeはプロジェクト直下の.mcp.json(トップレベルキーはmcpServers)、Copilot Chatはプロジェクト直下の.vscode/mcp.json(トップレベルキーはservers)を読みます。ファイルの場所とキー名がどちらも違うため、片方の設定を書いてももう片方には反映されず、同じMCPサーバーを両方のツールから使いたい場合はそれぞれの形式で個別に設定する必要があります。
// .mcp.json(Claude Code)
{
"mcpServers": {
"github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/" }
}
}// .vscode/mcp.json(Copilot Chat)
{
"servers": {
"github": { "url": "https://api.githubcopilot.com/mcp/" }
}
}認証ヘッダーやトークンも両方のファイルに個別に書く必要があります。1箇所を更新してもう1箇所を忘れると、片方のツールだけ古い認証情報のまま接続に失敗するという事故が起きやすいので、MCPサーバーを追加・変更したら両ファイルをセットで確認する運用にしておくと安全です。
なお、すでにClaude Desktop(Claude Codeとは別のデスクトップアプリ)でMCPサーバーを設定済みなら、VS Codeのsettings.jsonに"chat.mcp.discovery.enabled": trueを追加することで、Copilot ChatがそのClaude Desktopの設定を自動的に見つけて使えるようになります。ここで自動検出されるのはClaude Desktopの設定であり、Claude Codeの.mcp.jsonではない点に注意してください。両者は名前が似ていますが別製品で、設定ファイルも共有されません。
Copilot Chat自身も設定の置き場所が2つに割れています。プロジェクト直下の.vscode/mcp.jsonと、個人のsettings.jsonのどちらにも同じサーバーを書けますが、GitHub公式は「サーバーごとに使う場所は1つに絞ることを推奨する」「両方に追加すると競合や予期しない挙動を招く可能性がある」と明記しています。Copilot側の設定を書くときは、プロジェクト共有用と個人用のどちらか一方に統一しておくと、Claude Code側の.mcp.jsonとの重複管理と合わせて見通しがよくなります。
よくあるつまずき
- Copilot ChatにCLAUDE.mdの内容が反映されない: VS CodeのCopilot ChatはCLAUDE.mdを読まない仕様です。共有したい指示はAGENTS.mdに書き、CLAUDE.mdから
@AGENTS.mdでインポートします。 - Windowsでシンボリックリンクが作れない: 管理者権限かデベロッパーモードが必要です。
@AGENTS.mdインポート方式を使えば権限なしで同じ効果が得られます。 - Sparkアイコンが出ない: 他のAI拡張機能との競合が疑われるケースです。Copilotを含む他のAI拡張機能を一時的に無効化して切り分けます。
- MCPサーバーの認証が片方だけ失敗する:
.mcp.jsonと.vscode/mcp.jsonは別ファイルです。トークンを更新したら両方を確認します。 - Copilot ChatのエージェントモードとClaude Codeが同じファイルを同時に編集する: どちらか一方に大きな変更を任せ、もう一方は補完やレビューに専念させると衝突を避けやすくなります。
「Copilotの中のClaude」と「Claude Code」は別物
GitHub Copilotには、Claude Agent SDKで動くサードパーティ製の「Anthropic Claude coding agent」(パブリックプレビュー)があります。既存のCopilotサブスクリプションで使え、有効化したうえでタスクを割り当てる仕組みです。タスク開始時に使うモデルはAuto / Claude Opus 4.7 / Claude Sonnet 4.6から選べます。これは本記事で扱っているCLI・VS Code拡張機能としてのClaude Codeとは別の製品です。ステップ3で触れた、CLAUDE.mdを読む「Copilot cloud agent」(GitHub.com上で動く非同期エージェント)とも別の機能です。「Copilotの中でClaudeモデルを動かす」構成と「ターミナルやVS CodeでClaude Codeそのものを動かす」構成は名前が紛らわしいので、どちらの話をしているか意識して使い分けてください。
使い分け早見表
| 場面 | 担当 | 理由 |
|---|---|---|
| 数行の続きを書かせたい | 担当Copilotのインライン補完 | 理由カーソル位置での単発提案に最適化されている |
| 複数ファイルにまたがる機能追加 | 担当Claude Code | 理由ファイル横断の計画と実行、diffレビューが揃っている |
| リポジトリ全体に共有したい規約 | 担当AGENTS.md | 理由CLAUDE.mdから@AGENTS.mdでインポートすれば、Copilot ChatとClaude Codeの両方に届く |
| Claude Code固有の運用ルール | 担当CLAUDE.mdの追加セクション | 理由@AGENTS.mdインポートの下に書き足せる |
まとめ
Claude CodeとGitHub CopilotはVS Code拡張機能としては競合しませんが、指示ファイルとMCP設定は別々の仕組みなので、共存させるには意図的な設計が要ります。共有したい指示はAGENTS.mdを正本にしてCLAUDE.mdからインポートし、MCPサーバーは.mcp.jsonと.vscode/mcp.jsonの両方に書く前提で運用します。大きな自動編集はどちらか一方に任せる役割分担さえ決めておけば、補完はCopilot・エージェント作業はClaude Codeという組み合わせは実運用でも無理なく回ります。