集成
Cursor
两分钟内在 Cursor 中设置 zn-gate,然后是技术细节:MCP 服务器、阻止读取密钥和清理 MCP 输出的钩子,以及 Cursor 不允许 zn-gate 覆盖的范围。
快速开始(无需编程)
-
检查是否已安装 Node.js。 在 Cursor 中打开 Terminal → New Terminal,粘贴
node --version并按回车。如果看到版本号(18 或更高),继续下一步。如果看到 "command not found",请从 nodejs.org 安装 LTS 版本,然后关闭并重新打开 Cursor。 -
安装 zn-gate 并为 Cursor 开启其保护。 在同一个终端中逐行粘贴,每行后按回车:
npm install -g zn-gate zn hooks install cursor在 Mac 上,如果看到
EACCES,请按照 npm 的指南修复权限错误操作。在 Windows 上,如果 PowerShell 提示脚本运行已被禁用,请改为输入zn.cmd hooks install cursor(尚未验证)。 -
重启 Cursor。
状态:这些步骤遵循 Cursor 的文档;我们尚未在 Cursor 中端到端地运行它们(Cursor 没有可供我们自动测试的、带钩子的命令行模式),在 Windows 上则完全未运行。
完成后,Cursor 的智能体将被阻止读取包含真实值的 .env 文件和常见凭据文件(文件读取及大多数 shell 命令);zn-gate 识别出的密钥若出现在你的聊天消息中,会在发送前被阻止;zn-gate 识别出的密钥会从 MCP 工具结果中被移除。
- 如果智能体说无法读取你的
.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。