For heavy Claude Code users

Your Claude Code sessions didn’t die. They sank.

A local dashboard that finds every Claude Code session, including the dead ones claude agents can’t show, and resumes any of them in one click.

  • Runs on 127.0.0.1
  • Zero runtime dependencies
  • Source code coming soon

Day 30: deleted at next claude startup

  • api-refactorlive
  • docs-synclive
  • billing-migrationlost 1 d ago
  • No Namelost 4 d ago · ~/work/etl
  • test-harnesslost 9 d ago
  • research-noteslost 26 d ago⚠ expires in 4 d26 d · deeper ↓
Hover the buoy to find sunken sessions. Click one to bring it back up.Tap a session to bring it back up.Illustration. The real dashboard is further down.

The problem

Why sessions sink

claude agents only lists live sessions, and Claude Code quietly deletes old transcripts. Between the two, a session you meant to come back to can vanish.

30days
  1. Live

    The session is running and claude agents lists it.

  2. Terminal closed

    It drops off that list. Its transcript is still on disk, and it can still resume.

  3. Day 25

    Five days before the cutoff, ResumerAgent shows an expiry warning.

  4. After day 30

    The next claude startup deletes the transcript. No warning, no trash, no recovery.

Days count from the transcript’s last activity, against Claude Code’s default cleanupPeriodDays of 30.

Reported upstream in anthropics/claude-code: #62959, #59248, #62476, #64999

How it works

One ping, three sources

ResumerAgent reads what Claude Code already keeps on your machine, merges it, and shows one list.

  • Decides what is liveclaude agents --json --all

    Claude Code’s own view of live sessions: the source of truth for whether a session is running.

  • Finds everythingprojects/**/*.jsonl

    Every transcript on disk, live or dead, with its title, last message, cost and context used.

  • Cross-check onlysessions/<pid>.json

    The per-session registry. It is deleted on a clean exit, so it never decides liveness.

lib/mergeSessions.mjs

One list of live and dead sessions, each tagged liveUnknown, superseded or safe, and every action passes the fail-closed gate.

Features

What comes back up

Find

Live and dead, one list
Live sessions and every dead one found on disk, side by side, newest first by default.
Know which one it was
Each row shows the last thing you typed, or the recap Claude Code wrote. Unnamed sessions show as “No Name”, not a blank row.
Retired duplicates
Rename a new session to an old one’s name and the old row is marked “moved to a newer session”, with Resume disabled so its transcript stops growing.

Bring back

One-click Resume
Opens a real terminal where Claude Code picks the conversation back up.
Copy the resume command
For SSH, tmux or a terminal ResumerAgent can’t drive: put the command on your clipboard instead.

Stay ahead

Expiry warning
Sessions within 5 days of Claude Code’s cleanup cutoff get an “expires in N d” badge. It is a warning only: it can’t stop the cleanup.
Activity at a glance
Cost so far and context used on every row. Rate limits too, if you add your own optional statusline sidecar.

Stay in control

Pause and Close
Pause a background job started with claude --bg, through Claude Code’s own claude stop. Close ends a live interactive session’s process tree, verified on Windows and unit-tested on macOS and Linux.
Purge, with a second click
Pause, Close and Purge each ask for a two-click confirm.
Parent and child jobs
A session that parks a background job shows it nested underneath, with the child’s own working Attach button.

Demo

Watch a resume

A real recording: one click on Resume, and Claude Code picks the conversation back up in a new terminal.

demo.webp · real recording · paths and account figures blurred
Demo: clicking Resume on a session in the ResumerAgent dashboard opens a real terminal window, where Claude Code restores that conversation. Folder paths and account figures are blurred.
Click Resume: a real terminal opens and Claude Code picks the conversation back up.

The dashboard

  • Four headline stats: sessions tracked, live now, total cost and average context used.
  • Live and resumable sessions in one list, each with its last message.
  • Cost and context used on every row, and an expiry warning on the session about to be cleaned up.
The ResumerAgent dashboard: live and resumable Claude Code sessions side by side, each with its last message, cost, context-window use, and an expiry warning on the one about to be cleaned up
Generated from seeded example data, not a real machine.

Safety

Fail-closed by design

When ResumerAgent can’t confirm a session’s state, it refuses to act instead of guessing.

Read the safety model →
  • Unknown means no

    A session whose liveness can’t be determined is refused for every action, by the page and by the server, each on its own.

  • The server checks again

    Every resume, purge, pause and close request carries only a session ID. The server looks the session up again before it does anything.

  • Retired stays retired

    A superseded session can’t be resumed, so a transcript you are retiring doesn’t grow again.

  • No recycled PIDs

    Right before Close ends a process, the server checks that the PID still belongs to a real claude process.

127.0.0.1
The only address the dashboard listens on
0
Runtime dependencies
Your disk
Where everything it reads comes from

Install

Coming soon

ResumerAgent’s source code isn’t public yet. Once it is, you need Node 18 or newer and Claude Code. Nothing else.

Supports Windows, macOS and Linux (CI-tested). Only Windows has run on real hardware so far.

FAQ

Before you dive

All questions →
What does it do that claude agents doesn’t?

claude agents only shows live sessions. ResumerAgent adds every dead one, found by scanning transcript .jsonl files, in the same list, with a one-click Resume.

Does it stop Claude Code from deleting old sessions?

No. The expiry badge is a warning only. Claude Code’s own cleanup runs at claude startup, outside ResumerAgent.

Does it send my data anywhere?

No. It serves a local dashboard on 127.0.0.1 with zero runtime dependencies, and everything it reads comes from your own session folder.

Day 25: expiry warning starts

Day 30: deleted at next claude startup

Bring your sessions back up.

ResumerAgent’s source code is coming soon.