Problem
當 /plugin-tools:plugin-update <plugin> bump 一個 binary-based plugin 的 shell version(例如 che-apple-mail-mcp 從 2.16.x → 2.17.x),current Claude Code session 內 running 的 MCP server 不會偵測到這次 bump,因為 MCP wrapper 只在 spawn 時跑一次 version check(exec 之後 wrapper 已退場,binary 自身沒 polling)。
→ 結果:user 跑完 plugin-update 後,當下 session 的 MCP 仍跑舊 in-memory binary,任何依賴新 fix 的 flow(e.g. /archive-mail 依賴 #72 fix in v2.7.1)會繼續踩舊 bug,直到 user 主動重啟 Claude Code。
完整 root-cause 分析見 PsychQuant/che-apple-mail-mcp#76(那邊 fix 的是 wrapper / hook 端;這個 issue 是 sender-side 的修護:plugin-update 自己應該負責通知 user)。
Reproduction
- T0:Claude Code 啟 session,
che-apple-mail-mcp MCP spawn(載入 binary v2.7.0 進 memory)
- T1:
/mcp-tools:mcp-deploy che-apple-mail-mcp cut v2.7.1 release
- T2:
/plugin-tools:plugin-update che-apple-mail-mcp bump plugin.json + sync marketplace
- T3:
plugin-update 結束,終端沒有任何提示告訴 user「running MCP 仍是舊版,請重啟 Claude Code」
- T4:user 在同 session 跑
/archive-mail → 仍踩 v2.7.0 的 bug → 困惑「明明 fix 了為什麼還壞」
實測就是 2026-05-09 #72 incident。
Expected
plugin-tools:plugin-update 完成 bump 後,在 Phase 1.5 binary dependency 偵測到該 plugin 是 binary-based 時,結尾主動:
(a) 印 stderr 警告 ⚠ MCP binary <name> updated. Restart Claude Code to load new version.
(b) 列出 stale PIDs(ps aux | grep <BinaryName>)讓 user 看到要 kill 哪些 process
(c)(可選,高侵入)直接 pkill -f <BinaryName> 自動清掉 — 但會中斷其他 session 的 in-flight 操作,不適合 default behavior
最小可接受版本:(a) + (b),non-destructive,把 staleness 的存在 surface 給 user。
Actual
Plugin-update 跑完只 echo "✓ marketplace synced",沒有任何關於 running MCP 的提示。User 必須自己記得「binary plugin 更新後要重啟」。
Type
enhancement(low-friction usability fix;non-destructive)
Impact
| 範圍 |
嚴重度 |
| 影響的 binary-based plugins |
che-apple-mail-mcp / che-telegram-mcp / che-word-mcp / 等 ~10 個 plugin |
| 影響的 user flow |
任何 plugin-update 後立即要使用該 plugin 的 session |
| 嚴重度 |
中 — 不會 silent data corruption,但會引發「以為 fix 了但實際沒生效」的 false 結論,浪費 round-trip |
Strategy
建議在 /plugin-tools:plugin-update 的 Phase 1.5(detect dependencies)加一個 post-step:從 plugin.json 或 .mcp.json 讀 binary name → pgrep -f "$BINARY_NAME" → 若有 stale PIDs 印警告 + 列 PID/started_at + 提示「restart Claude Code or kill 」。
Related
- Upstream root cause:PsychQuant/che-apple-mail-mcp#76 — wrapper 端不偵測 plugin.json bump
- Sister design issue:che-apple-mail-mcp#77 — sidecar tracks shell version 不是 binary version
Source
Surfaced during /idd-diagnose PsychQuant/che-apple-mail-mcp#76(Step 3.6 sister concern surfacing)。Diagnosis Recommendation 列了「plugin-tools repo(separate issue):plugin-update 結尾加 stderr 警告」,本 issue 履行該 follow-up。
Problem
當
/plugin-tools:plugin-update <plugin>bump 一個 binary-based plugin 的 shell version(例如che-apple-mail-mcp從 2.16.x → 2.17.x),current Claude Code session 內 running 的 MCP server 不會偵測到這次 bump,因為 MCP wrapper 只在 spawn 時跑一次 version check(exec之後 wrapper 已退場,binary 自身沒 polling)。→ 結果:user 跑完 plugin-update 後,當下 session 的 MCP 仍跑舊 in-memory binary,任何依賴新 fix 的 flow(e.g.
/archive-mail依賴 #72 fix in v2.7.1)會繼續踩舊 bug,直到 user 主動重啟 Claude Code。完整 root-cause 分析見 PsychQuant/che-apple-mail-mcp#76(那邊 fix 的是 wrapper / hook 端;這個 issue 是 sender-side 的修護:plugin-update 自己應該負責通知 user)。
Reproduction
che-apple-mail-mcpMCP spawn(載入 binary v2.7.0 進 memory)/mcp-tools:mcp-deploy che-apple-mail-mcpcut v2.7.1 release/plugin-tools:plugin-update che-apple-mail-mcpbump plugin.json + sync marketplaceplugin-update結束,終端沒有任何提示告訴 user「running MCP 仍是舊版,請重啟 Claude Code」/archive-mail→ 仍踩 v2.7.0 的 bug → 困惑「明明 fix 了為什麼還壞」實測就是 2026-05-09 #72 incident。
Expected
plugin-tools:plugin-update完成 bump 後,在 Phase 1.5 binary dependency 偵測到該 plugin 是 binary-based 時,結尾主動:(a) 印 stderr 警告
⚠ MCP binary <name> updated. Restart Claude Code to load new version.(b) 列出 stale PIDs(
ps aux | grep <BinaryName>)讓 user 看到要 kill 哪些 process(c)(可選,高侵入)直接
pkill -f <BinaryName>自動清掉 — 但會中斷其他 session 的 in-flight 操作,不適合 default behavior最小可接受版本:(a) + (b),non-destructive,把 staleness 的存在 surface 給 user。
Actual
Plugin-update 跑完只 echo "✓ marketplace synced",沒有任何關於 running MCP 的提示。User 必須自己記得「binary plugin 更新後要重啟」。
Type
enhancement(low-friction usability fix;non-destructive)
Impact
Strategy
建議在
/plugin-tools:plugin-update的 Phase 1.5(detect dependencies)加一個 post-step:從 plugin.json 或 .mcp.json 讀 binary name →pgrep -f "$BINARY_NAME"→ 若有 stale PIDs 印警告 + 列 PID/started_at + 提示「restart Claude Code or kill 」。Related
Source
Surfaced during
/idd-diagnose PsychQuant/che-apple-mail-mcp#76(Step 3.6 sister concern surfacing)。Diagnosis Recommendation 列了「plugin-toolsrepo(separate issue):plugin-update 結尾加 stderr 警告」,本 issue 履行該 follow-up。