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はチャットパネルからのファイル横断編集とコマンド実行が中心です。両者の既定キーは重なりません。それでもSparkアイコンが出ないなど拡張機能どうしの干渉が疑われるときのために、切り分け手順が公式に用意されています。
実際に併用するかどうか・タイプ別の判断材料はClaude CodeとGitHub Copilotの違いにまとめてあります。本記事はその先、同一プロジェクトで両方を動かすときに実際に手を動かす設定 — 拡張機能の競合回避、指示ファイルの共存、MCPサーバー設定を2つのファイルに書き分ける運用 — に絞ります。
前提条件
VS Code 1.94.0以上、anthropic.claude-code拡張機能をインストールし、GitHub CopilotをVS Codeで有効にしてあることを前提にします。Copilotの有効化はStatus BarのCopilotアイコンから「Use AI Features」を選ぶ流れです。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+](次の候補)を使います。この範囲では、両拡張機能を同時に入れてもキーの奪い合いは起きません。
エディタツールバーにSparkアイコンが出ないときは、公式のトラブルシューティングが次の5項目を順に確認するよう案内しています。拡張機能の競合は4番目です。ただし公式が例に挙げているのはClineとContinueで、Copilotは名指しされていません。Copilotを疑うなら、同じ要領でCopilot系の拡張機能を1つずつ無効化して症状が消えるかを見ます。
Sparkアイコンが出ないときの確認順
- 1
ファイルを開く
アイコンはファイルを開いているときだけ表示されます。フォルダを開いただけでは出ません。
- 2
VS Codeのバージョンを見る
1.94.0以上が必要です。Help → Aboutで確認します。
- 3
ウィンドウを再読み込みする
コマンドパレットから「Developer: Reload Window」を実行します。
- 4
他のAI拡張機能を一時的に無効化する
公式が例に挙げるのはClineとContinueです。1つずつ無効化して、症状が消えるかを見ます。
- 5
ワークスペースの信頼設定を確認する
制限モード(Restricted Mode)では拡張機能が動作しません。
ステップ3: 指示ファイルをAGENTS.md起点で共存させる
Claude CodeはCLAUDE.mdを読み、GitHub CopilotはVS Code上のChatで.github/copilot-instructions.mdやAGENTS.mdを読みます。ここで見落としやすいのが、CLAUDE.mdの扱いについてVS Codeの説明とGitHubの一覧が食い違っている点です。
VS Codeのカスタム指示のページでは、選ぶエージェント(ハーネス)ごとに読むファイルが変わると説明されています。既定のLocalエージェントは、.github/copilot-instructions.md・AGENTS.md・CLAUDE.mdのいずれも対象です。CLAUDE.mdはchat.useClaudeMdFile設定で制御され、既定で有効です。一方、GitHubのサポート一覧はVS CodeのCopilot Chatを「AGENTS.mdによるエージェント指示」としか書いていません。CLAUDE.mdを対応リストに挙げているのは、Copilot cloud agentとCopilot CLIです。
どちらの記述が実際の挙動に近いかは、手元の設定で確かめるのが確実です。CLAUDE.mdに@AGENTS.mdと書く構成では、LocalエージェントがAGENTS.mdとCLAUDE.mdの両方を読む可能性があります。VS Codeの説明には@インポートの扱いが書かれていないため、重複して読まれていないかはChatの参照一覧で確かめます。
ハーネスによって読むファイルが違い、.github/copilot-instructions.mdだけではClaude Codeに届きません。そこで、共有したい指示はAGENTS.mdを正本にします。複数のハーネスを使うチームは全員が対応する共通形式を使う、というVS Codeの考え方とも合います。
Claude Code側は、CLAUDE.mdがあるかどうかで動きが変わります。AGENTS.mdを直接読む機能はv2.1.277以降が必要です。
Claude Codeが読む指示ファイル(既定)
AGENTS.mdだけがある
作業ディレクトリとその上位にCLAUDE.md・.claude/CLAUDE.md・CLAUDE.local.mdが1つも無ければ、AGENTS.mdをそのまま読みます。対話セッションにはno CLAUDE.md found; AGENTS.md loaded: ...という行が出ます。
CLAUDE.mdもある
CLAUDE.mdだけを読み、AGENTS.mdは読みません。AGENTS.mdの内容を届けたいなら、CLAUDE.mdに@AGENTS.mdと書いてインポートします。
見落としやすいのがCLAUDE.local.mdです。個人用のCLAUDE.local.mdを1つ置いただけで「CLAUDE.mdがある」扱いになり、AGENTS.mdは読まれなくなります。両方を常に読ませたい場合は、/configのProject instructionsをclaude-md-and-agents-mdにします。この値は~/.claude/settings.jsonのpluginConfigs(agents-md@builtinのinstructionFiles)にも書けますが、プロジェクト側の設定ファイルに書くと無視されます。
Claude Code固有の指示も足したいときは、CLAUDE.mdから取り込む形にします。
CLAUDE.md
@AGENTS.md
## Claude Code向けの追加指示
- src/billing/配下の変更はplanモードで進めるClaude Code固有の追加指示が不要で、macOSかLinuxなら、シンボリックリンクでも同じ効果が得られます。
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サーバーを両方のツールから使いたい場合はそれぞれの形式で個別に設定する必要があります。
Claude Code側の.mcp.jsonは、手で書かなくてもコマンドで作れます。v2.1.285で空のディレクトリに対して実行した結果です。
claude mcp add --scope project --transport http github https://api.githubcopilot.com/mcp/--scopeの既定値はlocalなので、チームで共有するファイルにしたいときはprojectを明示します。出力はAdded HTTP MCP server github ... to project configで、実行したディレクトリに次の.mcp.jsonができました。
// .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のchat.mcp.discovery.enabledで検出元にClaude Desktop(claude-desktop)を選ぶと、Copilot ChatがそのClaude Desktopの設定を自動的に見つけて使えるようになります。ここで自動検出されるのはClaude Desktopの設定であり、Claude Codeの.mcp.jsonではない点に注意してください。両者は名前が似ていますが別製品で、設定ファイルも共有されません。なお、VS CodeのAgent Hostのセッションはルート直下の.mcp.jsonをポータブル形式として直接読みます。通常のCopilot Chatが読むとは書かれていません。
Copilot Chat自身も設定の置き場所が2つに割れています。プロジェクト直下の.vscode/mcp.jsonと、個人のsettings.jsonのどちらにも同じサーバーを書けますが、GitHub公式は「サーバーごとに使う場所は1つに絞ることを推奨する」「両方に追加すると競合や予期しない挙動を招く可能性がある」と明記しています。Copilot側の設定を書くときは、プロジェクト共有用と個人用のどちらか一方に統一しておくと、Claude Code側の.mcp.jsonとの重複管理と合わせて見通しがよくなります。
よくあるつまずき
- CopilotでCLAUDE.mdの内容が効かない: ステップ3のハーネスごとの読み分けを見ます。
- Claude CodeがAGENTS.mdを読まない: ステップ3の
CLAUDE.local.mdの項を見ます。 - Windowsでシンボリックリンクが作れない: ステップ3の末尾の
@AGENTS.md方式に切り替えます。 - MCPの認証が片方だけ失敗する: ステップ4の2ファイルの書き分けを見ます。
- 同じファイルが同時に編集される: ステップ1のエージェントモードの注意を見ます。
「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上で動く非同期エージェント)とも別の機能です。
VS Codeの中にも、Anthropic Claudeのハーネスがあります。Claude Agent SDKで動くセッションで、CLAUDE.mdと.claude/rulesを読みます。有効化の設定はgithub.copilot.chat.claudeAgent.enabledで、既定で有効です。VS Codeで併用する場合に最も取り違えやすい相手なので、Claude Code拡張機能のチャットパネルとは別物だと押さえておきます。「Copilotの中でClaudeモデルを動かす」構成と「ターミナルやVS CodeでClaude Codeそのものを動かす」構成は名前が紛らわしいので、どちらの話をしているか意識して使い分けてください。
まとめ
分かれ道は、Claude Code固有の指示が要るかどうかです。要らなければAGENTS.mdだけで足り、シンボリックリンクすら不要です。要るならCLAUDE.mdを置いて@AGENTS.mdを取り込み、その下に固有の指示を書き足します。MCPだけは指示ファイルのような一本化ができず、.mcp.jsonと.vscode/mcp.jsonの2か所を更新し続けることになります。