Claude Code Hook 操作指南:5 分鐘強制執行安全規則

📚 Claude Code 升級系列:文章 2/5

Hook 是最簡單的升級方式。只需 5 分鐘,就能強制執行安全規則。本文提供可複製的模板。

什麼是 Hook?

Hook 是在 Claude 工作流程的特定時刻自動觸發的指令。作用類似非同步程式設計的「條件判斷」和「回呼函式」。

3 種 Hook 類型

Hook 類型 何時使用 例子
PreToolUse 工具執行前阻止 阻止讀取 .env
PostToolUse 工具執行後自動化 自動執行 prettier
Stop 完成前驗證並迭代 驗證 JSON 有效性

模板 1:PreToolUse Hook(保護敏感檔案)

用途:阻止 Claude 讀取或修改 .env、secrets、credentials 檔案

// ~/.claude/settings.json
{
  "hooks": {
    "preToolUse": [
      {
        "description": "Prevent reading .env files",
        "toolName": "Read",
        "condition": "filename contains '.env' OR filename contains 'secrets'",
        "action": "block",
        "message": "❌ Cannot read .env files. Use environment variables instead."
      }
    ]
  }
}

模板 2:Stop Hook(驗證 JSON)

用途:在完成前驗證 JSON 有效性,失敗則自動重試

// ~/.claude/settings.json
{
  "hooks": {
    "stop": [
      {
        "description": "Validate JSON before stopping",
        "condition": "task involves JSON",
        "validator": {
          "command": "jq empty /tmp/output.json",
          "allowRetry": true,
          "maxRetries": 3,
          "retryMessage": "JSON invalid. Fixing syntax..."
        }
      }
    ]
  }
}

快速 4 步實施

  1. 選擇規則:找到被多次違反的規則
  2. 寫 Hook:複製上面的模板,修改 condition
  3. 編輯 settings.json:添加到 ~/.claude/settings.json
  4. 重啟 Claude Code:Hook 在啟動時載入
  5. 測試:故意違反規則,驗證 Hook 是否阻止

故障排除

Q:Hook 不生效?

  • ✓ 確保重啟了 Claude Code
  • ✓ 檢查 settings.json 是否有效:`jq . ~/.claude/settings.json`
  • ✓ 查看日誌:`tail ~/.claude/logs/hooks.log`

下一步:
Hook 太簡單了?嘗試 Skill(複雜工作流自動化)
→ 文章 3:Skill 操作指南(1 小時深度)

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *