Cursor Conversation Import
Cursor joins Claude Code and Codex as an importable coding agent, with per-folder consent that fails closed and metadata-only detection before you approve.
Cursor is now the third coding agent Dots imports conversations from, joining Claude Code
and Codex. The same two commands cover all three: dots coding-agents sync for a one-shot
backfill, and dots coding-agents watch to catch up and then keep tailing. Nothing about
the command surface changed to make room for it.
What The Importer Reads
Cursor does not keep conversations as loose files the way the other two agents do. It keeps them in SQLite databases under its own user-data directory — one store per workspace plus a shared global store — and opens those read-only, never writing to Cursor's state. A single conversation is identified by the pair of store file and conversation id, and a conversation that appears in both a workspace store and the global store is counted once rather than twice.
Because usage figures are optional in what Cursor records, a session carrying none produces empty token metrics and no cost estimate rather than a zero. Titles fall back through the stored conversation name, your first prompt, the assistant's first sentence, and the working directory before settling for a generic label.
Consent Is Per Folder, Not Per Platform
Consent is not granted for "Cursor" as a whole. Every session-bearing folder Dots detects
gets its own stable key of the form <platform>:<folder-hash>, and that key is the unit
of consent. Approving one project's history therefore does not approve the project beside
it.
The gate fails closed. A folder with no recorded decision is refused, a dismissed offer is
refused, and an unreachable consent authority refuses everything rather than defaulting to
open — absence is never read as permission. Record consent with the --consent flag,
bare to attest every detected folder, or narrowed with a repeatable --source naming
specific keys.
Detection before consent is metadata-only. It opens the SQLite store to read the conversation index — ids, names, and timestamps — and leaves the content-bearing records closed until you have said yes. Secrets are scrubbed on the way through as well, both as sessions are normalized on your machine and again server-side before anything persists.
Re-importing Is Safe
Every imported conversation is identified by its platform plus Cursor's own conversation id, and each row carries a hash of the content it was built from. A re-run compares that hash: an unchanged session is skipped without a write, a session that has grown updates the row it already owns, and only a session never seen before creates a new row. An overlapping backfill and tail converge on one row rather than racing into two.
A Cursor fault stays contained. A missing runtime feature, a corrupt store, or an unknown conversation id is counted as a failure for that one session and never blocks the Claude Code and Codex sessions sharing the same batch.
What Does Not Carry Over
The automatic question-and-answer extraction that mines conversations into structured question rows admits Claude Code and Codex sessions only, and Cursor conversations are filtered out before their bodies are read. The pass reads the interactive-question tool calls those two agents record in their transcripts, and Cursor's transcripts carry only user and assistant turns with no tool calls to read. Imported Cursor conversations are complete, searchable, connectable rows; they do not feed that one derivation.
Import Your Coding-agent Conversations covers the end-to-end flow across all three agents.
Cursor Conversation Import · This page in the graph
- mentionstodots coding-agents and dots git
- mentionstoConversations
- mentionstoDIIICE: Data
- mentionstoDots
- mentionstoDOT
- referencestoImport Your Coding-agent Conversations
- mentionsfromImport Your Coding-agent Conversations
- mentionsfromConversations
- documented byfromCoding Agent Conversation Import