From 16c06e5a8a7e5a683713ec2bfa8ceda9183ada28 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Tue, 18 Nov 2025 20:02:25 +0000 Subject: [PATCH] Fix error in handling Copilot CLI edits (#2064) --- .../extension/agents/copilotcli/node/copilotcliSession.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/extensions/copilot/src/extension/agents/copilotcli/node/copilotcliSession.ts b/extensions/copilot/src/extension/agents/copilotcli/node/copilotcliSession.ts index 785333bb6da..074c65d6891 100644 --- a/extensions/copilot/src/extension/agents/copilotcli/node/copilotcliSession.ts +++ b/extensions/copilot/src/extension/agents/copilotcli/node/copilotcliSession.ts @@ -281,13 +281,12 @@ export class CopilotCLISession extends DisposableStore implements ICopilotCLISes } } - let toolCall: ToolCall | undefined; - if (workingDirectory && permissionRequest.kind === 'write') { + const editFile = permissionRequest.kind === 'write' ? Uri.file(permissionRequest.fileName) : undefined; + const toolCall = editFile ? getEditKeyForFile(editFile) : undefined; + if (workingDirectory && permissionRequest.kind === 'write' && editFile) { // TODO:@rebornix @lszomoru // If user is writing a file in the working directory configured for the session, AND the working directory is not a workspace folder, // auto-approve the write request. Currently we only set non-workspace working directories when using git worktrees. - const editFile = Uri.file(permissionRequest.fileName); - toolCall = getEditKeyForFile(editFile); const isWorkspaceFile = this.workspaceService.getWorkspaceFolder(editFile); const isWorkingDirectoryFile = !this.workspaceService.getWorkspaceFolder(Uri.file(workingDirectory)) && extUriBiasedIgnorePathCase.isEqualOrParent(editFile, Uri.file(workingDirectory)); @@ -324,7 +323,6 @@ export class CopilotCLISession extends DisposableStore implements ICopilotCLISes if (await permissionHandler(permissionRequest, toolCall, token)) { // If we're editing a file, start tracking the edit & wait for core to acknowledge it. - const editFile = permissionRequest.kind === 'write' ? Uri.file(permissionRequest.fileName) : undefined; if (editFile && toolCall && this._stream) { this.logService.trace(`[CopilotCLISession] Starting to track edit for toolCallId ${toolCall.toolCallId} & file ${editFile.fsPath}`); await editTracker.trackEdit(toolCall.toolCallId, [editFile], this._stream);