用途:为自定义 Claude 智能体设计和实现基于 hook(钩子)的安全与治理控制,用于控制智能体权限、阻止危险操作并提供审计轨迹。
主要能力:通过钩子在工具调用前后介入。PreToolUse 在工具执行前进行拦截、校验和记录;PostToolUse 在工具执行后记录结果与审计。钩子函数签名为 async def hook_function(input_data, tool_use_id, context) -> dict:返回空字典表示放行,返回含 permissionDecision(如 deny)及 permissionDecisionReason 的对象则阻止操作。可覆盖的治理模式包括:敏感文件访问控制(如 .env、credentials、.pem、.key)、危险命令拦截(如 rm -rf /、sudo rm、fork bomb)、按工具限流(如 WebFetch 10 次、Bash 50 次)、输出内容过滤(如 api_key、password、secret)以及全量审计日志写入 jsonl 文件。
使用方式:先用 HookMatcher 设计匹配规则,可按具体工具(如 Read、Bash)匹配,也可不带 matcher 匹配所有工具;再实现钩子函数,最后在 ClaudeAgentOptions 的 hooks 参数中配置并传入。示例结构:hooks = {"PreToolUse": [HookMatcher(matcher="Read", hooks=[block_sensitive_files])], "PostToolUse": [HookMatcher(hooks=[audit_tool_results])]}。钩子对主智能体及通过 Task 工具派生的子智能体均生效。
适用场景:构建有安全要求的智能体;需要阻止访问敏感文件或危险操作;需要审计日志;需要实现权限策略(文件访问控制、限流、内容过滤)。
限制:资料中钩子事件类型(PreToolUse、PostToolUse 等)被说明为 Claude Code 内部类型,权威类型需通过 hook-management 技能查阅文档确认,可能随版本变化。除文档提示外,具体平台限制、收费与兼容性信息暂未提供。