[FEATURE] Bulk session lifecycle management: batch archive/delete/group via MCP tools and UI multi-select

Resolved 💬 1 comment Opened Jun 10, 2026 by jefferson-maleski Closed Jun 13, 2026

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

Environment: Claude Desktop 1.11847.5 (MSIX, Windows 11), local agent-mode sessions, MCP server ccd_session_mgmt.

Heavy desktop users accumulate dozens of sessions. In my workflow (law office; one session per case/petition), I periodically triage ~45 sessions into "keep" (infra/architectural decisions) vs "disposable" (case work whose artifacts already live on disk). The agent can plan this triage perfectly — list_sessions, classify, justify — but cannot execute it, because every lifecycle operation is single-item and manual:

  1. There is no session deletion anywhere: no delete/trash affordance in the sessions list UI (hover menu or Archived tab) and no MCP tool. The only path is the 30-day cleanupPeriodDays auto-purge, so disposable sessions clutter the active list until they age out.
  1. archive_session requires one approval per call and is hard-disabled in auto/bypass mode. Archiving 40 sessions means 40 individual prompts, even when the user has just explicitly enumerated and authorized the exact list in conversation. No batch variant, no "approve this batch once" flow.
  1. Custom session groups are UI-drag-only: no MCP surface, and no multi-select in the list, so organizing N sessions is O(n) manual drags.

Net effect: the human ends up doing dozens of mechanical clicks that they explicitly asked the agent to automate.

Proposed Solution

One feature: batch operations over sessions, with a single consolidated consent prompt.

MCP surface (ccd_session_mgmt):

  • archive_sessions(session_ids[], reason) — one approval dialog listing all targets, instead of N dialogs. Keeps the human checkpoint while making N=40 viable.
  • delete_sessions(session_ids[]) — with confirmation; acceptable to restrict to already-archived sessions.
  • list_session_groups() + assign_sessions_to_group(session_ids[], group_id) — group state is server-authoritative (see Alternatives), so an API is the only automation-friendly path.

UI counterpart:

  • Multi-select in the sessions list (Ctrl/Shift-click) with bulk drag-to-group, bulk archive, and a Delete option (at minimum in the Archived tab).

The consolidated-approval pattern is the core ask: it preserves supervision (user sees and confirms the exact target list once) without the per-item friction that makes agent-driven session hygiene impractical today.

Alternative Solutions

  • Per-item archive_session calls: works but needs one approval each (40 prompts for 40 sessions) and fails entirely in auto/bypass mode ("unavailable in unsupervised mode").
  • Editing claude_desktop_config.json directly (preferences.epitaxyPrefs.dframe-local-slice.customGroupAssignments / customGroupOrder) with the app fully stopped and a backup taken: the edit persists on disk but is reverted at next app launch. The file is a write-through mirror of server-synced account state, not a read source (group names never appear on disk at all). So local-file automation cannot work by design — confirmed dead end.
  • Deleting transcript .jsonl files from disk: unofficial, risks desyncing the app's session index.
  • Waiting for the 30-day cleanupPeriodDays auto-purge: works for deletion but leaves the active list cluttered meanwhile.

Priority

Medium - Would be very helpful

Feature Category

MCP server integration

Use Case Example

  1. Friday cleanup: I ask the agent to "audit my sessions and separate what can be discarded from what should be archived".
  2. The agent calls list_sessions (45 sessions), classifies them by a documented rule (client-case sessions are reconstructible from on-disk artifacts → disposable; infra/decision sessions → archive), and presents two lists.
  3. I review and authorize: "archive these 16, discard these 25".
  4. Today: the agent must call archive_session 41 times → 41 approval dialogs (or hard failure in auto mode), and "discard" has no executable path at all — I'm told to wait 30 days for auto-purge.
  5. With this feature: archive_sessions([...16 ids], "triage 2026-06-10") + delete_sessions([...25 ids]) → two consolidated dialogs, each showing the full target list → done in seconds.

Additional Context

  • The "unavailable in unsupervised mode" hard-block on archive_session is reasonable per-item, but a batch tool with an always-on consolidated approval dialog would be strictly safer per click than 40 sequential dialogs that train the user to mash Enter.
  • Reverse-engineering notes (to help locate the code): group assignments mirror to preferences.epitaxyPrefs.dframe-local-slice in claude_desktop_config.json under the MSIX LocalCache path; the file is rewritten from account state on boot.
  • Comparable pattern: GitHub's PR review flow batches N comments into one submit; same consent model requested here for session operations.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗