From 022b99f2cf22f85328a8f7f55c861a290955ae93 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 09:46:28 +0000 Subject: [PATCH 1/2] Initial plan From df29960977477d40fd6e6067ce9fd334176e0db5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 10:41:23 +0000 Subject: [PATCH 2/2] fix: properly escape string titles in confirmation widget to preserve backslashes The BaseChatConfirmationWidget was embedding plain string titles directly as raw markdown via `new MarkdownString(rawValue)`. This caused backslashes in Windows paths to be interpreted as markdown escape characters (e.g., `\:` becomes `:`), stripping path separators from the display. Fix: use `appendText()` for string titles (which escapes markdown syntax characters) and `appendMarkdown()` for IMarkdownString titles (preserving existing markdown). The icon is always added via `appendMarkdown()`. Fixes microsoft/vscode#252657 Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/fcbf82c6-2113-4f78-832d-830ce949d7c0 Co-authored-by: hediet <2931520+hediet@users.noreply.github.com> --- .../widget/chatContentParts/chatConfirmationWidget.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.ts index 5eaf2de7198c9..a52b00c19a95b 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.ts @@ -335,10 +335,19 @@ abstract class BaseChatConfirmationWidget extends Disposable { this._domNode = elements.root; this._buttonsDomNode = elements.buttons; + const titleMd = new MarkdownString('', { supportThemeIcons: true }); + if (icon) { + titleMd.appendMarkdown(`$(${icon.id}) `); + } + if (typeof title === 'string') { + titleMd.appendText(title); + } else { + titleMd.appendMarkdown(title.value); + } this._register(instantiationService.createInstance( ChatQueryTitlePart, elements.title, - new MarkdownString(icon ? `$(${icon.id}) ${typeof title === 'string' ? title : title.value}` : typeof title === 'string' ? title : title.value), + titleMd, subtitle, ));