MCP reload reuses startup workspace config after .github/mcp.json changes
まだ誰も着手していません。
- 主要言語
- Shell
- スター
- 11.2k
- フォーク
- 1.9k
- 平均マージ
- 14時間 16分
- マージ済み PR(30日)
- 6
説明
Describe the bug
Copilot CLI keeps using the MCP configuration snapshot loaded when the session started. If a workspace MCP server fails to initialize and .github/mcp.json is corrected while the session remains open, reloading/restarting MCP servers retries the old command instead of reading the updated file.
The on-disk file contains the corrected command, but reload diagnostics report that the configuration signature is unchanged and launch the original command again.
Affected version
- Copilot CLI: 1.0.81-7
- Platform: Windows
- MCP transport: stdio
Steps to reproduce
-
Create
.github/mcp.jsonin a workspace with a deliberately observable failing server:{ "mcpServers": { "config-probe": { "type": "stdio", "command": "python", "args": [ "-c", "import sys; print('OLD_CONFIG', file=sys.stderr)" ], "tools": ["*"] } } } -
Start Copilot CLI in that workspace. The server exits during initialization and its stderr contains
OLD_CONFIG. -
Without exiting Copilot CLI, change only
OLD_CONFIGtoNEW_CONFIGin.github/mcp.json. -
Open
/mcpand reload/restart the MCP servers. -
Inspect the MCP status and session log.
Expected behavior
Reload should reread .github/mcp.json, compute a new configuration signature, and launch the command containing NEW_CONFIG.
Actual behavior
Reload keeps the startup signature and launches the original command containing OLD_CONFIG. In the observed session, the equivalent diagnostics were:
mcp discover_and_start_root {
"signature_matches": true,
"previous_signature": "...old command...",
"signature": "...old command..."
}
mcp unchanged reload reuses live graph
MCP server stderr: ...old command output...
Recorded failure for server config-probe
The file on disk already contained the new command when these messages were recorded.
This also occurs when replacing a nonexistent relative launcher path with a valid absolute path and adding an environment override: subsequent reloads continue retrying the original relative path.
Impact
A user cannot repair a failed workspace MCP server without terminating and relaunching Copilot CLI. The reload/restart action appears to run, but it retries stale settings, which makes configuration troubleshooting confusing.
Workaround
Exit Copilot CLI completely and start a new process after editing the workspace MCP configuration.
Related issues
- #2198 covered workspace MCP configuration not loading at startup; that issue was fixed by making reload discover the config. This report is the inverse: startup discovers the config, but reload does not observe later edits.
- #4542 covers workspace configuration being detected but not wired into newly started sessions. This report concerns in-session configuration refresh after the server was already discovered.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
.github/mcp.json、/mcp reload/restart アクション、およびセッションログを使って、まず問題を再現します。OLD_CONFIG を NEW_CONFIG に変更する前後で、設定シグネチャと起動されたコマンドを比較します。完了とは、reload が編集済みのファイルを検出し、Copilot CLI を再起動せずに新しいコマンドでサーバーを起動することです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python, shell
- 領域
- cli, tooling
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100