Agent sessions under tickets
Every coding-agent session on the Mac, filed under the ticket it worked on, with the conversation one click away.
PrivateGoat finds the sessions Claude Code, Codex and DeepSeek leave on the Mac and links each one to the ticket it worked on. The result is a history you can browse from the ticket side: open a ticket, see who worked on it, when, and what was said.
How to use it
| Where | What you see |
|---|---|
| Jira → Tree, under a ticket | A collapsible Sessions group, under the deepest ticket that matches |
| Jira → Tree, bottom of the outline | Not linked to a ticket, for recent sessions with no key |
| An issue's detail pane | A Sessions section for that issue |
| Quick Find → Chats | A conversation found by words |
| Chats | Every Claude Code and Codex conversation, newest first |
Opening a session shows what it was, where it ran, when it was active, the conversation, and the other
tickets it touched. The conversation is read on demand, not up front. Open in Terminal resumes the
session by writing a small temporary .command file and handing it to Terminal, so no Automation
permission is needed.
Ticket links carry a strength, so a weak guess is distinguishable from a branch that names the key. From
strongest to weakest: branch → worked (a commit subject, a branch created with
checkout -b or switch -c, a push ref, or a Jira write naming the key) → title → first prompt →
mention → discussed → retrieved.
Settings
One switch decides whether the outline draws the sessions, and one page sets up the agent side:
| Setting | Where | Notes |
|---|---|---|
| Show Agent Sessions | The Jira outline's ⋯ menu | On by default; draws the sessions under the outline |
| Coding agents | Settings → Coding agents | Sets up the MCP connection that lets an agent read the same caches |
Sessions are read from ~/.claude, ~/.codex and ~/.dsh (dsh only when zstd is installed) wherever they ran; the repositories ticked in
Settings → Repositories decide only whose commits the Timeline reads.
What is stored
| Item | Where |
|---|---|
| Session files (read only) | ~/.claude/projects/<project>/<session>.jsonl, ~/.codex/sessions, ~/.dsh/sessions |
| The scan cache | ~/Library/Application Support/Sonavia/HarnessSessions.json |
| The Claude conversation index | ~/Library/Application Support/Sonavia/claude-search.sqlite3 |
| The resume file | A temporary .command file, removed after use |
The source session files are never modified.
What leaves your Mac
Nothing. The session files are local, the index and the conversation reader are local, and opening Terminal runs a local command.
When it is off or fails
- An unreadable or corrupt session: it is skipped rather than failing the scan.
- No Jira account: there is no ticket tree to file sessions under; read them in Chats or on the Timeline instead.
- A session with no ticket key: it appears under Not linked to a ticket, never under a guessed ticket.
- A session whose history file has gone: the pane can show the facts it cached, but not the conversation.
- Terminal does not open the
.commandfile: the session does not open; the command stays copyable in the session's detail pane. - A repository you never ticked: its sessions are still found — sessions are read wherever they ran.
Related
- Search agent conversations — finding a session by its words.
- MCP tools reference —
sessions_for_issueandsessions_search. - Timeline — sessions in the order they happened.
Chats
Every Claude Code and Codex conversation on your Mac in one place: newest first, searchable as you type, formatted to read and copy. Read on your Mac, after you allow it.
Knowledge bases
Add folders of Markdown notes — an Obsidian vault works as it is — and read, search and edit them beside your meetings.