Cursor keeps your chats in local databases, not in files you can read directly. That's why history sometimes seems to vanish, and why backing it up takes a little care. Current as of September 2026.
Where it's stored
| OS | Folder |
|---|---|
| macOS | ~/Library/Application Support/Cursor/User/ |
| Linux | ~/.config/Cursor/User/ |
| Windows | %APPDATA%\Cursor\User\ |
Inside, two kinds of SQLite database named state.vscdb matter:
workspaceStorage/<id>/state.vscdb: one per project, holding the list of chats for that workspaceglobalStorage/state.vscdb: the message content itself
This layout comes from community documentation of how Cursor stores chats (cursaves), not from Cursor, so it can change between versions.
Why history disappears
The folder moved. Each workspace gets an ID derived from its path. Move or rename the project folder, and Cursor treats it as a new workspace with no chats. Moving the folder back usually brings them back.
A bug emptied the content. Some versions left the chat list intact while the message content was gone, showing "Loading Chat" forever. Forum threads describe it happening after an update in 2.2.9, and after deleting the global state.vscdb.
You're on a different machine. Chats are stored where the Cursor window runs, even for remote workspaces, so they don't follow you to another computer.
Back it up before you need it
The simplest insurance is a copy of the whole user folder while Cursor is closed:
# macOS, with Cursor quit
cp -R "$HOME/Library/Application Support/Cursor/User" "$HOME/cursor-backup-$(date +%F)"Don't edit the databases in place. If you want to look inside, copy state.vscdb somewhere else first and open the copy with sqlite3.
Exporting
- Shared transcripts: the Share icon in a chat's header creates team or public links, on Teams and Enterprise plans (up to 50 a day). Manage them at cursor.com/dashboard under Shared Transcripts.
- Export to Markdown: community posts describe an Export Chat item in the chat's menu; we couldn't confirm it in Cursor's current docs.
- Automatic local copies: SpecStory saves Cursor chats as Markdown files in your project, so they live in git with your code. The extensions and CLI are free.
If you also use Claude Code, its history is plain files and easier to keep: see where Claude Code stores sessions. Shabash organizes Claude Code sessions into threads of work today; other agents are on the roadmap.