Cursor history: answering an audit or security questionnaire
A customer asks how AI-generated code is reviewed and retained. What do we show them?
Why this is hard
The question has stopped being hypothetical: customer security questionnaires now ask about prompt logging and retention directly. The answer has to be a system rather than a description of good intentions, and it has to cover a period that already happened.
What Cursor specifically does to you here
There is no retention policy at all, which sounds better than it is: nothing expires, but nothing is backed up either, and a corrupted database is routinely resolved by deleting it. An audit trail whose failure mode is total loss is hard to describe as a control.
sqlite3 -readonly "$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb" "SELECT COUNT(*) FROM cursorDiskKV WHERE key LIKE 'composerData:%';"
Where Cursor keeps this in the first place: ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb. One SQLite file holds every conversation. Corruption, an upgrade, or a cleanup takes all of it at once.
What a working answer looks like
A working answer means a retained, timestamped record you can point at — with a retention policy you chose rather than inherited from a tool's default.
Start by measuring what you have. npx promptwake doctor reports what every AI tool on the machine is holding and how much of it sits inside a deletion window — no account, writes nothing, sends nothing anywhere. If the conclusion is that the record should not depend on one laptop, that is what PromptWake captures: prompt, response and the resulting diff, local by default and synced into a shared timeline on the paid tiers.
