不用改任何配置文件,命令会自动帮你合并进去(改之前先自动备份)。
用 Codex 的话换成:
/hooks,看到 agent-police-gate 点信任即可。
想卸掉?apgate uninstall claude-code,一行就干净了。
下面是真实的规则和真实的拦截效果,不是示意图。
直接拦死——这种形态没有正当版本:
强制问一次——可能是正常操作,但值得你亲眼看一下:
完全不打扰——日常命令一律放行,连一个字都不会多输出:
approvals 关掉之后什么都不会再弹窗。这个闸门只在真正要紧的形态上,把那一次确认放回来。
每次调用都进哈希链,删一行、改一行,校验立刻失败。apgate report 看摘要。
这周才发布的新指标,apgate rescan 一条命令就能拿去重扫你上个月的会话。
不是看文档推的。下面两件事是测试中发现的,装之前值得知道。
| Claude Code 2.1.269 | Codex CLI 0.153.4 | |
|---|---|---|
| 命中规则时拦截 | ✅ | ✅ |
| 日常命令不受影响 | ✅ | ✅ |
| 调用进账本 | ✅ | ✅ |
permission_mode: bypassPermissions 下,Codex 把闸门判为「需要确认」的命令照跑了——
这是对的,因为根本没人可问。但这会让所有「需要确认」的规则在最需要它们的无人值守场景里变成空操作。
所以闸门会在没有人在场时直接改成拦截:一个没人能回答的确认,必须失败关闭。
.codex/hooks.json,只认
~/.codex/hooks.json——也就是 apgate install codex 写的位置。
论文实测自己那套策略闸门对懂防御的攻击者 100% 失效,这个数字同样适用于本项目。 它能挡住的,是 428 个中转站实测中真实存在的那种通用、不适配客户端的改写——值得挡, 但和「安全了」不是一回事。
真正补上这个缺口需要厂商提供签名的响应信封。目前没有任何主流 tool-use API 或 MCP 规范提供。
不会。任何会拦截的规则,只要在 146 条普通开发命令的语料上误报一次,就不能发布—— 这是 CI 强制的,不是口头承诺。当前规则包在这份语料上的拦截误报率是 0。
普通命令完全不受影响:闸门对干净命令不输出任何内容。
不能。钩子看到的是经过中转站之后的工具调用,它从来没见过模型真正产出的那一条。
论文实测自己那套策略闸门对懂防御的攻击者 100% 失效,这个数字同样适用于本项目。
社区规则永不拦截,只记录。schema 会直接拒绝带 deny 或 ask 的社区规则,CI 每次提交都跑这个检查。
一条错的社区规则代价是日志里多一行,而不是你的 agent 莫名其妙不工作。这个划分才是开放规则库能成立的前提。
规则是数据不是代码:只能从固定谓词表里挑一个再填字面量,没有正则、没有 IO、没有子进程。
规则包用 Sigstore keyless 签名,由 GitHub Actions OIDC 签发,本项目不存在签名密钥。 每次发布同时公布 Merkle root,客户端可以校验发给自己的包和发给所有人的包是同一个—— 包括镜像是我们自己的时候。
不会,这是刻意的。它跑在一个有 shell 权限的 agent 里,开一条自动更新代码的通道 等于在每台用户机器上造一个远程执行入口——正是本项目要防的那种供应链形态。
代码走 pip install -U,用户发起、可审计。只有规则自动更新。
不会。账本在本地,权限 0600,绝不上传,写入前还会抹掉像密钥的 token。
本版本没有任何遥测。将来若加入也一定默认关闭,且绝不携带命令内容、prompt 或文件内容。