How to delete Cursor chat history, and what you lose
the chats are rows in a SQLite database the IDE also uses for everything else
Cursor does not keep one file per conversation. The IDE stores chats as rows in state.vscdb, a SQLite database that also holds the rest of its state, and the CLI writes transcripts as ordinary files somewhere else entirely. Which one you are trying to delete decides what you can safely do.
Where the chats are
The user directory is ~/Library/Application Support/Cursor/User on macOS and ~/.config/Cursor/User elsewhere, with state.vscdb under globalStorage/ and under each workspaceStorage/<id>/. Inside it, the cursorDiskKV table holds one value per chat at composerData:<id> and one per message at bubbleId:<chat-id>:<bubble-id>. Cursor CLI is the simple case: ~/.cursor/projects/<encoded-path>/agent-transcripts/**/*.jsonl, one file per transcript.
# the IDE store ls -lh ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb # what is in it, if sqlite3 is installed sqlite3 ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb \ "select count(*) from cursorDiskKV where key like 'composerData:%'" # the CLI transcripts, which are plain files ls -t ~/.cursor/projects/*/agent-transcripts/**/*.jsonl | head
How to delete it
Delete a chat from the Cursor UI. That is not a hedge — the database is live state the IDE owns, and editing it underneath a running editor is how people lose window layouts and extension settings along with the chat they meant to remove.
If you want the history gone from disk rather than from the list, close Cursor first, and know what you are removing:
# chats and every other bit of state in this database rm ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb # one workspace's chats and that workspace's state rm -rf ~/Library/Application\ Support/Cursor/User/workspaceStorage/<id> # CLI transcripts only, which are nothing but transcripts rm -rf ~/.cursor/projects/<encoded-path>/agent-transcripts
There is no archive to restore from. The format registry documents both stores field by field, including the bubble types and the millisecond timestamps.
What you lose
The chats are the record of what you worked out and what the agent ran. Cursor's own search over them goes with the rows, and so does any future search: a question you answered in March is answerable only while the history of March exists somewhere.
deja reads both stores — the IDE database through sqlite3 and the CLI transcripts directly — along with every other agent's history on the machine, so what you settled in Cursor comes back in Claude Code or Codex. Sessions already in its index stay searchable once the originals are gone.
Where every agent stores history · The same question for Claude Code · Giving Cursor recall over the rest
Found this useful? Star deja-vu on GitHub.