Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
The Read tool returns “Permission denied” for files under a workspace .cursor/
directory, with no approval prompt and no way to approve.
This makes project Agent Skills unusable. The skills catalog gives the agent the
absolute path to SKILL.md and instructs it to read that file to load the skill,
but every such read is denied, so the skill body can never be loaded.
Per Agent Security Reading files and
searching code don’t require approval." A silent read denial contradicts this.
Related to #145558 and #148910, but both of those cover Write/StrReplace. This is
the read side. It’s arguably worse, because Skills are read-only by design — there
is no write involved that a user could be expected to approve.
Steps to Reproduce
- In any workspace, create
.cursor/skills/example-skill/SKILL.mdwith valid
YAML frontmatter (name,description) and a short body. - Make sure the file is NOT open in the editor.
- Ask the agent to read that file by absolute path, or ask it to use the skill.
- Result:
Permission denied, with no approval prompt. - Now open the same file in the editor and ask again. The read succeeds.
Expected Behavior
Reads under .cursor/** should succeed, or at minimum surface an approval prompt
instead of an auto-decline, consistent with the security docs. Grep/Glob should
either traverse .cursor/ or report that access was blocked.
Operating System
MacOS
Version Information
Current Cursor Version → 3.21.16
For AI issues: which model did you use?
any model raise this issue
For AI issues: add Request ID with privacy disabled
Request ID: d4286306-2bef-452e-8977-ad5a4efcf7b5
Additional Information
Evidence (single session, macOS)
| Attempt | Result |
|---|---|
Read .cursor/skills/<name>/SKILL.md (file closed) |
Permission denied, no prompt |
| Read the same file while open + focused in the editor | Succeeds, full contents returned |
Read .cursor/rules/<name>.mdc |
Denied — even though Cursor injects that same rule into the agent’s context |
Read a dotfile at repo root, e.g. .rspec (closed) |
Denied |
| Read a normal non-dot file at repo root | Succeeds |
Shell ls -a .cursor/ |
Succeeds |
Shell head -n 8 .cursor/skills/*/SKILL.md |
Succeeds — full contents |
Grep / Glob tools scoped inside .cursor/ |
0 matches, silently |
StrReplace on a file under .cursor/ |
“Write permission denied:” (matches #145558) |
Same asymmetry reported in #145558: shell tools reach these files freely, while
first-party tools are blocked.
What I ruled out
- No
.cursorignorefile exists in the workspace. .gitignorehas no.cursorentry, and the default ignore list does not
include.cursor/(Ignore File | Cursor Docs).- No user-facing setting appears to control this. Searching Settings found
nothing; #145558 shows users requesting such a toggle, so I assume none exists. permissions.jsonhas no file-read allowlist at all — onlymcpAllowlist,
terminalAllowlist, andautoRun(permissions.json Reference | Cursor Docs).
So there is no documented way for a user to grant this access.
Impact
- Project skills under
.cursor/skills/cannot be loaded by the agent. - Subagents are hit hardest: they don’t inherit the user’s open editor, so the
“keep the file open” workaround doesn’t apply to them at all. Any rule or
workflow instructing a subagent to load a project skill fails. - Grep/Glob returning 0 matches rather than an access error is misleading — it
looks like the files don’t exist. - The open-file workaround is per-read: closing the tab re-blocks it.
Does this stop you from using Cursor
No - Cursor works, but with this issue