> learning_module --topic="Hooks"

掌控 Claude 的行動:
Hooks 攔截與自動化機制

你不必總是讓 AI 自主決定一切。透過設定 Hooks,你可以在 Claude 執行工具的「事前 (Pre)」強制踩煞車,或在「事後 (Post)」觸發程式碼檢查並回傳修正建議。

1. 為什麼需要 Hooks?(實境模擬)

與其用文字解釋,不如直接看看沒有 Hook 和有 Hook 時,Claude Code 在終端機裡的真實反應。

情境:Claude 試圖讀取機密檔案 .env

專案中的 .env 包含了資料庫密碼與 API Key。身為工程師,你希望絕對禁止 AI 讀取它。

claude-code-terminal
# 點擊左側按鈕開始模擬...

2. 完整運作機制與介入時機

除了單純的阻擋,透過點擊「下一步」來演練 Claude 呼叫工具的完整生命週期與回饋迴圈。

使用者 (You)
本機端 Claude Code
Claude 雲端模型

教學重點說明

請點擊右上角的「下一步」開始演練流程。如果是手機版,請左右滑動上方圖表觀看。

3. Hook 的註冊位置 (設定檔層級)

除了在對話框輸入 /hooks 指令,你也可以手動編輯設定檔。Claude 支援三種層級的配置檔。

設定檔目錄 (Config Files)
  • ~/.claude/settings.json
  • .claude/settings.json
  • .claude/settings.local.json
Global (全域)

影響你電腦上的所有專案

放在 User 的 Home 目錄下。適合設定你個人的防護習慣,例如:「永遠禁止讀取任何名為 .env 的檔案」。這對你機器上執行的所有 Claude Code 專案都有效。

4. 實戰:編寫 Hook 規則

除了在命令列輸入 /hooks,了解 JSON 結構能讓你寫出更強大的正則攔截條件。

支援正則表達式,例如攔截所有寫入操作:Write|Edit|MultiEdit

一鍵載入實務範例:
settings.json