sessio
v0.3.0
Published
Interactive terminal browser to find and resume past Claude Code sessions.
Maintainers
Readme
sessio
Find and resume your past Claude Code sessions from the terminal.
sessio is a fast, dependency-free TUI that reads your local Claude Code transcripts and lets you jump back into any past session — the right one, in the right directory — without hunting through claude --resume output. Project tabs, type-to-filter, full-text search, a live-updating list, and a preview of where each session left off.
The command you type is
sessions. The npm package is namedsessio(Latin for "a sitting / session") becausesessionswas taken.
←→ project · ↑↓ move · type to filter · ^f search-in-text · ^a archive · ⇥ expand-reply · ↵ resume · ^o same-window · ? help · esc quit · liveInstall
npm install -g sessioThis puts a sessions command on your PATH (and sessio as an alias). Run it:
sessionsOptional: full-text search
^f searches inside every transcript body via ripgrep. Without rg installed, everything else works — only content search is disabled. Install it with brew install ripgrep / apt install ripgrep.
What it does
- Project tabs — sessions grouped by their working directory;
←/→to switch, orAll. ⏸ opentab — "pick up where you left off": surfaces unfinished sessions (Claude ended asking/proposing and you didn't answer, a prompt got no reply, or the folder has uncommitted git changes). Open sessions are marked with an amber▸in any view.- Type to fuzzy-filter — instantly narrows by title, project, or first prompt. Matching is fuzzy (subsequence) and ranked: exact substrings rank first, looser matches follow.
^ffull-text search — greps the full transcript body for a term, across all sessions on disk.^aarchive — hides a session you're done with from every tab; press again to unarchive. Archived sessions collect in a🗄 archivedtab (you can still resume from there). This is a sessio-local declutter list only — the transcript files are never touched, soclaude --resumestill works and Claude's own cleanup still applies.- Live refresh — the list updates every 2s, so a session you're actively running floats to the top with a green dot (🟢 active <5 min, 🟠 recent <24h).
- Preview — for the highlighted session: title, project, prompt count, git branch, the compact summary, first/last typed prompt, and Claude's last reply rendered as markdown (including fenced code blocks).
⇥expands the reply. ↵resume — runsclaude --resume <id>in that session's original working directory. Under Ghostty, it opens the session in a new window (ghostty +new-window) and leaves sessio running as a launcher, so you can fire off several sessions; in any other terminal it hands over the current window as before. Press^oinstead to resume in this window (replacing sessio) even under Ghostty — the escape hatch when you don't want a new window.?help — a full keybinding overlay; any key closes it.- Auto-update — on launch,
sessiochecks npm for a newer version and updates itself in place (then re-launches). A root-owned global install prints thesudocommand instead of prompting; a slow or offline network is a no-op. Opt out withNO_UPDATE_NOTIFIER=1orSESSIO_NO_UPDATE=1.
Keys
| Key | Action |
|---|---|
| ← / → | switch project tab |
| ↑ / ↓ | move selection (↓ reveals more) |
| type | fuzzy-filter (ranked) by name / project / first prompt |
| ^f | full-text search the current query across all transcripts |
| ^a | archive / unarchive the selected session (sessio-local hide only) |
| ⇥ / ^e | expand / collapse the reply preview |
| ↵ | resume the selected session in its directory (Ghostty: new window) |
| ^o | resume in this window, replacing sessio (Ghostty escape hatch) |
| ? | toggle the help overlay |
| esc | clear content search, then quit |
| ^c | quit |
Requirements
- Node.js ≥ 16
- Claude Code installed, with a
claudebinary on your PATH (used to resume) - ripgrep (optional) for
^ffull-text search - macOS or Linux
Keep your sessions muscle memory
If you already invoke the tool some other way, just alias:
alias sessions='sessio' # or point it at the global installHow it works
sessio reads Claude Code's transcript files at ~/.claude/projects/**/*.jsonl, parsing each session's title, prompts, compact summary, and last reply. It caches per-file by mtime so refreshes are cheap, and only the 300 most-recent sessions are shown (full-text search still scans everything on disk).
⚠️ The
.jsonltranscript format is undocumented and internal to Claude Code. It may change without notice.sessioparses defensively and degrades gracefully, but a format change on Anthropic's side can break fields until this tool is updated. This project is not affiliated with or endorsed by Anthropic.
Optional: back up your sessions to iCloud (macOS)
Claude transcripts are your work history and aren't backed up anywhere by default. scripts/backup-sessions.sh rsyncs ~/.claude/projects into iCloud Drive incrementally (no --delete, so a local wipe can't erase your backup).
Run it manually, or schedule it with the included LaunchAgent template:
cp scripts/com.sessio.backup.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.sessio.backup.plistEdit the paths in both files first if your setup differs. On Linux, run the script from cron instead.
License
MIT © 2026 theanhgen
