Hooks 解決的不是「提醒」,而是「執行前控制」
一般專案會把行為規則寫在 CLAUDE.md 或團隊文件中,例如不要碰 production env、修改後要跑測試、提交前要檢查 lint。問題是這些規則仍然要靠模型在每一輪都理解、記得、並主動遵守。上下文變長、任務變複雜、工具變多時,提醒就會變成脆弱的安全機制。
Hooks 的差別在於它們跑的是預先寫好的程式。當 Claude Code 即將呼叫工具、寫檔、執行命令或結束任務時,Hook 可以先檢查輸入、決定是否放行,或把結果同步到外部系統。這讓「不要做某件事」從提示詞變成可測、可審查、可重複執行的控制層。
阻擋高風險操作
在寫入 production config、執行破壞性 shell 命令或碰敏感路徑之前,由 Hook 先判斷並拒絕。
把檢查接進流程
在檔案修改後自動跑測試、提示更新任務狀態,或在停止前執行最後驗證。
補上事件橋接
記錄 session 成本、推送 Slack 或桌面通知、保存可觀測資料,讓 agent 工作不只停在終端機裡。
設定檔其實有三層:事件、匹配規則、實際動作
文章最實用的部分,是把 Hooks 的設定拆成三層來看。第一層是事件 registry,決定要在哪個時間點介入;第二層是 matcher,決定哪些工具或情境會被這組 Hook 處理;第三層才是實際 Hook,也就是要執行的 command、HTTP call 或 MCP tool。
Event registry
例如 PreToolUse 在工具使用前介入,PostToolUse 在工具完成後介入,Stop 在 session 準備結束時介入。
Matcher
用 matcher 對準特定工具或動作,例如只針對 Write、Edit、Bash 執行,避免所有事件都跑同一段檢查。
Hook action
真正執行的邏輯。它可以是一段 shell script、一個 HTTP endpoint,或交給 MCP tool 處理更結構化的任務。
允許、拒絕、要求確認或改寫輸入
阻擋型 Hook 不只是回傳錯誤。更好的做法是輸出結構化決策,告訴 Claude Code 這是政策拒絕,並提供可讀原因。
使用者、專案、plugin、skill、subagent 都可能有 Hook
不同層級的 Hook 生命週期不同。長駐規則適合放在 settings;臨時任務規則則更適合跟 skill 或 subagent 一起啟用。
主流程事件能擋下操作,旁路事件適合觀測與通知
Rahul 特別提醒一個容易混淆的點:事件不是父子關係。PreToolUse 和 PermissionRequest 可能接連發生,但它們是不同的介入點。設計 Hooks 時要先分清楚,這個事件是要影響 Claude 下一步,還是只是旁路同步資料。
主流程事件
- 可讓 Claude Code 暫停等待結果。
- 適合做阻擋、要求確認、輸入改寫。
- 例:工具使用前、權限請求、停止前檢查。
旁路事件
- 適合記錄、通知、同步狀態。
- 不應依賴它來阻擋高風險操作。
- 例:通知事件、設定變更、觀測型紀錄。
如果目標是防止錯誤發生,Hook 要放在行動前;如果目標是讓團隊知道發生了什麼,Hook 才放在行動後或旁路事件。把這兩種用途混在一起,會讓安全邊界看起來存在,實際上卻沒有攔截能力。
要阻擋 Claude,不要只回傳一般失敗
文章指出一個實務陷阱:傳統 shell 腳本裡 exit 1 常代表失敗,但在 Hook 流程中,這不等於明確阻擋。真正需要的是系統錯誤訊號,或用結構化 JSON 回傳政策決策。後者通常更適合團隊規則,因為它能說清楚拒絕原因,也能引導模型改用安全替代方案。
{
"decision": "deny",
"reason": "production config must be edited manually"
}
{
"decision": "ask",
"reason": "this command modifies deployment state"
}
最值得先做的 Hook:保護不可自動修改的檔案
如果只挑一個起點,文章建議從保護 production 環境檔開始。這不是最華麗的用法,但最能展現 Hooks 的價值:規則不是寫在文件裡等待模型記得,而是在每次 Write 或 Edit 前由腳本讀取 tool input,檢查目標路徑,符合保護規則就拒絕。
5 個帶走重點
- 01Hooks 不是 prompt,它們是會在 Claude Code 執行流程中跑起來的程式。
- 02安全規則要放在行動前,觀測與通知才放在行動後或旁路事件。
- 03事件彼此獨立,不要假設
PreToolUse、PermissionRequest、PostToolUse有父子關係。 - 04阻擋操作最好回傳結構化政策決策,讓模型知道這不是環境壞掉,而是規則不允許。
- 05Hooks 越有力,錯誤也越昂貴;從小規則開始,測過再擴大範圍。