From 95a55ff511ec9b82feef3caedd03cf5d0ae81af4 Mon Sep 17 00:00:00 2001 From: Shaojin Wen Date: Sun, 18 Oct 2026 13:01:21 +0800 Subject: [PATCH] fix(acp-bridge): forget a replaced child's runtime MCP servers (#14527) Names recorded on channel A survived a replace to channel B until the next hasRuntimeMcpServers() call. An add on B then adopted them, so removing B's own server still reported the runtime as holding one. Clear the set when the live child changes before recording a new name. Refs #14488 --- packages/acp-bridge/src/session-control-plane.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/acp-bridge/src/session-control-plane.ts b/packages/acp-bridge/src/session-control-plane.ts index c4e5403b95..106b1eface 100644 --- a/packages/acp-bridge/src/session-control-plane.ts +++ b/packages/acp-bridge/src/session-control-plane.ts @@ -16173,7 +16173,12 @@ export function createSessionControlPlane( const addSkipped = (response as { skipped?: boolean }).skipped === true; if (!addSkipped) { const ok = response as AddOk; - runtimeMcpServerChannelId = info.id; + // Names recorded on a replaced child are gone with it; do not let + // a later add on the new child inherit them. + if (runtimeMcpServerChannelId !== info.id) { + runtimeMcpServerNames.clear(); + runtimeMcpServerChannelId = info.id; + } runtimeMcpServerNames.add(ok.name); broadcastWorkspaceEvent({ type: 'mcp_server_added',