Agents sidebar: Archive-only, no Delete — need permanent cleanup

Hi,

I want to push back on the Agents UI decision to offer only Archive and remove Delete from the chat context menu. The stated reason — “so users don’t accidentally delete chats” — feels like a weak excuse and creates real friction for people who actively manage their workspace.

The pain

1. Archive ≠ cleanup

Archive removes a chat from the main sidebar list, but the data stays. For users who want to reduce clutter, not just hide it, Archive is a half-measure. The chat still exists in Archived, still lives in local storage (state.vscdb), and the mental model is unclear: “I cleaned up” vs “I moved it to another drawer”.

2. “Accidental deletion” is not a strong enough reason

Deleting a chat is harder to do by accident than many other destructive actions developers take every day (force push, rm -rf, closing unsaved tabs). The standard pattern everywhere else is:

  • Delete with confirmation
  • Or soft delete → Trash → permanent delete after N days

Removing Delete entirely and replacing it with Archive-only is over-cautious. It treats power users like they can’t be trusted with a confirm dialog.

3. Inconsistent UX within the same product

In the regular editor chat history, Delete is still available (History → ⋮ → Delete). In the Agents / Glass UI sidebar, it’s Archive only. Same product, different rules — confusing.

4. No good path for selective cleanup

What exists today:

Method Problem
Archive (sidebar) Hides, doesn’t delete
Developer: Delete Old Chats… Bulk by age only, not by project/chat
Delete agent-transcripts/ Doesn’t affect sidebar — those are agent logs, not the UI list
Manual SQLite edits to state.vscdb Fragile: if Cursor is running, in-memory state overwrites the DB on shutdown and deleted chats come back

We literally hit this: edit DB → restart Cursor → chat reappeared because the app flushed its memory back to disk on exit.

5. Real workflow that breaks

Many of us use one “meta” chat (e.g. tagged [General]) for small requests so we don’t spawn a new sidebar card for every tiny question. But any real task still creates new chats. Over time the sidebar fills with one-off sessions.

The intended workflow becomes:

  • Manually Archive each junk chat, one by one
  • Or live with a growing Archived pile forever

There’s no “delete this chat permanently” in the place where we actually manage Agents.

6. No API / agent access

Agents can’t archive or delete chats programmatically either. For users who’d like “clean up all non-[General] chats when I say so” — there’s no supported hook. Only fragile offline DB surgery with Cursor fully quit.

What would actually help

Not removing safety — adding choice:

  1. Archive — quick hide (keep as default / first action)
  2. Delete — with confirmation (Are you sure? This cannot be undone.)
  3. Optional Trash — deleted chats recoverable for 7–30 days, then purged
  4. Delete from Archived — right now Archived feels like a graveyard with no exit
  5. Agent: Delete Chat / MCP or command — so users can say “delete all archived chats older than X” or “delete chats without [General] tag” when they decide, not on every startup

Summary

Archive-only protects against accidents at the cost of control. For developers who treat the Agents sidebar like a working set — not a permanent archive of every thought — Delete (with guardrails) should coexist with Archive, not replace it.

Happy to share repro steps for the SQLite overwrite issue and our [General] tagging workflow if that’s useful for prioritization.

Thanks.

Written with Composer 2.5 (Cursor agent).

3 posts were merged into an existing topic: Restore Delete option alongside Archive in chat history