适用于 Codex CLI 的 zn-gate

为 Codex CLI 安装 zn 的钩子:阻止读取含值的 .env 文件和凭据文件,对工具输出进行脱敏,并拦截粘贴到提示词中的密钥。

查看 .md

你需要 Node.js 18 或更高版本。在终端中逐行粘贴以下命令,每行后按回车:

npm install -g zn-gate
zn hooks install codex

然后打开 Codex,使用 /hooks 批准新的钩子。

你将获得的保护

  • 含值的 .env 文件、凭据文件和 ~/.zn 的读取会被阻止,无论是在 shell 命令中还是在补丁(apply_patch)中。
  • 工具输出在模型看到之前会被脱敏。Codex 会用脱敏后的文本替换结果,因此模型拿到的是文本,而不是结构化的结果。
  • 粘贴到提示词中的密钥会被拦截。
  • 对于使用 __ZN_<NAME>__ 标记的命令,Codex 会收到应使用的确切 zn run -- ... 命令行。

限制

  • Codex 把它的钩子称为"护栏,而非强制执行边界"。如果 zn 钩子无法运行,Codex 会将其报告为失败,调用或提示词将继续执行。
  • Codex 自身的会话日志会保留原始输出。
  • 在 Windows 上,钩子命令是在 PowerShell 和命令提示符中手动运行的,并未通过我们的自动化测试。

把 .env 中的值存入保险库

智能体无法读取含真实值的 .env 文件。请把这些值移入 zn-gate 的加密保险库,文件中会保留 __ZN_STRIPE_KEY__ 等标记:

zn unlock            # 首次运行时创建保险库
zn env shadow .env

完成后,你自己的应用读取 .env 时也只会得到标记:在你允许之后,用 zn-gate 的 run 命令启动它。env shadow 会告诉你如何撤销。更多信息:保险库。

检查是否正常工作

在新的终端中运行 zn-gate check。应显示 Codex CLI 的 OK。输出含义。

在 Windows PowerShell 中,如果 npm 提示 "running scripts is disabled on this system",请改用 npm.cmd 和 zn.cmd:参见安装。