github / github/copilot-cli

MCP reload reuses startup workspace config after .github/mcp.json changes

オープン
#4,562 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

area:configuration area:mcp
主要言語
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

  1. Create .github/mcp.json in 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": ["*"]
        }
      }
    }
    
  2. Start Copilot CLI in that workspace. The server exits during initialization and its stderr contains OLD_CONFIG.

  3. Without exiting Copilot CLI, change only OLD_CONFIG to NEW_CONFIG in .github/mcp.json.

  4. Open /mcp and reload/restart the MCP servers.

  5. 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.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。