Cursor reports `ENOENT` for `User/settings.json` and ignores user settings
Source: Troubleshooting reference
Symptom: Cursor logs or displays an error such as:
ENOENT: no such file or directory, open '.../Cursor/User/settings.json'The native file is still a symlink, but its managed target is missing or empty:
ls -l "$HOME/Library/Application Support/Cursor/User/settings.json"jq -e 'type == "object"' ~/.config/cursor/settings.jsongit diff -- home/dot_config/cursor/settings.jsonRoot cause: Cursor writes the symlinked settings file non-atomically. The Cursor
agent hook could run after the file was truncated but before the replacement
contents arrived, and chezmoi add then copied the empty file into the repo.
The hook’s jq cleanup also accepted empty input as success, preserving the
damage. A later failed rewrite can leave the native symlink dangling.
Fix: update the checkout. The hook now accepts only a complete settings object or keybindings array, then validates the chezmoi source after import and restores its previous contents if the file changed during the copy. To recover an already-empty source after confirming the diff contains no wanted edits:
git restore --source=HEAD -- home/dot_config/cursor/settings.jsonchezmoi apply ~/.config/cursor/settings.json ~/.cursor/hooks/sync-dotfiles-cursor.shIf an open window still shows defaults after the native symlink resolves, run
Developer: Reload Window from Cursor’s command palette.