Change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: see below, pulled from the "Help About" dialog. Also confirmed in 1.71.2. OS Version: see below, pulled from the "Help About" dialog. Steps to Reproduce: above VSCode Insiders build. (Instructions don't require system path to be updated.) a directory in WSL, say . , where is the distro of your choice. the WSL extension as prompted and reload. the editor and run , where is the distro of your choice. (Steps 2-4 were just to initialize some VSCode state.) a new file in that directory with the following contents: restart editor. (Works either way.) over above. tooltip will appear with "some thing linking Foo" where is hyperlinked. Click the hyperlink in the tooltip. attempts to open a file at the path in the parent Windows OS, outside of any WSL distro. Note that this reproduces both with the WSL extension enabled the whole time (skipping step 5) and with it disabled at step 5.
Did this get missed?
I have the same issue with VSCode running in WSL2 (Ubuntu)
Same issue here, using a remote connection to a VM running on Hyper-V. Host OS is Windows, guest OS is Ubuntu 22.04. It only happens when clicking the link in the tooltip. Using directly in the editor works as expected.
Still seeing this issue. Looking forward to this getting resolved soon.
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!

Discussion:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import { PluginManager } from '../tsServer/plugins'; </ins> import TypeScriptServiceClientHost from '../typeScriptServiceClientHost'; import { ActiveJsTsEditorTracker } from '../ui/activeJsTsEditorTracker'; import { Lazy } from '../utils/lazy'; <del> import { PluginManager } from '../tsServer/plugins'; </del> import { CommandManager } from './commandManager'; import { ConfigurePluginCommand } from './configurePlugin'; import { JavaScriptGoToProjectConfigCommand, TypeScriptGoToProjectConfigCommand } from './goToProjectConfiguration'; import { LearnMoreAboutRefactoringsCommand } from './learnMoreAboutRefactorings'; <ins> import { OpenJsDocLinkCommand } from './openJsDocLink'; </ins> import { OpenTsServerLogCommand } from './openTsServerLog'; import { ReloadJavaScriptProjectsCommand, ReloadTypeScriptProjectsCommand } from './reloadProject'; import { RestartTsServerCommand } from './restartTsServer';

commandManager.register(new ConfigurePluginCommand(pluginManager)); commandManager.register(new LearnMoreAboutRefactoringsCommand()); commandManager.register(new TSServerRequestCommand(lazyClientHost)); <ins> commandManager.register(new OpenJsDocLinkCommand()); </ins> }

<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; import { Command } from './commandManager'; export interface OpenJsDocLinkCommand_Args { readonly file: vscode.Uri; readonly position: vscode.Position; } /** * Proxy command for opening links in jsdoc comments. * * This is needed to avoid incorrectly rewriting uris. */ export class OpenJsDocLinkCommand implements Command { public static readonly id = '_typescript.openJsDocLink'; public readonly id = OpenJsDocLinkCommand.id; public async execute(args: OpenJsDocLinkCommand_Args): Promise<void> { await vscode.commands.executeCommand('vscode.open', vscode.Uri.from(args.file), <vscode.TextDocumentShowOptions>{ selection: new vscode.Range(args.position, args.position), }); } } </ins>

*--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; <ins> import { OpenJsDocLinkCommand, OpenJsDocLinkCommand_Args } from '../../commands/openJsDocLink'; </ins> import type * as Proto from '../../tsServer/protocol/protocol'; <ins> import * as typeConverters from '../../typeConverters'; </ins> export interface IFilePathToResourceConverter { /**

case 'link': if (currentLink) { if (currentLink.target) { <del> const link = filePathConverter.toResource(currentLink.target.file) .with({ fragment: `L${currentLink.target.start.line},${currentLink.target.start.offset}` }); </del> <ins> const file = filePathConverter.toResource(currentLink.target.file); const args: OpenJsDocLinkCommand_Args = { file: { ...file.toJSON(), $mid: undefined }, // Prevent VS Code from trying to transform the uri, position: typeConverters.Position.fromLocation(currentLink.target.start) }; const command = `command:${OpenJsDocLinkCommand.id}?${encodeURIComponent(JSON.stringify([args]))}`; </ins> const linkText = currentLink.text ? currentLink.text : escapeMarkdownSyntaxTokensForCode(currentLink.name ?? ''); <del> out.push(`[${currentLink.linkcode ? '`' + linkText + '`' : linkText}](${link.toString()})`); </del> <ins> out.push(`[${currentLink.linkcode ? '`' + linkText + '`' : linkText}](${command})`); </ins> } else { const text = currentLink.text ?? currentLink.name; if (text) {

const out = new vscode.MarkdownString(); appendDocumentationAsMarkdown(out, documentation, tags, filePathConverter); out.baseUri = baseUri; <ins> out.isTrusted = { enabledCommands: [OpenJsDocLinkCommand.id] }; </ins> return out; }

out.appendMarkdown('nn' + tagsPreview); } } <ins> out.isTrusted = { enabledCommands: [OpenJsDocLinkCommand.id] }; </ins> return out; }

{ "text": "}", "kind": "link" }, { "text": " b", "kind": "text" } ], noopToResource), <del> 'a [`dog`](file:///path/file.ts#L7%2C5) b'); </del> <ins> 'a [`dog`](command:_typescript.openJsDocLink?%5B%7B%22file%22%3A%7B%22path%22%3A%22%2Fpath%2Ffile.ts%22%2C%22scheme%22%3A%22file%22%7D%2C%22position%22%3A%7B%22line%22%3A6%2C%22character%22%3A4%7D%7D%5D) b'); </ins> }); test('Should render @linkcode text as code', async () => {

{ "text": "}", "kind": "link" }, { "text": " b", "kind": "text" } ], noopToResource), <del> 'a [`husky`](file:///path/file.ts#L7%2C5) b'); </del> <ins> 'a [`husky`](command:_typescript.openJsDocLink?%5B%7B%22file%22%3A%7B%22path%22%3A%22%2Fpath%2Ffile.ts%22%2C%22scheme%22%3A%22file%22%7D%2C%22position%22%3A%7B%22line%22%3A6%2C%22character%22%3A4%7D%7D%5D) b'); </ins> }); });

return true; } else if (thing && typeof thing === 'object') { return typeof (<IMarkdownString>thing).value === 'string' <del> && (typeof (<IMarkdownString>thing).isTrusted === 'boolean' || (<IMarkdownString>thing).isTrusted === undefined) </del> <ins> && (typeof (<IMarkdownString>thing).isTrusted === 'boolean' || typeof (<IMarkdownString>thing).isTrusted === 'object' || (<IMarkdownString>thing).isTrusted === undefined) </ins> && (typeof (<IMarkdownString>thing).supportThemeIcons === 'boolean' || (<IMarkdownString>thing).supportThemeIcons === undefined); } return false;