From 289b95b8b6ffb842af524b2c07511b02e2accf57 Mon Sep 17 00:00:00 2001 From: Justin Chen <54879025+justschen@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:55:57 -0700 Subject: [PATCH] fix subagent tool id mismatch (#303580) --- .../chat/common/tools/builtinTools/runSubagentTool.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts b/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts index 16ae908fb53..12daaa059da 100644 --- a/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts +++ b/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts @@ -215,8 +215,10 @@ export class RunSubagentTool extends Disposable implements IToolImpl { // Track whether we should collect markdown (after the last tool invocation) const markdownParts: string[] = []; - // Generate a stable subAgentInvocationId for routing edits to this subagent's content part - const subAgentInvocationId = invocation.callId ?? `subagent-${generateUuid()}`; + // Generate a stable subAgentInvocationId for routing edits to this subagent's content part. + // Use chatStreamToolCallId when available because that is what ChatToolInvocation.toolCallId + // uses in the renderer (see PR #302863), and the subagent grouping matches on toolCallId. + const subAgentInvocationId = invocation.chatStreamToolCallId ?? invocation.callId ?? `subagent-${generateUuid()}`; let inEdit = false; const progressCallback = (parts: IChatProgress[]) => { @@ -306,7 +308,7 @@ export class RunSubagentTool extends Disposable implements IToolImpl { message: args.prompt, variables: { variables: variableSet.asArray() }, location: ChatAgentLocation.Chat, - subAgentInvocationId: invocation.callId, + subAgentInvocationId: subAgentInvocationId, subAgentName: subAgentName, userSelectedModelId: modeModelId, modelConfiguration: modeModelId ? this.languageModelsService.getModelConfiguration(modeModelId) : undefined,