[FEATURE] Feature Request: Add /title slash command to rename the current session
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Summary
Add a built-in /title <name> slash command to set a human-readable name for the current session, so users can find it later via /resume.
## Motivation
I do a lot of multi-day, multi-session work (long-running drafting, phased migrations, staged refactors). I frequently need to /resume the same conversation days later to continue. Session names today are auto-generated (one of mine landed
on episode-02-draft-revision — close, but not what I'd pick), and when the /resume list has dozens of entries, finding the right one becomes a hunt-and-peck through first-message previews and timestamps.
## Current behavior
- A
namefield already exists in session metadata at~/.claude/sessions/<pid>.json - Users can't edit it from the CLI
/resumeshows auto-generated names + first-message snippets- Only workarounds today:
- Manually edit the live session JSON (fragile, might be overwritten)
- Write an external breadcrumb file with the session UUID, then
claude --resume <uuid> - Rely on
history.jsonlgrep-search by keyword
None of these are discoverable for non-power-users.
## Proposed behavior
/title
When invoked:
- Updates the
namefield in the current session's metadata - Reflects the new name immediately in
/resumelist - Optionally adds a
"type": "summary"entry to the jsonl so the name is durable across restarts
Aliases to consider: /rename, /name.
## Benefits
- Long-running projects: clear tagging for multi-day work
- Multi-context users: easier to context-switch between "work / experimentation / debugging" sessions
- Handoff: "Open the session named X" is far nicer than sharing a UUID
- Zero impact on defaults: auto-generated names still apply if the user doesn't call
/title
## Alternatives considered
| Alternative | Why it's not enough |
|---|---|
| Manual JSON edit | Fragile (live file), requires knowing internals |
| External breadcrumb file | Adds friction, lives outside the tool |
| Git branch naming | Only works inside a repo, couples to VCS workflow |
| Rely on auto-generated names | User has no control when the auto name misses the point |
## Additional context
- Environment: Claude Code 2.1.119, macOS 24.5.0
- Similar UX in adjacent tools: ChatGPT has "Rename chat", Cursor supports session naming
---
Proposed Solution
Add a built-in slash command:
/title
Behavior when invoked:
- Updates the
namefield in the current session's metadata (~/.claude/sessions/<pid>.json) - Reflects the new name immediately in the
/resumelist - Optionally adds a
"type": "summary"entry to the session jsonl so the name persists across restarts
Aliases to consider: /rename, /name.
Zero impact on defaults — auto-generated session names still apply when the user doesn't call /title.
Alternative Solutions
Add a built-in slash command:
/title
Behavior when invoked:
- Updates the
namefield in the current session's metadata (~/.claude/sessions/<pid>.json) - Reflects the new name immediately in the
/resumelist - Optionally adds a
"type": "summary"entry to the session jsonl so the name persists across restarts
Aliases to consider: /rename, /name.
Zero impact on defaults — auto-generated session names still apply when the user doesn't call /title.
Priority
Critical - Blocking my work
Feature Category
CLI commands and flags
Use Case Example
_No response_
Additional Context
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗