1. 為什麼需要 Hooks?(實境模擬)
與其用文字解釋,不如直接看看沒有 Hook 和有 Hook 時,Claude Code 在終端機裡的真實反應。
情境:Claude 試圖讀取機密檔案 .env
專案中的 .env 包含了資料庫密碼與 API Key。身為工程師,你希望絕對禁止 AI 讀取它。
claude-code-terminal
2. 完整運作機制與介入時機
除了單純的阻擋,透過點擊「下一步」來演練 Claude 呼叫工具的完整生命週期與回饋迴圈。
教學重點說明
請點擊右上角的「下一步」開始演練流程。如果是手機版,請左右滑動上方圖表觀看。
3. Hook 的註冊位置 (設定檔層級)
除了在對話框輸入 /hooks 指令,你也可以手動編輯設定檔。Claude 支援三種層級的配置檔。
設定檔目錄 (Config Files)
- ~/.claude/settings.json
- .claude/settings.json
- .claude/settings.local.json
Global (全域)
影響你電腦上的所有專案
放在 User 的 Home 目錄下。適合設定你個人的防護習慣,例如:「永遠禁止讀取任何名為 .env 的檔案」。這對你機器上執行的所有 Claude Code 專案都有效。
Project (專案共用)
團隊共享的規範
放在專案資料夾內,應該被 Commit 到 Git 中。適合設定團隊共同的規範,例如:「只要編輯過 JS 檔,就統一執行專案裡的 npm run format」。這樣團隊中任何使用 Claude Code 的人,都會遵守這個規範。
Local (本機不提交)
專屬你的個人覆寫
放在專案資料夾內,但必須加入 .gitignore 中不提交。適合你在本地端開發時,想加上一些只對你個人有用的 Hook 測試或暫時性的除錯指令。
4. 實戰:編寫 Hook 規則
除了在命令列輸入 /hooks,了解 JSON 結構能讓你寫出更強大的正則攔截條件。
支援正則表達式,例如攔截所有寫入操作:Write|Edit|MultiEdit
一鍵載入實務範例:
settings.json