Graveyard

Brief

Claude Code and Codex save every conversation to disk. When the terminal an agent was running in goes away (a crash, a reboot, a window you closed), the conversation is still there, just not running. The graveyard lists those.

Click 🪦 in the window's footer, or Session restore in the … menu. Each row says what the conversation was about, where it ran and how long ago. Click one and it resumes in a new tab, in its own directory, where it left off.

Something you closed a minute ago is probably in the bay instead, still running: Ctrl+Shift+Z brings it back.

Technical has what counts as dead and what a row shows.

Technical

Dead agents

What's listed#

Every saved conversation that isn't the one any open agent pane would resume:

  • Claude Code: ~/.claude/projects/<project>/<id>.jsonl
  • Codex: ~/.codex/sessions/**/rollout-*.jsonl

Newest first, up to 80 each time it opens. Ids that aren't plain letters, digits, - and _ are left out, since they would be typed into a shell. The graveyard only reads these files; it never changes one.

The panel#

The header reads 🪦 DEAD AGENTS, then how many are Claude and how many Codex, the card-size slider it shares with the agent wall, and <n> recoverable. That count is conversations found here; the same words on the bay count what's held there. Chips filter by project: ALL, then one per directory name. Rows are grouped by project with <n> dead on each group.

A row's title is the conversation's own summary, or failing that its first message, cut to 96 characters; with neither, CLAUDE session. Under it:

~/project · 3h ago · 7f3a91c2 · 412 KB

Directory, age (s, m, h or d, one unit), the first eight characters of the conversation id, and size. With nothing to list: No recoverable agents — every saved session is either live or already gone. Click outside to close.

Resurrect#

Clicking a row, or its RESURRECT ⏎, opens a new tab in the row's directory, in the branch of the left bar you're in, and types claude --resume <id> or codex resume <id>. If the session is already running that conversation somewhere, it isn't started twice.

Harvest#

With the context-delight plugin installed, each row also has ⬇ .cdx, which packs the conversation into a portable file in ~/.local/share/context-delight/.

Sources

  1. The scan: recover.rs; the panel and resurrect: main.rs.