← All tools

PromptWake for Cursor

Every Cursor conversation you have ever had is in one SQLite file, with no export and no second copy. PromptWake reads it continuously and keeps the record somewhere a corrupted database cannot take it.

How Cursor loses history

One SQLite file holds every conversation. Corruption, an upgrade, or a cleanup takes all of it at once.

~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
Storage
One SQLite database for all conversations
Measured on a working machine
6.4 GB, 521 conversations, 164,200 messages
Export feature
None
Known failure
"Loading Chat" hang when the database is damaged
What PromptWake captures
  • Conversations from the Cursor composer, per project
  • Prompt and response text, kept outside the database that holds the original
  • File changes associated with the conversation
  • A timeline that survives the database being reset

Check the size of your own database before reading further. It is usually the number that makes the case:

ls -lh ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb

On the machine used to write this, it is 6.4 GB — 521 conversations and 164,200 individual messages in a single file, with no export button and nothing else holding a copy.

How Cursor histories are actually lost

Not on a timer, the way Claude Code's are. Cursor loses history all at once, and the reports follow a pattern: the database is damaged after an unclean shutdown or a full disk, Cursor renames it to state.vscdb.corrupted and starts fresh, and the chat panel comes up empty. The standard advice in support threads at that point is to delete the database, which is why so many of these end in total loss.

The other common cause is quieter — rename or move a project and Cursor computes a different workspace hash, so the history looks gone while the conversations sit untouched under the old one.

What PromptWake does with Cursor specifically

The daemon reads state.vscdb the way you would read any SQLite file — read-only, without holding a lock that Cursor needs — and copies each conversation into its own store as it appears. From that point the record no longer depends on that file surviving. If the database is reset tomorrow, the timeline is still there.

That is the whole pitch for Cursor users, and it is deliberately narrow: we are not making Cursor better, we are making its history stop being a single point of failure.

Back it up today either way

DB=~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb
sqlite3 "$DB" ".backup '$HOME/Backups/cursor-$(date +%F).vscdb'"

Then, if you want it captured continuously rather than whenever you remember: npx promptwake init . starts capturing a project, and npx promptwake doctor shows what every AI tool on the machine is currently holding. Local tier is free and offline.

When it matters

Deeper on where Cursor keeps its history, and how to back it up without PromptWake: read the guide.