Skip to content
Apothem
示例

最小钩子

最小 Apothem 钩子示例——在每次文件写入时触发一个检查。

本示例展示最小可能的 Apothem 钩子:一个 PreToolUse 钩子,它在每次 Write 工具调用之前触发并记录目标路径。

钩子脚本

# src/apothem/hooks/log_writes.py
import json, sys

data = json.load(sys.stdin)
path = data.get("tool_input", {}).get("file_path", "unknown")
print(f"[apothem] Writing to: {path}", file=sys.stderr)
sys.exit(0)  # always exit 0; block with the deny envelope below

在 settings.json 中注册

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "python src/apothem/hooks/log_writes.py"
          }
        ]
      }
    ]
  }
}

测试钩子

在 Claude Code 中执行任意文件写入,并在钩子追踪面板中观察 stderr 输出。

阻止写入

要阻止一次写入,请把拒绝信封打印到 stdout,并仍然以 0 退出,与 Apothem 自身的钩子做法一致:

print(json.dumps({"hookSpecificOutput": {"hookEventName": "PreToolUse", "permissionDecision": "deny", "permissionDecisionReason": "blocked by log_writes"}}))
sys.exit(0)

On this page