集成

Cursor

两分钟内在 Cursor 中设置 zn-gate,然后是技术细节:MCP 服务器、阻止读取密钥和清理 MCP 输出的钩子,以及 Cursor 不允许 zn-gate 覆盖的范围。

查看 .md

快速开始(无需编程)

  1. 检查是否已安装 Node.js。 在 Cursor 中打开 Terminal → New Terminal,粘贴 node --version 并按回车。如果看到版本号(18 或更高),继续下一步。如果看到 "command not found",请从 nodejs.org 安装 LTS 版本,然后关闭并重新打开 Cursor。

  2. 安装 zn-gate 并为 Cursor 开启其保护。 在同一个终端中逐行粘贴,每行后按回车:

    npm install -g zn-gate
    zn hooks install cursor

    在 Mac 上,如果看到 EACCES,请按照 npm 的指南修复权限错误操作。在 Windows 上,如果 PowerShell 提示脚本运行已被禁用,请改为输入 zn.cmd hooks install cursor(尚未验证)。

  3. 重启 Cursor。

状态:这些步骤遵循 Cursor 的文档;我们尚未在 Cursor 中端到端地运行它们(Cursor 没有可供我们自动测试的、带钩子的命令行模式),在 Windows 上则完全未运行。

完成后,Cursor 的智能体将被阻止读取包含真实值的 .env 文件和常见凭据文件(文件读取及大多数 shell 命令);zn-gate 识别出的密钥若出现在你的聊天消息中,会在发送前被阻止;zn-gate 识别出的密钥会从 MCP 工具结果中被移除。

  1. 如果智能体说无法读取你的 .env 文件(可选):运行 zn unlock(首次运行时会创建你的本地保险库),然后运行 zn env shadow .env。此后你的 .env 将保存标记而非真实值,zn-gate 仅为你允许的命令填入实际值。

要撤销设置:zn hooks uninstall cursor。

zn-gate 在 Cursor 中保护什么,不保护什么

在 Cursor 中
阻止读取包含值的 .env 文件、凭据文件(~/.aws/credentials、~/.ssh/id_*…)和 ~/.zn 是,适用于文件读取和 shell 命令
从 MCP 工具结果中移除密钥 是
阻止粘贴到聊天中的密钥 是
从 shell 输出和文件内容中移除密钥 否。 Cursor 不允许钩子修改它们
检查你的其他 MCP 服务器是否存在提示注入 是,如果你对其进行包装(见下文)
Cursor CLI(cursor-agent) 不在覆盖范围内:其钩子支持未有文档说明

未覆盖的情况: 由 shell 命令打印的密钥,或写入智能体所读取的、未被阻止的文件中的密钥,仍会传递给模型。请将密钥保存在 zn-gate 的保险库中(运行 zn unlock,然后运行 zn env shadow .env),使你的文件保存标记而非真实值:参见 Scrubber。钩子是防护措施,而不是沙箱。

技术参考

将 zn-gate 作为 MCP 服务器

一键安装(尚未验证):在浏览器中打开此链接,Cursor 会请求你确认。

cursor://anysphere.cursor-deeplink/mcp/install?name=zn-gate&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInpuLWdhdGUiLCJtY3AiXX0%3D

或者手动将其添加到 ~/.cursor/mcp.json(适用于所有项目)或 .cursor/mcp.json(仅适用于一个项目):

{ "mcpServers": { "zn-gate": { "command": "npx", "args": ["-y", "zn-gate", "mcp"] } } }

之后智能体可以调用 analyze_prompt、check_tool_call、check_tool_result 和 zn_status。何时调用由智能体决定,因此仅靠这一项并非自动保护;上面的钩子才是自动保护。

检查其他 MCP 服务器的输出

npx -y zn-gate init --dry-run   # shows what would change
npx -y zn-gate init             # wraps each local server with zn-gate shield (a backup is written first)

被包装服务器的每个结果都会在智能体看到之前检查提示注入,并移除 zn-gate 识别出的密钥。npx -y zn-gate init --revert 可恢复备份。

钩子

zn hooks install cursor 会写入 Cursor 的 hooks.json(zn-gate 1.5 及更高版本,npm):

  • beforeReadFile 和 beforeSubmitPrompt 采用失败即关闭策略:如果钩子崩溃或超时,读取或提示将被阻止。
  • beforeShellExecution 阻止读取密钥文件的命令,并在需要密钥的命令上指引智能体使用 zn run。
  • postToolUse 从 MCP 工具输出中移除密钥(这是 Cursor 允许钩子修改的唯一输出)。
  • preToolUse 以尽力而为的方式检查写入和删除操作:Cursor 没有记录每个工具的输入。

各智能体的详细信息及比较:compat.md。

Cursor 文档