atuin: resume coding agent sessions
β’ 410 words β’ 2 min
Today I learned: atuin now searches and resumes coding agent sessions too.
Session capture and resume arrived in atuin 18.24. Installed versions:
% atuin --version
atuin 18.24.5 (NO_GIT)
% fr --version
fr 2.14.3The entry point is atuin resume, short for atuin threads resume. It opens a
searchable TUI, much like fr. This is not shell history search for the last
claude command: it searches the captured conversations themselves.
Capture is opt-in. Enable it, import existing sessions, then open the picker:
atuin threads enable
atuin threads import
atuin resumeEnabling capture turns on the atuin daemon and offers an import. The explicit
import brings in old sessions we haven’t continued since enabling capture;
repeating it imports only what’s new. No sync account is needed for local use.
Both tools search across agents and return us to a session. The difference is what sits behind the picker:
| Feature | fr |
atuin |
|---|---|---|
| Source | Existing local agent files | Captured/imported sessions in atuin’s record store |
| Search | Prompts and replies; typo-tolerant | Conversation text and tool inputs |
| Across machines | No built-in sync | Optional end-to-end encrypted sync |
| Resume | Original agent | Original agent, fork, or continue in another agent |
| Setup | Scan local files on launch | Enable capture and run daemon |
| Agent examples | Pi, Cursor CLI, Kimi Code | Pi, Kiro, Omp |
fr remains a local search tool with a disposable index. atuin adds a
synced conversation store: it can reconstruct a session on another machine
before resuming it. Hosted sync and self-hosted sync both work.
For JSON search results and repository-scoped browsing:
fr --json --limit 3 "agent:pi ack"
atuin threads search --harness pi --limit 3 --style json ack
atuin resume --filter-mode workspaceThe last command opens the picker scoped to the current repository. Given a session ID, we can bypass the picker, print the resume command, fork the session, or continue it in another agent:
atuin resume --print 01a00cb1-6498-7345-850b-3f2e6fa6d346
atuin resume --fork 01a00cb1-6498-7345-850b-3f2e6fa6d346
atuin resume --in codex 01a00cb1-6498-7345-850b-3f2e6fa6d346One distinction from my original atuin setup: enter_accept = false applies
to shell history, not this picker. Enter proceeds with resuming a session.
The atuin docs describe what
survives capture: images are omitted, individual tool inputs/outputs are capped
at 64 KiB, and reasoning text is not retained. Session sync does not sync our
repository’s working files either.
For finding a local conversation and reopening its original agent, fr is
still the simpler option. For carrying conversations between machines or
agents, atuin does something fr doesn’t. β
/bloggify,
then reviewed and edited by me.
More agent-assisted posts.