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

Resolved 💬 17 comments Opened Feb 16, 2026 by scapeshift-ojones Closed Feb 18, 2026

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.

View original on GitHub ↗

17 Comments

scapeshift-ojones · 5 months ago

Related: #26125 (Ctrl+O/Ctrl+E broken — no way to view pre-compaction history)

These two issues compound: a user who can't find their session (#26123) AND can't view pre-compaction history within it (#26125) has no path to recover past work.

They may also share a root cause — both involve broken summary/metadata generation that correlates with the ~Feb 4 token-reduction changes. Bug 1 here (session summaries stopped being written, all new entries have "summary": "") and the poor-quality compaction summaries in #26125 may trace back to the same upstream change.

junaidtitan · 5 months ago

Great investigation on the 3 root causes. We've been dealing with resume issues too — built cozempic which has its own session detection that doesn't rely on sessions-index.json. It finds sessions by scanning the project directory directly and matching by CWD slug, process tree, or most-recent modification time. Also has a cozempic list command that shows all sessions regardless of the index state.

pip install cozempic
cozempic list              # shows all sessions with sizes
cozempic current           # finds current session for this project

Won't fix the /resume picker itself, but can help you find and identify sessions while the index is broken. Let us know if it helps.

alloc33 · 4 months ago

Can confirm, sessions are completely broken, /rename, /fork.. nothing works properly, sessions disappear, strange nesting...

2.1.44 (Claude Code)
MacOS 15.5

scapeshift-ojones · 4 months ago
Can confirm, sessions are completely broken, /rename, /fork.. nothing works properly, sessions disappear, strange nesting... 2.1.44 (Claude Code) MacOS 15.5

Please spread the word! we need 50 thumbs up on this issue in order to have a hope of getting it fixed. Issues below that threshold never get prioritized by anthropic team. Post on reddit, post on discord, tell your friends, etc! This issue is driving me crazy and this breakage -- which has been the case for weeks now -- it really doesnt have to be this way!

alexeigs · 4 months ago

Confirming on v2.1.41, macOS (Apple Silicon). In-session /resume shows only 5 sessions; claude --resume from CLI shows 255. 314 valid .jsonl files on disk (211 on main branch), sessions-index.json stale since Feb 3.

Also experiencing a likely related regression: resuming a session in a second terminal now writes into the same session stream instead of creating an independent conversation. Both terminals end up sharing the same history (becomes visible if you fork again, or resume fresh). This used to work as two separate conversations.

I could even describe more of what feels now very "buggy" around session history and resuming — and a true hit on my workflows unfortunately — but I guess it's all related, so just waiting it out.

yulin0629 · 4 months ago

Adding a specific reproduction path: plan mode implementation sessions.

When you approve a plan in plan mode and select "Yes, clear context and auto-accept edits" (the default), Claude creates a new session to implement the plan. This session:

  • Has a complete .jsonl file (367 lines in my case)
  • Has userType: "external" and a valid slug
  • Is not registered in sessions-index.json
  • Does not appear in the --resume picker

This is particularly painful because plan mode implementation sessions often contain extensive file modifications. If interrupted, users cannot easily find or resume them.

Stats from my project directory: 156 .jsonl files, only 63 indexed (40% — consistent with your findings).

Closed my duplicate #26297 in favor of this issue.

JollyGrin · 4 months ago

Facing the same issue. When I create worktrees, the sessions made within a tree branch is not visible on /resume

Manual workaround: i created a bash script (temporarily) to find conversations and resume via /resume <hash-id>. I trigger this within the worktree folder that I am working on to resume.

  # Usage: ccfind <keyword> [project-filter]
  ccfind() {
    if [ -z "$1" ]; then
      echo "Usage: ccfind <keyword> [project-filter]"
      return 1
    fi
    for f in $(find "$HOME/.claude/projects" -maxdepth 2 -name "*.jsonl" ${2:+-path "*$2*"} -type f); do
      if grep -ql "$1" "$f" 2>/dev/null; then
        local id=$(basename "$f" .jsonl)
        local project=$(basename "$(dirname "$f")")
        local mod=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$f")
        local size=$(du -h "$f" | cut -f1)
        local snippet=$(grep -m1 "$1" "$f" | sed 's/.*"text":"//;s/".*//' | cut -c1-80)
        echo "$mod  $size  $id"
        echo "  project: $project"
        echo "  match:   $snippet"
        echo "  resume:  claude --resume $id"
        echo ""
      fi
    done
  }
andreszs · 4 months ago
Please spread the word! we need 50 thumbs up on this issue in order to have a hope of getting it fixed. Issues below that threshold never get prioritized by anthropic team. Post on reddit, post on discord, tell your friends, etc! This issue is driving me crazy and this breakage -- which has been the case for weeks now -- it really doesnt have to be this way!

Number of replies does not count towards human intervention?

scapeshift-ojones · 4 months ago
> Please spread the word! we need 50 thumbs up on this issue in order to have a hope of getting it fixed. Issues below that threshold never get prioritized by anthropic team. Post on reddit, post on discord, tell your friends, etc! This issue is driving me crazy and this breakage -- which has been the case for weeks now -- it really doesnt have to be this way! Number of replies does not count towards human intervention?

Per claude:
does number of replies not count toward human intervention??

⏺ Yes they do! The oncall triage threshold is 50+ combined comments AND reactions, not just thumbs-up.

Thank you for pointing that out.

andreszs · 4 months ago
> > Please spread the word! we need 50 thumbs up on this issue in order to have a hope of getting it fixed. Issues below that threshold never get prioritized by anthropic team. Post on reddit, post on discord, tell your friends, etc! This issue is driving me crazy and this breakage -- which has been the case for weeks now -- it really doesnt have to be this way! > > > Number of replies does not count towards human intervention? Per claude: does number of replies not count toward human intervention?? ⏺ Yes they do! The oncall triage threshold is 50+ combined comments AND reactions, not just thumbs-up. Thank you for pointing that out.

Sorry, how many?

vbhavsar · 4 months ago

This should be reopened. The fix in v2.1.47 addressed Bugs 2 and 3 (picker limit 10->50, Windows case sensitivity), but Bug 1 - sessions-index.json not being updated for new sessions - is still unfixed as of v2.1.50.

On my machine: 68 .jsonl files on disk, only 25 were indexed. The 43 missing sessions span from early February onward - exactly matching the timeline described in the original report. I had to rebuild the index manually with a script.

The picker scanning .jsonl files directly (up to 50) is a good workaround, but the underlying index staleness is still there and will cause problems for users with more than 50 sessions per project.

vbhavsar · 4 months ago

Related open issue tracking the index staleness specifically: #25032

ThatDragonOverThere · 4 months ago

Still Broken — Custom Names Don't Show in Picker (Feb 23, 2026)

Bugs 2 and 3 may be fixed, but Bug 1 (index staleness) is NOT, and there's a 4th bug that was never addressed:

Custom session names (via /rename) display in terminal tab titles but NOT in the Ctrl+E/Ctrl+O resume picker. The picker shows auto-generated summaries instead.

Right now I have 6 open sessions with custom names ([bug manager], [1-min models], [shock features], etc.). Every single tab title shows the correct name. The resume picker shows none of them. I have to guess which session I'm opening every time.

This is day 5 of reporting this. Combined with the Bun crash epidemic on Windows (#21576 — 17 reproductions, 2 full computer lockups from orphaned processes), session management is completely non-functional:

  • Can't keep sessions alive (Bun crashes every 1-3 hours)
  • Can't find sessions when they survive (picker shows wrong names)
  • Can't resume work after crashes (have to guess from 6 unnamed sessions)

This issue should be reopened. The partial fix in v2.1.47 didn't address the most user-facing problem.

Version: Claude Code latest, Bun v1.3.10, Windows 11

ThatDragonOverThere · 4 months ago

v2.1.50: Rename Bug Still Present

The v2.1.47 fixes addressed Bugs 2 and 3, but custom session names via /rename still don't appear in the resume picker. Tab titles show the correct names. Picker shows auto-generated summaries.

6 concurrent sessions affected on v2.1.50. This should be reopened — the partial fix did not address the most user-visible symptom.

Version: Claude Code v2.1.50, Bun v1.3.10, Windows 11

scapeshift-ojones · 4 months ago

@ThatDragonOverThere You're right that this should be reopened — the v2.1.47 fix only addressed Bugs 2 and 3 while Bug 1 (index staleness) and your Bug 4 (/rename names invisible in picker) remain broken on v2.1.50. Unfortunately as the original author I can't reopen it — the repo restricts that to maintainers.

In lieu of reopening, I've filed a consolidated issue at #27242 that captures the full scope of session history inaccessibility. Your report compounds directly with what's tracked there:

| Layer | Problem | Where |
|-------|---------|-------|
| Find sessions | Index staleness — 68 files, 25 indexed | This issue, Bug 1 |
| Identify sessions | /rename names missing from picker | This issue, Bug 4 |
| Navigate branches | Right-arrow does nothing in picker | #27242 Bug 3 |
| View history | Pre-compaction content inaccessible | #27242 Bug 1 |
| Link plan sessions | No connection to predecessor session | #27242 Bug 2 |

The resume picker is the single gateway to all historical context and it's degraded at every level. If you're affected, please direct engagement (👍 + comments) to #27242 — that's where we're consolidating to hit the triage threshold.

edisonjoao1 · 4 months ago

+1 — Confirming on macOS, Claude Code v2.1.33

My sessions-index.json was created today for the first time (birth time = Feb 26 11:08). Before this, the resume picker showed all my sessions. Now it only shows ~10.

Stats:

  • 94 .jsonl session files on disk
  • Only 56 were indexed when the index was first generated
  • 38 sessions completely invisible to the resume picker (including sessions from today)
  • Resume picker search is broken — can't find sessions by keyword since it only searches the ~10 displayed

Workaround I used: Rebuilt the index manually with a Python script that scans all .jsonl files and re-indexes them. Sessions are all still intact on disk — just not in the index.

Version history:

  • v2.1.19 (Jan 26) — resume picker worked fine, showed all sessions
  • v2.1.32 → v2.1.33 (Feb 5) — behavior changed, sessions-index.json introduced
  • Feb 26 — index auto-generated for first time, only captured 56/94 sessions
github-actions[bot] · 4 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.