Cursor no longer can follow symlinks to rules .mdc files

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Our whole org woke up to broken AI. After some investigation, it was determined that Cursor lost the ability to follow symlinks in the .cursor/rules/ directory. In our monorepo, rules are defined elsewhere (ai/system_prompts/) and pointed to by various tools using symlinks. So for example, both Cursor and Claude Code have checked in configurations that point to ai/system_prompts/ via symlink. Cursor silently fails to follow the symlinks now, and then the AI goes off the rails because it has zero guidance.

Steps to Reproduce

Make a rule somewhere in your source tree. Make it give some very obvious guidance about something; maybe about building widgets. Have it always apply. On Linux, symlink to that rule: ln -s ai/system_prompts/my_rule.mdc .cursor/rules/my_rule.mdc. Relaunch Cursor. Ask an agent what guidance it is aware of for building widgets. It will say it doesn’t know anything about building widgets.

Expected Behavior

It should know about building widgets. Symlink following is standard practice for tools that rule on Linux.

Operating System

Linux

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.2.17
VSCode Version: 1.105.1
Commit: cf858ca030e9c9a99ea444ec6efcbcfc40bfda70
Date: 2025-12-11T18:30:06.649Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin arm64 24.6.0

For AI issues: which model did you use?

Opus 4.5 used for querying about system prompt

Additional Information

It’s important that these checked in files don’t drift, so we can’t just copy it. The workaround is to make the .cursor/rules/ the source of truth rather than symlinks, but we don’t want it to be. It is not the source of truth. We use all sorts of different AI tools that need these prompts.

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

4 Likes

I am also facing the same issue. symlinked files are no longer being read by the read_file tool, in general, and custom .mdc rules that were symlinks are no longer being loaded into context. This is a majour feature reversion.

Thanks for the report, I’ve raised it with the team.

Additional info. The rules still show up in the rules GUI, and they show up as “active rules” in the text box.

Also… maybe it was just fixed? Seeing different behavior right now.

It was working again, but now it’s totally broken again. The rules don’t even show up in the GUI anymore.

If anybody needs a workaround, you can do this in your .vscode/tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Sync Cursor Rules",
            "type": "shell",
            "command": "mkdir -p .cursor/rules && rsync -a --delete ai/system_prompts/ .cursor/rules/",
            "runOptions": {
                "runOn": "folderOpen"
            },
            "presentation": {
                "reveal": "silent",
                "close": true
            }
        }
    ]
}

Replace ai/system_prompts/ with whatever you want to copy from.

1 Like

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.