Hook:在 AI 工作的指定時機自動檢查與接續
更新日期:2026/10/19。以下整理用途與代表事件,完整支援範圍請查看各產品目前版本的官方文件。
你可以請 AI「改完檔案後跑檢查」,也可以把這個動作掛在特定事件上:只要符合觸發條件,執行環境就呼叫設定好的處理程序。這種機制稱為 Hook(鉤子)。
它適合處理反覆發生、有明確時機的工作,尤其是危險操作的事前檢查、敏感資料送出前的攔截,也可以用於改檔後格式化與等待輸入時通知。這裡談的是 AI 代理執行流程中的事件 Hook;外部服務的 Webhook、Git 的提交 Hook,是其他系統中的事件機制。
常見情境:什麼時候值得用?
| 情境 | 適合的觸發時機 | 可以做什麼? |
|---|---|---|
| 阻擋危險操作 | 刪除、覆寫、部署或資料修改執行前 | 檢查指令、目標與環境;符合禁止條件就阻擋,需要時交由產品支援的確認流程 |
| 檢查敏感資料外傳 | 郵件、上傳、公開發布或外部 API/MCP 呼叫前 | 檢查個資、密鑰與接收目的地;依規則拒絕或在支援時遮罩 |
| 開始或恢復工作 | 工作階段啟動、恢復,或上下文整理後 | 帶入專案摘要、目前環境與必要規則 |
| 操作前檢查 | 指令、檔案修改或外部功能執行前 | 檢查目標路徑與參數;支援時可阻擋不符合規則的操作 |
| 改檔後整理 | 指定修改動作完成後 | 對受影響檔案跑格式化或快速檢查 |
| 工作結束前驗收 | 回合結束或代理準備停止時 | 檢查必要產物與驗證結果;支援時可要求繼續處理 |
| 等待使用者 | 需要輸入或出現權限請求時 | 發出桌面通知,減少一直盯著畫面 |
| 追蹤與收尾 | 動作完成、失敗或工作階段結束 | 記錄結果、保存進度或清理暫存 |
這些是選擇 Hook 的用途方向,並非每個產品都有對應事件。開始時補背景、結束時保存狀態,也不代表系統會自動建立完整的長期記憶。
優先考慮:危險操作與敏感資料送出前檢查
這類 Hook 的價值,是把明確規則放在操作發生前執行,不只靠提示詞提醒 AI「小心」。以下是設計情境,並非已安裝的防護功能:
| 要防止的事情 | 檢查例子 | 可採取的處理 |
|---|---|---|
| 誤刪或覆寫資料 | 大量刪除、強制覆寫、清空資料表,或操作到正式環境 | 阻擋命中規則的操作,回傳原因;需要人工決策時使用該產品支援的確認機制 |
| 讀取或修改敏感檔案 | 私鑰、認證檔與環境變數檔;也檢查經由指令間接存取的路徑 | 在相關讀取或修改前拒絕存取,限定可操作目錄 |
| 把個資或密鑰送到外部 | 郵件內文、附件、上傳檔案、公開 issue,或外部呼叫參數含個資、API 金鑰或憑證 | 同時檢查內容、檔案與目的地;命中規則就阻擋,或在支援參數改寫時先遮罩 |
例如「把客戶資料寄給外部收件者」,可在寄信功能執行前檢查收件地址、附件與內文;發現不允許外傳的資料,就拒絕這次呼叫,而不是寄出後才記錄警告。
Hook 不會自帶個資辨識能力。 需要另外定義檢測規則或接上檢測程式;格式明確的密鑰可做規則掃描,姓名、地址或混合內容仍可能誤判與漏判。檢查附件時也必須實際取得檔案內容,不能只看呼叫中的檔名。
能否攔截,取決於送出途徑是否經過該 Hook。只攔截一個 MCP 功能,不能保證同樣資料不會透過 shell、瀏覽器或其他功能送出。若敏感內容早已讀入模型,之後阻擋另一個服務的上傳,也無法撤回先前已送入模型的內容。
檢測本身也要安排好資料去向:若把原文送到另一家外部服務掃描,資料已先離開原環境。需要避免外傳時,應在受控環境內檢查,並避免把敏感原文寫進 Hook 日誌。
各家 Hook 可用的時機不同
要比較的是產品與執行環境,不只是模型品牌。同樣使用 Claude、GPT 或 Gemini 模型,聊天網站、CLI、桌面程式、IDE 與自行開發的代理,未必開放相同 Hook。
| 產品 | 代表觸發事件 | 使用前要確認 |
|---|---|---|
| Claude Code | 工具執行前後、權限請求、通知、回合停止、上下文整理與子代理事件 | 事件各自支援哪些處理方式;回傳結果能阻擋、補上下文,還是僅供記錄 |
| Codex | 工作階段開始/結束、工具執行前後、權限請求、上下文整理與回合停止等 | 實際工具是否經過 Hook;本機與雲端編排的支援範圍不同,腳本也要存在於執行環境 |
| Antigravity | 工作階段開始、工具執行前後、模型呼叫前後與停止 | App、CLI、IDE 的設定位置與執行環境;每個事件可接受的回傳欄位與控制方式 |
例如操作前的事件,Claude Code 與 Antigravity 使用 PreToolUse;Codex 也有同名事件,但涵蓋的工具與可接受的回傳值仍要各自核對。名稱相同不代表設定檔可以直接複製。
另一個差異是停止時機:Claude Code 的 Stop 關注回合回覆結束,Antigravity 的 Stop 關注執行迴圈停止。這不等於整個專案已通過驗收,也不一定代表所有背景工作都結束。
事前檢查與事後處理要分清楚
想阻擋某個操作,必須選擇執行前且能回傳阻擋決定的事件。動作完成後才收到的事件,可以記錄、檢查或觸發補救,卻不能讓已發生的寫入變成沒有發生。
也不要把「Hook 有執行」當成「錯誤一定會阻擋工作」。有些事件只是通知;有些 Hook 逾時、出錯或輸出格式不合時,主流程仍會繼續。這些行為應在使用產品中實際測試。
格式化或測試的範圍也要對準需求:每改一個字就跑完整建置,可能讓工作變慢。可以在改檔後做小範圍檢查,把完整驗收留在適合的節點。
與 Skill、MCP 怎麼搭配?
- Skill:整理這件工作的步驟、知識與驗收要求。
- MCP:連接外部資料與可用功能。
- Hook:在執行流程的特定事件發生時,自動執行檢查或接續動作。
例如網站維護 Skill 定義修改流程,MCP 提供專案服務的連接,Hook 則在檔案修改後跑格式檢查。三者可分別採用,並沒有必須全部安裝的順序。
Hook 能不能涵蓋 MCP 操作,要看執行環境是否把該次呼叫納入事件;連上 MCP 不會自動獲得 Hook 支援。
從一個明確需求開始
先選一件常忘記的事,例如「每次修改指定檔案後做格式檢查」,寫清楚觸發條件、處理範圍與失敗時要怎麼辦。再到官方文件確認該產品是否有合適事件,以及腳本在哪裡執行。
測試時至少確認:符合條件時會觸發、不符合時不誤觸發,以及失敗或逾時後的行為。停止事件若會要求繼續工作,還需要次數或狀態判斷,避免反覆觸發同一個檢查。
Hook 是在環境允許的範圍內執行程式;第三方腳本應先閱讀再啟用。它也不能取代來源服務權限、沙箱與正式驗收。
回到 AI 協作與擴充,或閱讀 Skill 與 MCP 的差異與搭配。