Project rule in `.cursorrules` not applied in Agent (Chat); works in `.cursor/rules`

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Project-level instructions in .cursorrules (at repo root) are not applied in Agent (Chat). The model’s replies never follow the rule—e.g. they never append a required blockquote “nudge” at the end of responses when the rule’s trigger conditions are met. The same rule works when placed in .cursor/rules/*.mdc with alwaysApply: true, so the issue appears to be that .cursorrules is either not loaded for Agent (Chat) or is applied differently than .cursor/rules.

Steps to Reproduce

Steps to Reproduce

  1. Add a rule to .cursorrules at the project root that requires the model to append a specific line at the end of certain responses (e.g. “Append > **Nudge:** [suggestion] when code was written or when the user jumps into building without clarifying”).
  2. Open Agent (Chat) and send a prompt that triggers the rule (e.g. “Add a ‘Last synced’ timestamp to the dashboard header” or “Add export to CSV to the time-audit dashboard”).
  3. Let the model complete its response.
  4. Export the conversation (Cursor → Export) and inspect the model’s reply.

Result: The model’s reply does not include the required nudge; it ends after the substantive content (summary, code review, etc.). Repeating in a new chat with the same prompt yields the same result—no nudge.

Workaround: Move the same rule into .cursor/rules/<name>.mdc with alwaysApply: true. After that, the model’s replies in Agent (Chat) include the nudge as specified.

Expected Behavior

When a rule in .cursorrules instructs the model to append a blockquote (e.g. > **Nudge:** …) at the end of responses when certain conditions are met, the model should do so. For example:

  • After implementing a code change: response should end with e.g. > **Nudge:** Good stopping point — /review to catch anything before we move on?
  • After completing a feature/review: response should end with e.g. > **Nudge:** This is in a good state — /done to lock it in?
  • When the user gives a vague build request without clarifying: response could end with e.g. > **Nudge:** Want to run /discovery first to lock down what we're building?

Actual behavior

In full exported conversations, every model reply ends with the substantive content only. There is no > **Nudge:** line in any of the model responses—so the missing nudge is not due to the UI hiding it; the model output never included it. The rule in .cursorrules does not appear to be applied (or its output is not present) in Agent (Chat).

Operating System

MacOS

Version Information

  • Cursor IDE: 2.6.14

For AI issues: which model did you use?

Additional Information

  • Same rule in .cursor/rules/build-cycle-nudges.mdc with alwaysApply: true fixes the issue; nudges then appear in Agent (Chat).
  • Suggests .cursorrules at project root is either not used for Agent (Chat) or is applied with lower priority/different behavior than .cursor/rules. Documenting this in the Rules docs (or aligning behavior) would help users.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the detailed report.

.cursorrules is a legacy format and it’s planned to be deprecated. The recommended approach is exactly what you found as a workaround: use .cursor/rules/*.mdc files with frontmatter. From the docs:

The .cursorrules file in your project root is legacy and will be deprecated. To migrate: create a new rule via the command palette (“New Cursor Rule”), copy your content, set the type to Always Apply, and delete the old .cursorrules file.

That said, .cursorrules should still work for now. A common gotcha is that if you have any .cursor/rules/*.mdc files alongside .cursorrules, the .mdc rules take precedence where they overlap. There was an identical investigation where the user saw 0/9 compliance with .cursorrules, but it turned out to be caused by leftover .mdc files in the workspace.

Quick question: do you have any other .mdc files in .cursor/rules/ in that project? If so, that’s likely why .cursorrules looks like it’s being ignored.

Either way, moving to .cursor/rules/ is the right long term move. It gives you alwaysApply, glob scoping, and it’s the actively supported format going forward.

1 Like

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