2.1.110: title generation creates orphan session files
Summary
Claude Code 2.1.110 creates 2-3 orphan .jsonl session files every time a new session starts. Each orphan contains only a single ai-title JSON entry and no conversation data. These accumulate in the project's session directory and appear in the --resume picker as broken entries.
Not present in 2.1.104.
Reproduction
- Install CC 2.1.110 (native)
cdinto any project directory- Run
claudeand send any message - Exit the session
- List the session directory:
````
ls -la ~/.claude/projects/<encoded-path>/*.jsonl
- Observe 2-3 small files (96-134 bytes) alongside the real session file
Each orphan contains a single line like:
{"type":"ai-title","aiTitle":"<generated title>","sessionId":"<uuid>"}
Root Cause (Observed)
Process monitoring (ps aux) during session creation shows CC 2.1.110 spawns multiple parallel claude --print subprocesses for title generation:
- 2x
claude --print --model haiku --tools --... - 1x
claude --print --model sonnet --tools --...
These subprocesses appear to create their own .jsonl session files (the orphans) because they do not use the --no-session-persistence flag.
Evidence capture method: filesystem polling script detected new .jsonl files at the same moment ps showed the claude --print title generation processes running. The orphan file UUIDs do not correspond to any interactive session.
Impact
- Orphan files accumulate over time (we observed 60+ in one project directory over a single evening of work)
- Orphans appear in
--resumesession picker, creating confusion - Selecting an orphan in the picker fails (no conversation to resume)
Environment
- CC version: 2.1.110 (native install, macOS arm64)
- Confirmed NOT present in: 2.1.104
- macOS 15 (Darwin 24.6.0)
CLAUDE_CONFIG_DIRset to a custom path (but issue is path-independent)
Suggested Fix
Add --no-session-persistence to the internal claude --print invocations used for title generation, consistent with how --print mode is used elsewhere (e.g., the --no-session-persistence flag was specifically created for this class of issue).
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗