[BUG] /rename title propagates to every subsequently created session in the project (macOS CLI)
Bug Description
A title set with /rename propagates to every session subsequently created in the same project directory. Over time this collapses the /resume picker into a list of dozens of identically-named sessions, which makes it impossible to find a specific past conversation by name.
This is the same defect as #68466, which was reported for the VS Code extension on Windows and auto-closed as stale (NOT_PLANNED) without a fix. This report is for the macOS CLI, with measured data from a real project directory.
Steps to Reproduce
- In a project directory, run
/rename some-namein a session. - Start a new session in the same directory (
claude). - Open
/resume.
The new session is listed as some-name rather than getting its own auto-generated title. Every session created afterwards gets the same name.
Measured impact
Counting the persisted titles across one project's transcripts (~/.claude/projects/<project>/*.jsonl, reading the last customTitle record in each file):
91 transcripts total
46 transcripts carry a customTitle
2 distinct titles among those 46
41 sessions "<title-A>"
5 sessions "<title-B>"
So two /rename invocations accounted for the titles of 46 separate conversations. 41 distinct conversations — spanning several days and unrelated tasks — are all named <title-A>.
The titles do not cluster by anything else either: the 41 sessions sharing <title-A> span multiple different bridge session ids, so this is not scoped to a single connection.
Expected Behavior
/rename sets the title of the current conversation only. A new conversation gets its own auto-generated title.
Actual Behavior
The renamed title becomes the default for every subsequently created session in that project directory, so /resume shows a wall of duplicates and the picker's search-by-name is useless for locating a specific conversation.
Why this matters beyond cosmetics
/resume and its search are the primary way to get back to a past conversation. When 41 sessions share one name, name-based search cannot narrow anything down, and the only reliable way back is to look up the session UUID by grepping the raw transcripts:
rg -l 'some unique string from that session' ~/.claude/projects/*/*.jsonl
claude -r <uuid-from-filename>
That works, but it means the built-in picker cannot be used for its main purpose.
Environment
- Claude Code 2.1.223
- macOS (Darwin 25.5.0), Apple Silicon
- CLI (not the VS Code extension)
Related
- #68466 — same defect, VS Code extension on Windows, closed as stale without a fix
- #65010 — manual rename overwritten by auto-titling (different manifestation)
- #83634 — desktop global search doesn't match renamed titles