Skip to content

Commit 3f8c263

Browse files
Improve fetch webpage tool security messaging to clarify risks instead of labeling URLs as "untrusted" (microsoft#250048)
* Initial plan for issue * Update fetch webpage tool confirmation dialog to clarify security risks - Remove "untrusted" language from dialog titles - Add explicit warning about malicious code and prompt injection attacks - Update both singular and plural confirmation messages - Use MarkdownString for better formatting of warning messages Co-authored-by: TylerLeonhardt <[email protected]> * Replace emoji with info codicon in fetch webpage tool security warning Co-authored-by: TylerLeonhardt <[email protected]> * Separate localization strings from formatting in fetch webpage tool Co-authored-by: TylerLeonhardt <[email protected]> * add support Theme icons --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: TylerLeonhardt <[email protected]> Co-authored-by: Tyler Leonhardt <[email protected]>
1 parent c3a26a6 commit 3f8c263

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/vs/workbench/contrib/chat/electron-sandbox/tools/fetchPageTool.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,19 @@ export class FetchWebPageTool implements IToolImpl {
138138
let confirmationTitle: string;
139139
let confirmationMessage: string | MarkdownString;
140140
if (urlsNeedingConfirmation.length === 1) {
141-
confirmationTitle = localize('fetchWebPage.confirmationTitle.singular', 'Fetch untrusted web page?');
142-
confirmationMessage = urlsNeedingConfirmation[0].toString();
141+
confirmationTitle = localize('fetchWebPage.confirmationTitle.singular', 'Fetch web page?');
142+
confirmationMessage = new MarkdownString(
143+
urlsNeedingConfirmation[0].toString() + '\n\n$(info) ' +
144+
localize('fetchWebPage.confirmationMessage.singular', 'Web content may contain malicious code or attempt prompt injection attacks.'),
145+
{ supportThemeIcons: true }
146+
);
143147
} else {
144-
confirmationTitle = localize('fetchWebPage.confirmationTitle.plural', 'Fetch untrusted web pages?');
145-
confirmationMessage = new MarkdownString(urlsNeedingConfirmation.map(uri => `- ${uri.toString()}`).join('\n'));
148+
confirmationTitle = localize('fetchWebPage.confirmationTitle.plural', 'Fetch web pages?');
149+
confirmationMessage = new MarkdownString(
150+
urlsNeedingConfirmation.map(uri => `- ${uri.toString()}`).join('\n') + '\n\n$(info) ' +
151+
localize('fetchWebPage.confirmationMessage.plural', 'Web content may contain malicious code or attempt prompt injection attacks.'),
152+
{ supportThemeIcons: true }
153+
);
146154
}
147155
result.confirmationMessages = { title: confirmationTitle, message: confirmationMessage, allowAutoConfirm: true };
148156
}

0 commit comments

Comments
 (0)