导读:Kimi Code支持Hooks自动触发脚本,官方示例包括在Agent执行Shell前检查rm -rf等危险操作。Hooks适合把安全规则放进确定性执行层,避免只依赖模型自觉。但一个简单关键词匹配容易被别名、变量、管道和脚本文件绕过,需要分层策略。
Hooks放在哪些关键事件
PreToolUse用于执行前检查命令、目标路径和环境,最适合阻断;执行后Hook记录退出码、变更和耗时;用户提交时可以附加当前分支与环境信息。安全Hook自身应短小、稳定、超时默认拒绝高风险动作。
不要让Hook自动修改危险命令后继续,因为修改可能改变业务含义。正确做法是返回拒绝原因和安全替代建议,由用户或Agent重新提交。
命令解析不能只搜字符串
先识别工具和参数,再解析Shell操作符、重定向、sudo、远程命令与子Shell。删除命令检查规范化后的绝对路径,禁止根目录、用户目录和项目外路径。curl管道到Shell、chmod、用户管理和防火墙进入高风险集合。
脚本文件执行前检查文件来源与哈希。别名和变量展开可能隐藏命令,无法可靠解析时要求人工审批。允许规则采用窄前缀和具体目录,不能允许整个bash解释器。
环境与权限分层
开发容器允许更多可回滚操作,生产服务器默认只读。Hook读取hostname、Git分支和环境标识,阻止在生产运行迁移、删除和发布。Agent账号仍采用最小权限,不能把Hook当唯一防线。
密钥不进入Hook输出和模型上下文。日志记录命令摘要、规则、决定和操作者,但脱敏Token与个人数据。安全规则集中版本管理并经过代码评审。
测试和应急
为规则建立攻击样本,包括空格变化、绝对路径、通配符、变量、管道、base64、脚本间接执行和软链接。每次规则更新自动测试,避免既漏拦又阻断正常构建。
发现越权后终止任务、撤销凭证并检查文件与远程连接。保留Hook版本和事件记录。定期统计拒绝原因,把常见合法操作转成受控工具,而不是不断放宽Shell。
执行清单
- 在PreToolUse执行确定性命令检查。
- 规范化路径并识别管道、重定向和间接脚本。
- 按开发、测试、生产使用不同规则。
- Hook日志脱敏且规则版本化评审。
- 用绕过样本持续测试并保留应急流程。
总结
Kimi Code Hooks能把Agent安全从提示词推进到执行层。只有结合可靠解析、最小权限、环境分层和测试,才能真正挡住危险操作而不制造大量误报。