Hook 是护栏的默认形态,默认失败却是放行:钩子崩了、超时、退出码异常,动作照跑,除非逐条写 onFailure:block。claude-code #100064 里 265 次静默失败、3 份简报漏检,就是这么发生的;2.1.295 给了开关,文档还没跟上,Windows 还有个退出码被当成功的洞。先审你的闸钩:能不能失败即拦,比拦得准更重要。
Hook 默认放行:Claude Code 2.1.295 让「钩子跑不起来即拦」成为逐钩子可选项,文档却同日仍写「别指望卡住的钩子当闸」——护栏的失败语义第一次被摆上台面,默认仍是 fail-open
热度盘面 Top 5
-
护栏的失败语义本周被摆上台面。用户报告 claude-code #100064(10/6 汇总一天多会话):守卫脚本被 agent 改出语法错后,265 次 PreToolUse/Stop 钩子以 exitCode 1 记为 hook_non_blocking_error 却照跑工具,3 份 agent 简报未经检查发出,Stop 回话闸连续失败 10 次——根源是 exit 1(无有效 JSON 时)按「非阻断错误」处理。官方 2.1.295(10/8)补一半:command/HTTP 钩子可配 onFailure:"block"(起不来/超时/异常退出即拦),opt-in、默认仍放行;同日 hooks 参考仍写「别指望卡住的钩子当闸」且全篇无 onFailure,与 changelog 打架。2.1.294 修「把钩子写成指令(如 Block commands that…)该拦没拦」,2.1.296 修 managed PreToolUse 拒绝却不结束回合、PostToolUse 的 updatedMCPToolOutput 未生效。实现坑:#100891 称 Windows 下 powershell -File 指向缺失脚本以 0xFFFD0000 退出、低 16 位为零被当成功,onFailure:block 不拦,2.1.296 仍复现。
编辑注 把「钩子=确定性闸门」当假设就错了:崩溃的钩子默认放行,可靠性等于你手写脚本的可靠性。行动:给每条安全钩显式加 onFailure:"block" 配短超时,别用退出码当布尔;顺带核你 harness 的文档与实现是否也各说各话。
-
Codex 0.162.0(10/8)把沙箱的自我加固补齐:ripgrep 配置不再能削弱 deny-glob mask、拒绝可写的「沙箱构建可执行文件」、修 Linux 沙箱「多个 deny 文件」下启动失败;另有 Code Mode 里 opt-in 的 ranked tool search、从可信本地项目创建/列出 managed Git worktree、Guardian V2 的 Decisions 对照与一致性/时延指标、MCP 沙箱状态强制的端到端覆盖。0.162.1(10/9)修 TUI 崩溃与后台服务/CLI 默认特性不匹配的启动失败。
编辑注 和 Claude Code 同周都在堵同一类洞:工具自己的配置反过来松开 deny(ripgrep 配置、构建产物可执行)。跟法:把「谁能改沙箱策略输入」——rg 配置、构建脚本、worktree——一并纳入 deny 面,别只盯模型的命令。
-
NVIDIA/OpenShell(Apache-2.0,Rust)自称「agent 舰队的安全私密运行时」:在策略里声明每个 agent 能碰什么,内核层对每次文件访问/系统调用/网络连接执法;策略变更在生效前先过 gateway 里的 policy prover,预判将放开的凭据可达、新 HTTP 方法与云元数据端点访问;凭据以不透明占位符交给 agent、只在 profile 授权的端点解析;沙箱支持 Docker/Podman/MicroVM/K8s,已涵盖 Claude Code/Codex/Copilot CLI/OpenCode 等。最新版 v0.1.2(9/28)。
编辑注 它把「审批」换成「策略边界」——不是每次动作问你,而是内核不放行。值得抄的是策略变更前的 prover:改策略本身也要被审。自建 harness 时先决定执法在内核还是在钩子;钩子那条路本周已被证明会静默放行。
-
「agent harness 控制面」:在一台机器上统一驱动 Claude Code/Codex/Cursor/Grok Build/OpenCode/Google Antigravity,各 agent 走各自本地 CLI 登录;客户端含 iOS/Android/web/Electron,MIT、pnpm monorepo。第三方周报(截至 10/11)记其约 26.8k★、周增约 2,367。项目自述早期、暂不收大功能贡献。
编辑注 控制面这层在抢位:它不碰模型,只统一登录、会话与远端接入——多 agent 并用时,凭据与配置隔离就在它手里。选型先看它如何隔离各家 agent 的凭据与工作目录,别只看界面。
-
claude-mem(Apache-2.0,13.35.0)是跑在 Claude Code 等 harness 上的跨会话记忆:靠 SessionStart/UserPromptSubmit/PostToolUse/Stop/SessionEnd 五个生命周期钩子(6 个钩子脚本)采集观察,AI 压缩成语义摘要存 SQLite(加 Chroma 向量),经 MCP 工具分层取回(search→timeline→get_observations,自述约十倍 token 节省),并声称支持 Codex/Gemini/Copilot/OpenCode/Hermes/OpenClaw。
编辑注 它印证钩子已是 harness 的通用扩展面:一个记忆系统不带私有 API,全挂在官方生命周期事件上就能跨 harness。若你要做上下文/记忆扩展,优先用生命周期钩子而非改内核——代价是继承同一套失败语义。