[BUG] VSCode extension: Markdown links with multibyte characters in path or anchor are not clickable

Resolved 💬 2 comments Opened Apr 20, 2026 by nyamadori Closed Apr 20, 2026

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:

  1. Case A — Japanese path + Japanese anchor:

[S10 タスク作成画面](docs/仕様/画面フロー.md#s10-タスク作成画面)
Occurs when linking to a section inside a Japanese-named documentation file.

  1. 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

  1. Create a file at a Japanese-named path, e.g., docs/仕様/画面フロー.md, with a heading ### S10 タスク作成画面.
  2. In a Claude Code chat, have Claude return a link to that section: [S10 タスク作成画面](docs/仕様/画面フロー.md#s10-タスク作成画面).
  3. Click the link in the response pane. Nothing happens.
  4. 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗