具備 Shell 存取權限的 AI 代理,在混淆時最終可能會嘗試執行 git push --force 或 git reset --hard 等指令。您不需要監控每個指令,一個小巧的 PreToolUse 鉤子就能在這些危險指令執行前將其阻擋。
這個鉤子程式碼會讀取標準輸入中的工具呼叫 JSON,如果偵測到危險的 Git 指令,就會以結束碼 2 阻擋其執行。例如,它會檢查 git push 搭配 --force 或 -f、git reset --hard、git clean -fd、git branch -D 或 git checkout -- . 等指令。如果指令被阻擋,它會輸出錯誤訊息並告知使用者需要手動執行。
接著,將其註冊到 .claude/settings.json 檔案中,設定 PreToolUse 鉤子以使用這個 Bash 腳本。這樣一來,所有 Bash 相關的工具呼叫都會先經過這個安全檢查。
當 Claude 嘗試執行這些被列為危險的指令時,鉤子會以結束碼 2 退出,阻止該指令實際運行。同時,標準錯誤輸出的訊息會回傳給 Claude,讓它能向您解釋情況,而不是盲目地重試。
建議將阻擋模式清單保持簡短且具體,因為阻擋所有 git push 指令只會讓您想關閉鉤子。將這個鉤子提交到版本控制中,確保儲存庫中的每個人都能享有相同的安全防護。您還可以將其與 Bash 允許清單搭配使用,這樣一般的指令就不會每次都觸發提示。
作者在 Vildanden Agent Config 中,將此鉤子與 Bash 允許清單、.env 拒絕規則、/review 指令以及簡短的 CLAUDE.md 文件一同發布,其免費範例足以讓您立即嘗試這種模式。