LLM 安全与控制
区分 Cursor 中可强制执行的安全控制和非确定性的 LLM steering,并给出企业级 Agent 防护方案。
LLM 安全不要只靠“提示词写好一点”。在 Cursor 里,企业应该把硬控制、Hooks、审批、沙箱、文件权限和 Rules 组合起来,才能让 Agent 在可接受的边界内工作。
核验日期:2026-05-09。Agent 安全、Hooks、浏览器控制、自动运行和团队策略会随 Cursor 版本变化;上线前按官方 LLM Safety and Controls 与 Agent Security 文档复核。
1. 一句话判断
Cursor 官方把 AI 安全分成两类:security controls 和 LLM steering。
- Security controls 是确定性边界,用来阻断危险操作。
- LLM steering 是提示和上下文引导,用来提高输出质量。
这两类都要用,但不能混淆。Rules、Commands、MCP 可以让 Agent 更懂项目;真正防误删、防泄密、防越权,要靠审批、hooks、权限、沙箱和组织策略。
2. 硬控制:把危险动作挡在执行前
终端命令审批
默认情况下,Cursor 在执行终端命令前需要用户批准。这个默认值应该保留,尤其是生产仓库、数据库、部署、密钥和文件删除场景。
Auto-approval 只能给低风险命令,例如安装依赖、运行测试、构建、格式化。它不是安全边界,官方也强调 allowlist 是 best-effort,不能抵御绕过或 prompt injection。
Enforcement hooks
Hooks 是 Cursor 企业安全里最实用的强制层。它可以在关键节点运行自定义逻辑:
- prompt 提交前:扫描 API key、PII(Personally Identifiable Information,个人可识别信息)、客户数据、敏感业务信息。
- 文件读取前:阻断
.env、日志、数据库 dump、密钥配置。 - 代码生成后:扫描漏洞、许可证风险、硬编码凭据。
- 终端执行前:阻断
rm -rf、sudo、git push、数据库 DROP、生产部署。
把 hooks 接到现有 DLP(Data Loss Prevention,数据防泄漏)、SAST(Static Application Security Testing,静态应用安全测试)、secret scanner(密钥扫描器)、ticket 审批或 SIEM(Security Information and Event Management,安全信息和事件管理平台),才能从”个人确认”升级到”组织策略”。
敏感文件保护
.cursorignore 可以把文件排除出语义搜索、Agent file reading 和 context selection。它适合降低误用概率,但官方明确说它不是安全边界。
真实安全边界来自:
- 文件系统权限。
- 加密文件系统。
- 单独隔离敏感仓库。
- 不把生产密钥 clone 到 Cursor 可访问路径。
- hooks 阻断文件读取和写入。
.cursor 目录保护
Enterprise 团队可以防止 Agent 修改 .cursor/ 目录。开启后,Agent 不能修改规则、settings 或删除 .cursor/,但用户仍可手动编辑,Agent 修改需要审批。
这适合保护团队规则不被 Agent 自己改掉,尤其是安全规则、项目约束和命令策略。
Browser origin controls
Enterprise 可限制 Agent 浏览器工具能访问的网站 origin。只放行内部文档、测试站、设计系统、API 文档等必要域名,阻止 Agent 被外部网页 prompt injection 带偏。
3. DLP 集成方式
企业 DLP 可以三层接入:
- Endpoint DLP agents:监控到
*.cursor.sh的流量,但可能影响性能。 - Hooks-based DLP:在 prompt、文件读取、生成代码、命令执行前后扫描。
- Third-party DLP API:hook 调用公司已有 DLP 服务,再根据返回结果 allow 或 deny。
建议优先把最明确的规则做成 hooks,例如:
- 阻断 API key、token、私钥、数据库连接串。
- 阻断从生产日志或客户数据文件取上下文。
- 阻断未经审批的 deploy、push、migration、DROP、delete。
- 生成代码后跑 secret scan 和 license scan。
4. Sandboxing 的真实边界
Cursor Agent 默认运行在本地用户账号下。它能读用户能读的文件、写用户能写的文件、执行用户能执行的命令、访问用户能访问的网络。
官方文档说得很直接:Agent 和本地用户账号之间没有额外安全边界。
需要更强隔离时,考虑:
- 用 Cloud Agents 或独立 VM 承载任务。
- 用文件系统权限限制 Cursor 进程能读写的路径。
- 用专用开发机,不让它接触生产系统。
- 把敏感仓库、密钥、客户数据放到隔离环境。
5. LLM steering:让模型更少犯错,但不负责兜底
Rules
Rules 会进入 LLM 上下文,帮助模型按团队标准工作。可分为:
- User rules:个人习惯。
- Project rules:项目级工程约束。
- Team rules:组织级安全、合规和风格要求。
Rules 适合写“应该怎么做”,不适合写“绝对不能发生”。后者要交给 hooks 和权限。
Commands
Commands 把复用工作流打包成 slash command,例如 /security-review、/test、/release-check。它能减少口头任务的变体,让 Agent 按固定步骤执行。
MCP
MCP 给 Agent 接外部知识和工具,例如内部文档、API、数据库、知识库。它提升上下文质量,但 MCP 本身也有权限风险,应和 88 页的 MCP allowlist 一起治理。
6. 商业级验收
- 终端命令默认需要审批,auto-run 只开放低风险命令。
- 高风险命令由 hooks 阻断或升级审批。
.cursorignore、文件系统权限和 hooks 分工清楚。.cursor/目录保护已启用或有明确豁免理由。- Browser origin allowlist 覆盖必要域名,外部未知站点默认禁止。
- DLP、secret scan、SAST、license scan 至少接入一个执行点。
- Team rules 写清楚组织要求,但不把它当安全边界。
- MCP server 权限和模型权限已在 88 页同步治理。
7. 常见失败点
- 把 prompt 写得很严,却没有 hooks 和权限限制。
- 开了 auto-run 后允许
git push、deploy、migration、delete。 - 以为
.cursorignore能阻止用户或 Agent 访问敏感文件。 - 允许 Agent 访问任意浏览器 origin,暴露给网页 prompt injection。
- 在本地用户账号下跑 Agent,却按沙箱隔离来评估风险。
- MCP 接入内部系统后,没有同步收紧 allowlist 和审计。
官方来源
- https://cursor.com/docs/enterprise/llm-safety-and-controls.md
- https://cursor.com/docs/agent/security.md
- https://cursor.com/docs/hooks.md
- https://cursor.com/docs/reference/ignore-file.md
- https://cursor.com/docs/rules.md
- https://cursor.com/docs/mcp.md