[FEATURE] Bulk archive for Code sessions in the desktop app sidebar
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
The Code tab sidebar in Claude Desktop groups sessions by project and accumulates them indefinitely. Archiving is a per-row hover action, so there is no way to archive more than one session at a time. Clearing a backlog means dozens or hundreds of individual clicks.
Across a handful of active repos my sidebar currently holds well over fifty sessions spanning several months. Most are one-off debugging runs I will never return to, but they sit above and between the sessions I actually resume, so finding anything means scrolling past noise. There is no date filter, no multi-select, and no "archive everything older than X" action.
The only bulk workaround is editing isArchived directly in the session metadata JSON under ~/Library/Application Support/Claude/claude-code-sessions/<accountId>/<orgId>/local_*.json, with the app quit and a backup taken. That works, but it depends on an undocumented internal format whose location has already changed once (#29373), so it silently breaks whenever the schema moves and is not something most users should be doing.
Proposed Solution
Add a bulk archive path to the Code sidebar. In rough order of usefulness:
- Multi-select - shift-click or checkbox selection across rows, with a single Archive action applied to the selection.
- Archive by age - a menu action such as "Archive sessions older than..." with 7 / 30 / 90 day options, scoped either to one project group or to all projects.
- Per-project group action - archive every session under one project heading at once.
Any one of these solves the problem; multi-select is the most general.
One dependency worth flagging: archiving is currently one-way in the UI, since there is no unarchive control (#30869, #62428). A bulk archive action multiplies the cost of a misclick, so it should either be undoable or ship alongside an unarchive path.
Alternative Solutions
- Per-session archive as it exists today - works, but does not scale past a handful of sessions.
- Editing the session metadata JSON directly - effective, but fragile, undocumented, and requires quitting the app and taking a backup first.
- Relying on retention -
cleanupPeriodDaysprunes CLI transcripts under~/.claude/projects/, but it does not clear entries from the desktop sidebar, so the two are not interchangeable. - Searching instead of cleaning - the picker search works, but it does not help when scanning the sidebar visually, which is the main way I navigate between active projects.
Related but distinct existing issues: #35036 (session list/archive/delete commands for the CLI - different surface), #29552 (delete alongside archive in the desktop app - different action), #30869 and #62428 (no unarchive path in the UI).
Priority
Medium - Would be very helpful
Feature Category
Other
Use Case Example
Concrete scenario from this week:
- I work across roughly eight repos in the Code tab - platform services, a designer app, a plugin marketplace, dotfiles, and a few others.
- Each of those accumulates sessions continuously, including auto-named ones like
serbans-macbook-pro-local-zany-frostfrom short one-off runs. - After a couple of months the sidebar holds 50+ entries, and the three or four sessions I actually want to resume are buried among debugging runs I finished long ago.
- To clean it up today I would hover and archive each row individually, roughly forty times, with no undo if I archive the wrong one.
- With multi-select or an archive-by-age action this becomes one interaction, and the sidebar goes back to showing only live work.
Additional Context
Scope note: this is specifically about the desktop app's Code sidebar, not the CLI /resume picker and not claude.ai/code. Those are separate stores with separate gaps, tracked in #35036 and elsewhere.
Environment: Claude Desktop on macOS, Code tab. App version: <fill in from Claude > About>
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗