Claude Code Hooks
底層機制與防禦實戰
這是一份不妥協的技術指南。我們將徹底解析 queries.zip 專案中,如何撰寫堅不可摧的 Hooks 來阻擋 Claude 讀取機密檔案。拋棄死板的教學,請直接在下方的模擬器中驗證你的邏輯。
防禦標靶:機密檔案 .env
目標環境中存在 SECRET_API_KEY="SUPER SECRET"。我們的唯一任務,就是實作完美無瑕的 Hook 邏輯,在 Claude 觸碰它之前將其攔截。
時機決定命運:Pre vs Post
防護檔案的鐵則:必須在操作發生前攔截。 許多開發者誤用 PostToolUse 紀錄日誌並回傳錯誤碼,卻不知道此時檔案早已被 Claude 讀取完畢。
鎖定目標工具:隱蔽的 Grep 與動態 MCP
防禦網的第二步是定義要攔截的 tool_name。除了直覺的 Read,開發者極常漏掉 Grep(搜尋內容等同讀取內容)。另外,由於 MCP Servers 會動態注入工具,最佳實踐是直接透過終端機探測。
解析 Standard In (JSON Payload Diff)
Hook 觸發時,Claude 會將 JSON 資料注入到腳本的 Standard In (stdin)。防禦腳本最常犯的錯就是**沒有正確處理屬性差異**。比較下方 Read 與 Grep 的結構差異。
決策與反饋:防禦腳本編譯與測試實驗室
之前的設計確實違反直覺,因為它把「寫腳本」跟「執行測試」混在一起了!
好的開發者體驗應該是:先設定好你的防禦邏輯 (Script Builder),再丟入不同的檔案來進行測試 (Test Lab)。