VS Code: externally-appended custom-title isn't re-read on tab activation (only a window reload applies it)
Summary. When a {"type":"custom-title",...} record is appended to a session transcript (~/.claude/projects/<proj>/<sid>.jsonl) by an external process, the VS Code extension does not apply it to the tab label until the whole window is reloaded. Even activating the tab (clicking it, or switching away and back) does not trigger a re-read for a tab that was opened via the vscode://anthropic.claude-code/open?prompt=... deep link.
Environment. VS Code (stable) + Claude Code extension 2.1.220, Windows 11.
Steps to reproduce.
- Open a Claude Code tab via the
vscode://anthropic.claude-code/open?prompt=...deep link (the tab gets a prompt-derived title). - Append a
{"type":"custom-title","customTitle":"<new title>","sessionId":"<sid>"}line to that session's.jsonl. - The tab label does not change - not on its own, and not when the tab is activated.
- Only Developer: Reload Window makes the extension pick up the new title.
What I verified (UI-Automation-driven experiment on Windows):
- A genuine tab activation - confirmed by VS Code's tab selection moving (
SelectionItemPattern.IsSelectedflipped) - does not cause a re-read. - 6 rounds of fresh
custom-titlewrites followed by real activations left the rendered tab label unchanged (0/6). - The record sits ~28 KB from EOF, well inside the last 64 KB, so this is not a tail-scan eviction.
- The installed extension contributes no rename/refresh command that an external tool could invoke.
Impact. External tooling that renames tabs by writing custom-title to the transcript (a fairly common pattern) cannot get the new title to render without forcing a full, state-destroying window reload.
Request. Either:
- (a) file-watch the active transcript and apply the newest
custom-titlereactively, or - (b) expose a command (e.g.
claude-code.refreshSessionTitle) that forces a re-read for a given session,
so an external tool can update a tab title without a disruptive window reload.
Related: #33165 (programmatic session rename API), #46432 (manual refresh for sessions).