Skip to content

Claude Code

An increasing share of your work happens inside coding-agent sessions that leave no trace in commit history — you can spend a day pairing with an agent and have nothing in git log to show for it. This source captures that work.

Claude Code already writes every session to ~/.claude/projects/<project>/<session-id>.jsonl. DevRecall reads what is already on disk: no API, no OAuth, no token, and nothing leaves your machine. Like Git, it’s a purely local collector.

Terminal window
devrecall auth claude-code

The command checks that sessions actually exist before enabling the source, and tells you if it finds none — so you don’t end up with a source that silently collects nothing. Then:

Terminal window
devrecall sync

Or edit ~/.devrecall/config.json directly:

{
"claude_code": {
"enabled": true
}
}
FieldMeaning
enabledCollect Claude Code sessions
projects_dirOverride ~/.claude/projects. Rarely needed

devrecall sync only looks at the recent window. To index every session you’ve ever run:

Terminal window
devrecall backfill --since 1y --source claude_code

Transcripts are local files, so a full backfill is fast — no rate limits and no network round-trips.

One activity per session, not per message. A session is the natural unit of work: it has a title, a time range, a repo, and a branch.

FieldWhat
TitleYour custom title, else the AI-generated one, else the opening prompt
ContentThe opening prompts — what the session was for
RepoDerived from the session’s working directory
BranchThe git branch the session ran on
PromptsHow many prompts you sent
PR linksPull requests opened during the session

The activity is timestamped at the session’s last activity, not its first. Sessions get resumed days later, and work you did today should appear in today’s standup rather than on the day you first opened the conversation.

Only your prompts are indexed. Assistant replies, tool calls, tool results, and subagent traffic are skipped — they’re bulk, and what makes a session findable later is what you asked for.

Branch names are the reliable ticket signal. A session on feature/PROJ-123-retry is tagged with PROJ-123, which means work items group it alongside the commits, PRs, and discussions for that ticket. Asking “what happened with PROJ-123?” returns the agent session that did the work, not just the commit that landed it.

Nothing leaves your machine. There is no API call, no token, and no network access of any kind — DevRecall reads local files that Claude Code already wrote.

Your prompts are stored in your local SQLite database like any other activity. If a session contains something you’d rather not index, delete its .jsonl from ~/.claude/projects before syncing, or use the privacy filters to redact patterns.

Note that if you’ve configured a cloud LLM (OpenAI/Anthropic) for chat or enrichment, session content is treated exactly like every other activity — subject to the same redaction rules. Use local Ollama if you want agent transcripts never sent anywhere.

Not yet. Claude Code is supported because its transcripts are local, structured, and stable. Other agents will follow the same pattern — read what’s already on disk — as their formats settle.

Terminal window
devrecall config set claude_code.enabled false

Already-indexed sessions stay in your database. There’s no token to revoke, because there was never one to begin with.

no Claude Code sessions founddevrecall auth claude-code looks in ~/.claude/projects. If Claude Code stores transcripts elsewhere on your machine, set claude_code.projects_dir in config.

A session has a strange title — titles fall back to the opening prompt when neither you nor Claude Code set one. Set a session title in Claude Code and re-sync; the row upserts.

Sessions aren’t showing up for a ticket — linking uses the git branch. A session run on main has no ticket key to extract, even if the prompts mention one.