Desktop app: /resume shows every session as "Untitled session" with no preview
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?
What happens
In the desktop app, /resume lists every past session as "Untitled session". The preview
pane on the right says "Couldn't load the preview." for all of them. The only thing that
tells one row from another is its timestamp.
The same sessions show correct titles in the VS Code extension, and in the desktop app's own
sidebar.
Environment
- Windows 11
- Claude desktop app, Code tab
- CLI bundled with the app: 2.1.260, at
%APPDATA%\Claude\claude-code\2.1.260\claude.exe - VS Code extension: 2.1.266
The titles are already on disk
Session transcripts under ~/.claude/projects/<folder>/*.jsonl carry title records:
{"type":"ai-title","sessionId":"...","aiTitle":"..."}
{"type":"custom-title","sessionId":"...","customTitle":"..."}
{"type":"last-prompt","sessionId":"...","lastPrompt":"..."}
In one project folder holding 84 transcripts, 75 have an ai-title record, 15 have acustom-title record, and 81 have a last-prompt record. Across all my project folders,
147 transcripts, not one contains a {"type":"summary"} line.
The resume dialog shows every one of them as untitled.
The app's own stored titles are ignored too
The desktop app keeps a record per session at%APPDATA%\Claude\claude-code-sessions\<account>\<org>\local_<uuid>.json. Each record has atitle field and a cliSessionId field pointing at the transcript.
One of my sessions has such a record, with a title the app generated itself and shows
correctly in the sidebar. That same session appears as "Untitled session" in /resume. So
the dialog reads neither the transcript records nor the app's own store.
Where the two strings come from
Neither string is in the CLI that the app bundles. Counting plain string matches inclaude.exe 2.1.260:
| String | Matches |
| --- | --- |
| aiTitle | 14 |
| lastPrompt | 6 |
| Untitled session | 0 |
| Couldn't load the preview | 0 |
The CLI knows about the title fields and never emits either string. Both come from the app's
own interface, so updating the CLI does not help.
What the VS Code extension does instead
extension.js in 2.1.266 builds each history row's label as:
title = customTitle || aiTitle || lastPrompt || summary || firstPrompt
It reads the head and tail of each transcript, and falls back to the first user message when
no title record is present. That is why its history list reads correctly against the same
files.
What Should Happen?
Expected
The resume dialog should fall back the same way: the app's stored title, then custom-title,ai-title, last-prompt, then the first user message. Any one of those four would have
produced a usable label for all 84 of my sessions.
Error Messages/Logs
Steps to Reproduce
Steps to reproduce
- Run some sessions from the VS Code extension so transcripts build up in a project folder.
- Open the same folder in the desktop app.
- Run
/resumeand pick "This folder".
Every row reads "Untitled session", and the preview pane fails to load for each one.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.263
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
_No response_