Summary
Observer-agent transcripts accumulate indefinitely in ~/.claude/projects/, where Claude Code Desktop indexes them as if they were real conversations. On my machine 452 of them (and counting) buried ~66 genuine sessions in the Desktop "Recents" sidebar.
They are normally invisible, so this only bites once something imports them — for me, Claude Code Desktop's "import hidden Claude CLI sessions" option, which appears when a session's content pane fails to populate. After clicking it, 443 of my first 500 listed sessions were observer transcripts.
I've since cleaned it up manually (details below), but the cleanup is unpleasant enough that I think it's worth reporting — and the root cause is on the write side, which is claude-mem's.
Where they land
~/.claude/projects/C--Users-<user>--claude-mem-observer-sessions/*.jsonl
One JSONL per observed session. Titles come from the first line of the prompt, so the sidebar fills with repeats of:
Hello memory agent, you are continuing to observe the primary Claude session. <…
You are a Claude-Mem, a specialized observer tool for creating searchable memor…
~/.claude-mem/observer-sessions/ (the cwd the observer runs in) is itself empty — the transcripts are Claude Code's own session logs for those subagent runs, landing in projects/ because that's the cwd the CLI was invoked with.
Diagnosis — two findings that make this hard to fix from the user side
1. The Desktop session list reads a cached index, not the filesystem.
I tested this directly:
| Test |
Result |
| Move one transcript into a subfolder |
Still listed, counts unchanged |
Move it entirely out of ~/.claude/projects/ |
Still listed, counts unchanged |
With the file physically absent from the tree, the sidebar still showed the session. So deleting or relocating transcripts does not remove them from the list — the obvious user-side remedy simply doesn't work. (I restored the file afterwards; nothing was lost.)
2. Bulk archiving is hard-gated.
The Desktop archive tool states: "This tool requires explicit approval regardless of permission mode." Every session needs an individual manual confirmation — no permission setting or allowlist suppresses it. At 443 sessions that's 443 separate clicks.
I also could not find any documented way to exclude a directory from the session list, relocate observer transcripts, or undo the import.
Manual workaround (what actually worked)
Posting this in case someone else hits the same wall — but it is a slog, not a fix:
Group by → Project in the sidebar filter. This buckets all observer sessions under a single claude-mem-observer-sessions group, out of the way. Zero risk, instant, and honestly may be enough for most people.
- Archive them. Filter strictly on
cwd == ~/.claude-mem/observer-sessions so real sessions are untouched, then archive each one. Archiving is reversible (they move to the Archived list, not deleted). I cleared 443 this way.
- Do not bother deleting the transcript files — per finding 1, it has no effect on the list.
A note for anyone automating step 2: batching many archive calls into a single request is dramatically faster than issuing them one at a time, because each separate request costs an inference round-trip while the approval dialogs themselves queue instantly.
Suggested directions
- Write observer transcripts outside
~/.claude/projects/ — e.g. under ~/.claude-mem/ — so no client indexes them as conversations. This seems like the cleanest fix and is entirely within claude-mem's control.
- Or mark them with metadata clients can filter on.
- Or document a supported cleanup path, given deletion doesn't work.
I recognise this is partly a Claude Code Desktop concern — the import feature is what surfaces them, and the cached index is what makes them un-deletable. Happy to file there too if you'd rather. But the write location is claude-mem's, so it looks like the more tractable end of the problem.
Environment
- claude-mem 13.11.0 (cache also holds 13.10.2 and 13.6.0)
- Latest release at time of writing is v13.12.4 — I have not retested on latest, so this may already be addressed
- Claude Code Desktop on Windows 11
- 452 observer transcripts accumulated, newest written minutes before filing
Summary
Observer-agent transcripts accumulate indefinitely in
~/.claude/projects/, where Claude Code Desktop indexes them as if they were real conversations. On my machine 452 of them (and counting) buried ~66 genuine sessions in the Desktop "Recents" sidebar.They are normally invisible, so this only bites once something imports them — for me, Claude Code Desktop's "import hidden Claude CLI sessions" option, which appears when a session's content pane fails to populate. After clicking it, 443 of my first 500 listed sessions were observer transcripts.
I've since cleaned it up manually (details below), but the cleanup is unpleasant enough that I think it's worth reporting — and the root cause is on the write side, which is claude-mem's.
Where they land
One JSONL per observed session. Titles come from the first line of the prompt, so the sidebar fills with repeats of:
Hello memory agent, you are continuing to observe the primary Claude session. <…You are a Claude-Mem, a specialized observer tool for creating searchable memor…~/.claude-mem/observer-sessions/(the cwd the observer runs in) is itself empty — the transcripts are Claude Code's own session logs for those subagent runs, landing inprojects/because that's the cwd the CLI was invoked with.Diagnosis — two findings that make this hard to fix from the user side
1. The Desktop session list reads a cached index, not the filesystem.
I tested this directly:
~/.claude/projects/With the file physically absent from the tree, the sidebar still showed the session. So deleting or relocating transcripts does not remove them from the list — the obvious user-side remedy simply doesn't work. (I restored the file afterwards; nothing was lost.)
2. Bulk archiving is hard-gated.
The Desktop archive tool states: "This tool requires explicit approval regardless of permission mode." Every session needs an individual manual confirmation — no permission setting or allowlist suppresses it. At 443 sessions that's 443 separate clicks.
I also could not find any documented way to exclude a directory from the session list, relocate observer transcripts, or undo the import.
Manual workaround (what actually worked)
Posting this in case someone else hits the same wall — but it is a slog, not a fix:
Group by → Projectin the sidebar filter. This buckets all observer sessions under a singleclaude-mem-observer-sessionsgroup, out of the way. Zero risk, instant, and honestly may be enough for most people.cwd == ~/.claude-mem/observer-sessionsso real sessions are untouched, then archive each one. Archiving is reversible (they move to the Archived list, not deleted). I cleared 443 this way.A note for anyone automating step 2: batching many archive calls into a single request is dramatically faster than issuing them one at a time, because each separate request costs an inference round-trip while the approval dialogs themselves queue instantly.
Suggested directions
~/.claude/projects/— e.g. under~/.claude-mem/— so no client indexes them as conversations. This seems like the cleanest fix and is entirely within claude-mem's control.I recognise this is partly a Claude Code Desktop concern — the import feature is what surfaces them, and the cached index is what makes them un-deletable. Happy to file there too if you'd rather. But the write location is claude-mem's, so it looks like the more tractable end of the problem.
Environment