如果你已经把敏感文件写进 .cursorignore,却发现 Cursor Agent 还是可能碰到这些内容,这通常不是 ignore 失效,而是你把它的作用范围想大了。按照 Cursor 官方文档,.cursorignore 主要限制的是索引、Tab、Agent 编辑、Inline Edit 和 @ 引用层面的代码访问,但 Agent 发起的终端调用和 MCP 工具调用,并不会被 .cursorignore 完全挡住。
这点非常关键,因为很多人把 .cursorignore 当成“绝对隔离层”。实际上它更像 AI 上下文访问控制,不是操作系统级沙箱。只要你的终端、本地工具、MCP server 本身还能看到这些文件,Agent 通过那些链路间接拿到内容并不奇怪。
所以正确理解应该是:
1. .cursorignore 适合降低索引噪音、减少 AI 默认可见范围。
2. 它对安全有帮助,但不是完整安全边界。
3. 涉及 API key、证书、生产秘钥这类真正敏感内容,不能只靠 .cursorignore。
更稳的处理方式通常有三层。第一层,把敏感内容从仓库和工作区里移走,或者用环境变量和密钥管理工具托管。第二层,用系统权限、目录隔离、单独仓库等方式减少终端可见性。第三层,检查你接进来的 MCP 工具和脚本到底能访问哪些路径,别一边写 ignore,一边又给了工具全盘读取权限。
还有一个误区是“既然官方默认忽略 .env,那就安全了”。不是的。官方文档自己也提醒过,由于大模型本身存在不可预测性,ignore 不是完整防护。它能减少暴露概率,但不能替代真正的密钥治理。
如果你的目标只是让 Cursor 别把某些大目录拿去索引,.cursorignore 非常好用;但如果你的目标是“无论如何都不能被 Agent 看到”,那你应该把策略升级到系统和工具权限层,而不是继续在 ignore 规则上加花样。
一句话说,.cursorignore 管的是很多 AI 功能的默认访问,不是所有执行链路的最终访问。真正敏感的东西,别只靠它守门。