[BUG] VSCode extension: Markdown links with multibyte characters in path or anchor are not clickable
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
In the Claude Code VSCode native extension, Markdown links that Claude returns in its responses are not clickable when the file path or the anchor fragment contains multibyte characters (e.g., Japanese, Korean, Chinese). Clicking does nothing — no navigation, no error.
This breaks a core workflow for non-English codebases: Claude Code's system prompt instructs Claude to reference files using [text](path) Markdown links so users can jump to them. When project documentation lives under Japanese-named paths with Japanese headings, every file reference Claude produces is a dead link.
Two real-world cases that need to work:
- Case A — Japanese path + Japanese anchor:
[S10 タスク作成画面](docs/仕様/画面フロー.md#s10-タスク作成画面)
Occurs when linking to a section inside a Japanese-named documentation file.
- Case B — ASCII path + Japanese anchor:
[S10 タスク作成画面](docs/spec/screen-flow.md#s10-タスク作成画面)
Occurs when a team uses English file names but writes content (and thus headings) in Japanese — a very common hybrid convention. The anchor here follows the heading-to-anchor rule shared by Markdown renderers including VSCode's built-in preview and GitHub, which preserves the multibyte characters.
Both cases fail. Case B is especially important because it demonstrates the bug is not just about paths — any multibyte character in either the path or the anchor breaks the link.
---
Isolation — the bug is specific to the extension's link handler
| Environment | Multibyte links work? |
| ----------------------------------- | --------------------- |
| Claude Code VSCode extension | No |
| VSCode built-in Markdown preview | Yes |
| GitHub web UI | Yes |
Same Markdown, same file, same anchor — only the Claude Code extension fails. This rules out the file, the Markdown itself, the filesystem, and VSCode core.
---
Variable isolation across link forms
Systematic variations to isolate which component (path vs. anchor) fails. Cases A and B above are the user-facing failures; the other rows pin down the cause. The target is a file at docs/仕様/画面フロー.md with a heading ### S10 タスク作成画面 at line 15. ASCII-path variants use a copy at docs/spec/screen-flow.md:
| # | Link | Works? |
| - | --------------------------------------------------------------------------------- | ------ |
| 1 | [S10](docs/仕様/画面フロー.md#s10-タスク作成画面) (= Case A) | No |
| 2 | [S10](docs/%E4%BB%95%E6%A7%98/%E7%94%BB%E9%9D%A2%E3%83%95%E3%83%AD%E3%83%BC.md#s10-%E3%82%BF%E3%82%B9%E3%82%AF%E4%BD%9C%E6%88%90%E7%94%BB%E9%9D%A2) (#1 URL-encoded) | No |
| 3 | [S10](docs/仕様/画面フロー.md#L15) (Japanese path, ASCII line-number anchor) | No |
| 4 | [screen-flow.md](docs/仕様/screen-flow.md) (Japanese parent dir, ASCII file) | No |
| 5 | [screen-flow.md](docs/spec/screen-flow.md) (all ASCII) | Yes |
| 6 | [L15](docs/spec/screen-flow.md#L15) (all ASCII with anchor) | Yes |
| 7 | [S10](docs/spec/screen-flow.md#s10-タスク作成画面) (= Case B) | No |
We tested both Japanese-text anchors (#1, #7) and ASCII #L15 anchors (#3, #6) to isolate which side fails. The result: any single multibyte character anywhere in the path or the anchor breaks the link (#2 shows URL-encoding does not help either).
What Should Happen?
Clicking the link should open the target file (and jump to the anchor if specified), matching the behavior of VSCode's built-in Markdown preview (Cmd+Shift+V) on the same file. The built-in preview handles both Case A and Case B above correctly; the extension's link handler should behave the same way.
Error Messages/Logs
(No error messages; clicking the link silently produces no response)
Steps to Reproduce
- Create a file at a Japanese-named path, e.g.,
docs/仕様/画面フロー.md, with a heading### S10 タスク作成画面. - In a Claude Code chat, have Claude return a link to that section:
[S10 タスク作成画面](docs/仕様/画面フロー.md#s10-タスク作成画面). - Click the link in the response pane. Nothing happens.
- Open the same file in VSCode's built-in Markdown preview and click the same anchor link — it works.
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.114 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
Note: this bug is about the Claude Code chat panel in the VSCode native extension, not the integrated terminal. The Terminal/Shell dropdown does not have a matching option.
Not limited to Japanese. The issue reproduces with any multibyte character. I ran the same 7-pattern matrix with Korean (Hangul) paths and anchors (docs/사양/화면흐름.md, heading ### S10 작업 생성 화면) and got identical results: only the all-ASCII patterns (#5, #6) worked.
Suggested direction for the fix: Match the behavior of VSCode's built-in Markdown preview, which resolves multibyte paths and anchors against the workspace correctly. The extension's link handler diverges from that behavior.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗