2.1.110: title generation creates orphan session files

Resolved 💬 5 comments Opened Apr 16, 2026 by BrentEubanks Closed Apr 16, 2026

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

  1. Install CC 2.1.110 (native)
  2. cd into any project directory
  3. Run claude and send any message
  4. Exit the session
  5. List the session directory:

``
ls -la ~/.claude/projects/<encoded-path>/*.jsonl
``

  1. 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 --resume session 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_DIR set 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).

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗