Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Read the archive yourself

Everything Claude can reach, you can reach from the command line. The commands below read the archive and change nothing. They answer for the project you’re in, found from your current directory. --project <path> picks another, and --project '*' covers every project. An excluded project is never shown, with * too.

List the sessions

$ terminus sessions
2026-08-13  4f1c8d2a-7b3e-4c91-a0d5-2e6b9f13c7e2.jsonl  3 turn(s)  /home/you/code/project-alpha  phase-5
2026-08-12  9a07e5b1-3c2d-4f8a-b6e0-71d4c2a85f3b.jsonl  6 turn(s)  /home/you/code/project-alpha  phase-3
2 session(s)

Each line is the day of the session’s first turn, the transcript’s file name, the number of turns, the project and the branch its last record named. A subagent’s session is marked (subagent), and one whose text retention removed is marked (evicted).

Find a turn

$ terminus search retry budget
50331652  2026-08-12  9a07e5b1-3c2d-4f8a-b6e0-71d4c2a85f3b.jsonl  /home/you/code/project-alpha
    Grep src retryBudget
50331648  2026-08-12  9a07e5b1-3c2d-4f8a-b6e0-71d4c2a85f3b.jsonl  /home/you/code/project-alpha
    where did SearchManager get its retry budget
50331649  2026-08-12  9a07e5b1-3c2d-4f8a-b6e0-71d4c2a85f3b.jsonl  /home/you/code/project-alpha
    the retry budget lives in src/worker/S.ts near the top
3 hit(s)

Every word has to match, and the words need no quotes. You get 10 hits by default and at most 50 with --limit. What search finds covers what’s in the index and what isn’t.

To narrow it down:

OptionWhat it keeps
--tool BashTurns that called this tool.
--kind userTurns of this record type: user, assistant, system or attachment.
--path src/worker/S.tsTurns whose tool call or result names this exact path in a structured field. Repeat it to match any of several.
--since 2026-10-01, --until 2026-10-31Turns inside these UTC bounds, both inclusive.

Read a turn

The number at the start of each hit is its turn id:

$ terminus show 50331648
$ terminus show 50331648 --before 3 --after 3

show prints the archived record byte for byte. --before and --after also print up to 25 turns on either side from the same session, stopping at the session’s ends. When the session continues from another, a line after the window names that session’s id.

See what happened in a session

terminus observations lists the facts recorded for each closed session, taken from the transcript’s own records with no model involved: the files modified and read, the tools, the commands, the errors and the commits.

$ terminus observations --project ~/code/project-beta
c3e21f07-9d4b-4a6e-8f15-b02a7d9e4c61.jsonl  phase-3  6 turn(s)  2m 9s  0 compaction(s)
  tools           Bash
  commands        cargo test -p terminus-core --features testkit, cargo build --release, sleep 600
  errors          Bash command failed, error: could not compile terminus-core due to 7 previous errors
1 observation(s)

A session gets its entry once a pass has closed it, which happens when its last turn is more than 6 hours old. One pass observes at most 100 closed sessions, and the rest wait for the next pass.

What your subagents did

A subagent’s transcript is archived as a session of its own, so everything above works on it. It’s marked (subagent) in sessions and in search hits, and terminus show prints what it was asked, what it ran and what it reported, turn by turn.

Use it from a script

Every read command takes --json and writes one JSON document on stdout, with diagnostics on stderr. JSON output and exit codes is the contract.

To take the transcripts out of Terminus altogether, terminus export <dir> writes every session you can see, across every project, as one .jsonl file each with a manifest.json. The files are the unfiltered transcripts, whatever redact_recall says. Excluded projects are left out, and <dir> must not exist or must be empty.

Every command and option is in the command reference.