Where apps hide your files
Cursor is built on VS Code, so its files follow the same pattern, but every folder carries Cursor's name. This post gives the exact paths, what the state databases are, and how to bring your setup to another Mac.
~/Library/Application Support/Cursor/User/settings.json
~/Library/Application Support/Cursor/User/snippets/
~/.cursor/extensions/
~/.cursor/argv.json
User settings and snippets are under Application Support. Extensions and runtime arguments sit in the hidden ~/.cursor folder. A keybindings.json appears next to settings.json after you customise a shortcut, so a fresh install may not have one.
To open settings from the app, press ⇧⌘P and run Preferences: Open User Settings (JSON). Cursor's own AI and account options are a separate panel, Cursor Settings (⇧⌘J). To open the folders, use Go > Go to Folder (⇧⌘G) or Terminal:
open ~/Library/Application\ Support/Cursor/User
open ~/.cursor
| Folder or file | What it is |
|---|---|
User/globalStorage/ | App-wide state: a state.vscdb database, its .backup copy, storage.json and per-extension folders |
User/workspaceStorage/ | One hashed folder per opened project, each with its own state.vscdb |
User/History/ | Local file history, one folder per edited file |
Backups/ | Unsaved edits kept for recovery; usually empty |
logs/ | Timestamped session logs |
CachedExtensionVSIXs/, CachedData/, Cache/, Code Cache/, GPUCache/ | Rebuildable caches |
Preferences, Cookies, Local Storage, Session Storage | Chromium shell data, because Cursor is an Electron app |
The .vscdb files are SQLite databases that hold editor state and, in recent versions, much of what the app remembers about your projects and AI sessions. Treat them as private: do not open them in a viewer and paste them anywhere, and do not edit them. Their contents are not documented, so this post does not describe individual keys.
Cursor's macOS preferences file is ~/Library/Preferences/com.todesktop.230313mzl4w4u92.plist. The odd name is simply Cursor's bundle identifier, which you can confirm with:
defaults read /Applications/Cursor.app/Contents/Info CFBundleIdentifier
Besides extensions and argv.json, this folder collects files for Cursor's own features, and what you see depends on your version and what you use. Cursor's documentation names one you may want: ~/.cursor/mcp.json, the global configuration for MCP servers, available in every project. A project can have its own .cursor/mcp.json as well. Project rules live in each project's .cursor/rules folder as .mdc files, so they travel with the repository; user rules are set in Cursor's settings rather than kept here.
Extension folders are named publisher.name-version, for example dart-code.dart-code-3.134.0 or Cursor's own anysphere.pyright-1.1.327-universal, so you can match a folder to an extension by name.
settings.json, keybindings.json and the snippets folder from Cursor/User to the same place on the new Mac. They are plain text; check them for tokens before sharing them anywhere.cursor --list-extensions > extensions.txt saves the list, and cursor --install-extension <id> installs each one on the new Mac..cursor/mcp.json travel with your repositories; copy ~/.cursor/mcp.json yourself if you set up global MCP servers, after checking it for API keys.Cursor installs extensions from its own marketplace rather than Microsoft's, so an extension available in VS Code may be missing, or published under a different version. A copied extensions folder is not a reliable way to move them; reinstall instead.
Extensions usually account for most of the space, and a handful of language extensions can pass 250 MB on their own. Check yours:
du -sh ~/Library/Application\ Support/Cursor ~/.cursor
With Cursor quit, the cache folders (Cache, Code Cache, GPUCache, CachedData, CachedExtensionVSIXs) can go to the Trash and will be rebuilt. Uninstall extensions from the Extensions view instead of deleting folders. Leave globalStorage and workspaceStorage alone unless you accept losing per-project state and, possibly, chat history for those workspaces. Never delete a state.vscdb while the app runs.
Each project you open creates a hashed folder in User/workspaceStorage. Inside it a small workspace.json records which project folder it belongs to, so you can identify a folder by name without opening the database next to it. If you deleted a project and want its state gone, quit Cursor and move that hashed folder to the Trash. Cursor creates a new one if you open the project again, starting with empty per-project state such as open tabs.
| VS Code | Cursor | |
|---|---|---|
| Settings | ~/Library/Application Support/Code/User | ~/Library/Application Support/Cursor/User |
| Extensions | ~/.vscode/extensions | ~/.cursor/extensions |
| Runtime args | ~/.vscode/argv.json | ~/.cursor/argv.json |
The two apps do not share settings or extensions. Use the import above, or copy the files by hand.
Spotlight leaves both ~/Library and dot-folders out of its results, which is exactly where Cursor lives. In Everywhere, typing mcp.json lists the global file and every project's copy together (for projects in Documents or on the Desktop, once it has Full Disk Access), and ⌘↵ reveals the match in Finder. Typing an extension name such as pyright finds its folder in ~/.cursor/extensions. It matches names, not the text inside settings.
At ~/Library/Application Support/Cursor/User/settings.json. Open it from the Command Palette with Preferences: Open User Settings (JSON).
In the hidden folder ~/.cursor/extensions, with one folder per extension named publisher.name-version.
No. Cursor uses its own folders, ~/Library/Application Support/Cursor and ~/.cursor. Cursor Settings > General > Account has a VS Code Import button that copies extensions, themes, settings and keybindings across.
Cursor's documentation puts it at ~/.cursor/mcp.json for servers available in every project, with an optional .cursor/mcp.json inside each project.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Version 2.20.3 · macOS 13+ · 4.7 MB · notarised