Skip to content

[BUG] /resume is broken — session history inaccessible since v2.1.31 (3 root causes identified) #26123

@scapeshift-ojones

Description

@scapeshift-ojones

Summary

Since ~v2.1.31 (Feb 4, 2026), users cannot access their session history. /resume shows only ~5-10 recent sessions despite hundreds existing on disk. claude -c fails to find previous sessions. This affects all platforms (macOS, Windows, Linux) and all versions from 2.1.31 through 2.1.42+.

Session data is NOT lost — .jsonl files are intact on disk — but there is no working UI to access them.

Three Distinct Root Causes

Community reverse-engineering of cli.js (v2.1.39) has identified three separate bugs causing this:

Bug 1: sessions-index.json stopped being written (~Feb 4, 00:33 UTC)

New sessions are no longer added to the index. Across multiple reporters:

  • 3,080+ .jsonl files on disk, only 740 indexed (24%), 0% indexed after Feb 4
  • ~/.claude/usage-data/ also stopped updating on the same date
  • Summary generation degraded earlier (late January) — all new entries have "summary": ""
  • Affects every project directory, not project-specific

Timeline correlation: This coincides with Anthropic's token usage reduction rollout (ref #16157). Session summary generation costs 100K+ input tokens per session — disabling it would reduce platform-wide token consumption.

Bug 2: /resume picker hardcoded to 10-session initial batch

Source analysis of minified cli.js (v2.1.39) by @tracymelody:

  • sessions-index.json is never read — the string doesn't appear in the source
  • /resume uses readdirSync to scan .jsonl files, sorts by mtime
  • Initial batch is hardcoded to 10 (K=10 parameter)
  • Load-more trigger depends on terminal height: page_size = Math.floor((terminal_rows - ~10) / 3)
  • With a 24-row terminal, page_size=4, the load-more trigger doesn't fire (Ink SelectInput wraps at list boundary instead of scrolling)
  • C7z filter discards "lite" sessions (no firstPrompt AND no customTitle), further reducing the visible list

One-line fix (from @tracymelody on #24435):

sed -i 's/async function _c1(A,q,K=10)/async function _c1(A,q,K=500)/' cli.js

Bug 3: Case-sensitive worktree path comparison (Windows)

From @agatho on #24729:

  • Multi-worktree code path does dir.name === s (case-sensitive)
  • git worktree list returns C:/... but project directory stores c--...
  • Comparison fails silently, sessions not found
  • Only triggers with >1 git worktree

Steps to Reproduce

# Check how many sessions exist on disk vs. what /resume shows
find ~/.claude/projects -name "*.jsonl" | wc -l
# Compare to /resume picker count (typically shows 5-10)
claude --resume
# Check index staleness
for idx in ~/.claude/projects/*/sessions-index.json; do
  echo "$idx: $(stat -f '%Sm' "$idx" 2>/dev/null || stat -c '%y' "$idx" 2>/dev/null)"
done
# All will show dates on or before Feb 4, 2026

Expected Behavior

/resume and claude -c should list ALL previous sessions, not just the 5-10 most recent.

Workarounds

  1. claude --resume <keyword> — bypasses the picker entirely, searches all .jsonl files on disk
  2. claude --resume <session-id> — direct resume by UUID
  3. claude install 2.1.29 — last working version
  4. Community repair scripts: bosmadev/claude, tirufege/gist

Environment

  • Versions affected: 2.1.31 through 2.1.42 (all current)
  • Last working version: 2.1.29
  • Platforms: macOS, Windows 11, Linux (Ubuntu), WSL2
  • Terminals: Ghostty, iTerm2, Terminal.app, Windows Terminal, VS Code integrated

Consolidates These Issues

This issue consolidates 12+ reports of the same bug cluster:

Issue Title 👍
#22878 /resume not listing sessions in v2.1.30 13
#23614 sessions-index.json stops being updated after v2.1.31 7
#25032 sessions-index.json not updated, /resume shows stale sessions 3
#24435 Resume picker only shows ~8 most recent sessions 2
#22462 sessions-index.json not updated, claude -c fails 1
#23421 sessions-index.json stops updating (Linux/WSL2) 1
#22205 Sessions not added to sessions-index.json 1
#25729 /resume only shows ~5-10 most recent sessions 0
#25552 /resume missing sessions: index out of sync 0
#25685 Session resume picker shows no sessions 0
#24729 sessions-index.json not updated (Windows worktree bug) 1
#25130 [FEATURE] Allow /resume to display full session history 0

Combined engagement: 29+ thumbs-up, 50+ comments, 12+ independent reports across 3 platforms.

Please close the above as duplicates pointing here if this is adopted as the canonical tracking issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions