Feature request: sequential numbered session filenames with name, date, and time
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
Session files are stored as UUIDs (e.g., 413951fe-3247-4cd0-8b85-a3a41f40daf7.jsonl). This makes it impossible to:
- Know the order sessions were created (no sequence number)
- Know when a session was created without checking file metadata
- Identify what a session was about without opening it
When you accumulate 30+ sessions across a project, the sessions directory is an unreadable wall of UUIDs. You can't sort them, can't
search them by name, and can't tell anything about them from the filesystem alone — you have to use --resume every time.
File metadata (creation date via ls -lt) is fragile — it changes if files are copied, moved, or restored from backup.
Proposed Solution
Session filenames should encode: sequential number, user-defined name, and creation timestamp.
Format: {NNN}_{name}_{YYYY-MM-DD_HH-MM-SS}.jsonl
Examples:
001_initial-project-setup_2026-02-23_14-30-00.jsonl
002_sdk-development_2026-02-24_19-41-00.jsonl
003_quality-pipeline_2026-02-25_14-08-00.jsonl
004_doc-audit_2026-03-06_20-48-00.jsonl
Interaction:
claude --name "quality-pipeline"— starts a session with that name embedded in the filenameclaude(no flag) — auto-names asunnamedor prompts for a name- Sequential number auto-increments based on existing sessions in the project directory
- Date and time are UTC at session creation, baked into the filename permanently
- Internal references use the full filename (not just UUID), or a mapping file maintains UUID-to-filename lookup for backward
compatibility
Benefits:
lsshows sessions in order with meaningful names and dates- No need to open files or use
--resumejust to identify a session - Survives file copies, moves, and backups (date is in the name, not metadata)
--resumepicker can display the name and number directly from the filename
Alternative Solutions
- Current UUIDs +
--resumepicker: works but requires interactive CLI just to identify sessions. Can't browse from a file manager
or terminal ls.
- Adding a label field inside the JSONL metadata: helps
--resumedisplay but doesn't solve the filesystem readability problem. The
filename is still a UUID.
- External mapping file (UUID → name): fragile, gets out of sync, extra maintenance.
- Renaming files manually: breaks
--continueand--resumesince they reference UUIDs internally.
Priority
Medium - Would be very helpful
Feature Category
CLI commands and flags
Use Case Example
Today:
$ ls ~/.claude/projects/-Users-Able-Licentric/
260a7332-f53a-45da-a5fd-5d6c27db8fa6.jsonl
413951fe-3247-4cd0-8b85-a3a41f40daf7.jsonl
558111cc-d011-446c-8de2-5a0797f96486.jsonl
b38dc3fd-0039-470b-a210-a95b876c53e0.jsonl
e630701b-8393-458f-bde0-4d79084c4ebc.jsonl
→ Which session had the quality pipeline work? No idea. Must run claude --resume and guess.
Proposed:
$ ls ~/.claude/projects/-Users-Able-Licentric/
001_core-platform-build_2026-02-23_14-30-00.jsonl
002_sdk-development_2026-02-24_19-41-00.jsonl
003_quality-pipeline-plan_2026-02-25_14-08-00.jsonl
004_plan-005-implementation_2026-03-06_20-48-00.jsonl
005_doc-audit-and-cleanup_2026-03-07_00-43-00.jsonl
→ Instantly readable. Sorted by creation order. Searchable by name. No tools needed.
Additional Context
- This is a standard pattern: shell history files, log files, database migration files (001_create_schema.sql), and test recordings
all use numbered sequential filenames with timestamps.
- Backward compatibility: existing UUID sessions could remain as-is. New sessions use the new format. A one-time migration command
(claude sessions migrate) could rename existing sessions using their internal metadata.
- The UUID could still be stored inside the JSONL for internal correlation — it just doesn't need to be the filename.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗