[BUG] /resume list shows wrong session names; duplicate-named entries are indistinguishable
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?
Summary
The /resume selector displays session names that do not match the underlying JSONL customTitle field, and when multiple JSONL files happen to share a customTitle, all of them become
indistinguishable in the UI — selecting any of them appears to open the same session.
## Symptoms
In a single project directory with these three JSONL files:
| File (sessionId) | customTitle in JSONL (first line) | Shown in /resume |
|---|---|---|
| 6362ac7e-… | BS_tenant_configuration | my_session_name (wrong!) |
| f176364d-… | my_session_name | my_session_name |
| c05e80c5-… | my_session_name | my_session_name |
Two things are wrong:
- Mismatch — File
6362ac7eactually has"customTitle":"BS_tenant_configuration"as its first record, but/resumeshows it under a completely different name. The UI is not
reading the title from the file's own custom-title record, or it is reading a stale index/cache.
- Collapse — The three list entries that share a name behave as the same session. Selecting any of the duplicates opens the same content, so the user has no way to navigate to the
other two underlying files.
## Expected
- Each JSONL file's listing label should be derived from that file's own
customTitle(or a default like first prompt / sessionId if absent). - Each list entry must be selectable independently, even when two share a
customTitle. A subtitle/suffix (timestamp, sessionId prefix, message count) would disambiguate visually.
## Actual
- Names appear copied across unrelated sessions.
- Duplicate-named entries collapse onto one session, hiding the others from the user.
## Repro context
This combined with issue #59237 makes recovering a renamed session after /clear impossible from the UI — the only workaround is claude --resume <full-uuid> from a terminal.
## Environment
- Claude Code v2.1.141
- OS: Windows 11 Pro 26200
What Should Happen?
- Each JSONL file's listing label should be derived from that file's own
customTitle(or a default like first prompt / sessionId if absent). - Each list entry must be selectable independently, even when two share a
customTitle. A subtitle/suffix (timestamp, sessionId prefix, message count) would disambiguate visually.
Error Messages/Logs
Steps to Reproduce
Steps to reproduce
Part A — duplicate-named entries collapse (reliably reproducible)
- In project directory
P, start a session. Run/rename foo. Send a couple of messages. - Run
/clearwith no argument.
(This triggers issue #<ID-of-Issue-1>: the new session's JSONL inherits customTitle: "foo".)
- Send another message in the new session. Quit.
- Run
claude --resume(or/resume).
Expected: the two JSONL files appear as two distinguishable entries.
Observed: two entries both labeled foo. Selecting either one opens the same conversation; the other file is unreachable from the UI.
Part B — label mismatch (observed in user state, exact trigger unknown)
In my project directory I additionally have an older JSONL file (created several days earlier in a separate CLI run, v2.1.140) whose first record reads:
{"type":"custom-title","customTitle":"bar","sessionId":"6362ac7e-…"}
Despite this, /resume lists this file under the name foo together with the two entries from Part A — three entries, all labeled foo, even though one of the underlying files contains
a different customTitle.
I cannot give a minimal repro for Part B from a clean state; possible causes worth investigating:
- A cached/indexed name list that gets stale-written when a new session's
customTitleis created. - The resume picker reading the title from a global/most-recent source instead of per-file.
- File-mtime-based propagation (the older file may have been touched by something that overwrote its displayed title).
The three actual JSONL files from the failing state are available on request.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
v2.1.141
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗