最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Claude Code Hooks 類型與使用指南

  發(fā)布時間:2026-06-04 10:42:00   作者:kunge2013   我要評論
本文總結(jié) Claude Code / 本倉庫恢復(fù)版 claude-code 中 hooks 的類型、觸發(fā)時機(jī)、典型使用場景、配置方式與注意事項, 下面就來詳細(xì)的介紹一下,感興趣的可以了解

本文總結(jié) Claude Code / 本倉庫恢復(fù)版 claude-code 中 hooks 的類型、觸發(fā)時機(jī)、典型使用場景、配置方式與注意事項。

Hooks 是 Claude Code 在會話、工具調(diào)用、權(quán)限、壓縮、子代理、任務(wù)等生命周期節(jié)點(diǎn)執(zhí)行的自定義動作。它們適合做自動校驗、權(quán)限治理、日志審計、上下文注入、格式化、通知和資源清理。

0. 整體流程圖

整體流轉(zhuǎn)可以理解為:會話啟動后觸發(fā) SessionStart;用戶提交 prompt 后、Claude 處理前觸發(fā) UserPromptSubmit;Claude 推理中如果要調(diào)用工具,先在權(quán)限彈窗前觸發(fā) PermissionRequest,再在工具真正執(zhí)行前觸發(fā) PreToolUse;工具成功后觸發(fā) PostToolUse,失敗后觸發(fā) PostToolUseFailure,權(quán)限被拒絕后觸發(fā) PermissionDenied;子代理、上下文壓縮、通知和任務(wù)事件會在各自生命周期點(diǎn)觸發(fā);最后在回復(fù)結(jié)束前觸發(fā) Stop,會話退出時觸發(fā) SessionEnd。

1. 配置位置

作用域配置文件或來源適用場景是否建議提交到倉庫
用戶級~/.claude/settings.json個人通用習(xí)慣,例如所有項目都禁止危險 Bash 命令
項目級.claude/settings.json團(tuán)隊共享規(guī)則,例如項目統(tǒng)一 formatter、lint、測試鉤子
項目本地級.claude/settings.local.json個人在當(dāng)前項目的本地配置,例如本機(jī)路徑、本地通知腳本
插件級~/.claude/plugins/*/hooks/hooks.json由插件提供的通用 hook 能力
會話級運(yùn)行時內(nèi)存注冊臨時 hook,隨會話結(jié)束清除

基礎(chǔ)配置結(jié)構(gòu):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash|Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/check.py",
            "timeout": 30
          }
        ]
      }
    ]
  }
}

2. Hook 執(zhí)行類型

Hook 事件描述“什么時候觸發(fā)”,hook 執(zhí)行類型描述“觸發(fā)后用什么方式執(zhí)行”。

執(zhí)行類型關(guān)鍵字段什么時候使用如何使用注意事項
commandcommand, shell, timeout, statusMessage, once, async, asyncRewake, if需要執(zhí)行本地腳本或 shell 命令時;最常用寫一個腳本從 stdin 讀取 JSON,輸出文本或 JSON,再在 settings.json 配置 commandhook 可執(zhí)行任意命令,只運(yùn)行可信腳本;建議設(shè)置合理 timeout
promptprompt, model, timeout, statusMessage, once, if需要用模型判斷某個事件是否合規(guī),或生成簡短建議配置 prompt,讓 Claude Code 把 hook 輸入交給模型分析適合判斷和文本分析,不適合強(qiáng)制性安全邊界
agentprompt, model, timeout, statusMessage, once, if需要啟動代理做更完整的驗證或檢查配置 agent prompt,要求代理審查輸入、輸出結(jié)論成本和延遲更高;適合較重的檢查
httpurl, headers, allowedEnvVars, timeout, statusMessage, once, if需要把 hook 事件發(fā)送到外部服務(wù),例如審計、通知、策略引擎Claude Code 向 url POST hook 輸入 JSON,服務(wù)返回 JSONHTTP hook 必須返回 JSON;不要把敏感信息發(fā)到不可信服務(wù)

callbackfunction 類型屬于程序內(nèi)或會話內(nèi)注冊機(jī)制,不適合直接寫入持久化 settings.json。

3. Hook 事件類型總表

Hook 類型觸發(fā)時機(jī)什么時候使用如何使用常見 matcher
PreToolUseClaude 準(zhǔn)備調(diào)用工具之前阻止危險命令、限制文件寫入范圍、校驗工具輸入、改寫工具輸入配置在 hooks.PreToolUse 下,按工具名匹配;腳本讀取 tool_name 和 tool_input,必要時返回 permissionDecision 或 updatedInput工具名,例如 Bash, Write, Edit, Read
PostToolUse工具調(diào)用成功之后自動格式化、運(yùn)行 lint/test、記錄工具結(jié)果、補(bǔ)充上下文、處理 MCP 工具輸出配置在 hooks.PostToolUse 下;腳本讀取 tool_response 并返回普通輸出或結(jié)構(gòu)化 JSON工具名
PostToolUseFailure工具調(diào)用失敗之后收集失敗診斷、記錄錯誤、提示修復(fù)建議配置在 hooks.PostToolUseFailure 下;腳本讀取 error 字段工具名
PermissionRequestClaude Code 需要權(quán)限決策時自動批準(zhǔn)低風(fēng)險命令、拒絕高風(fēng)險命令、改寫工具輸入、接入組織策略配置在 hooks.PermissionRequest 下,返回 hookSpecificOutput.decision.behavior 為 allow 或 deny,可附帶 updatedInput工具名
PermissionDenied工具權(quán)限被拒絕后記錄拒絕原因、通知用戶、決定是否引導(dǎo)換方案配置在 hooks.PermissionDenied 下,讀取被拒絕的工具和原因工具名
NotificationClaude Code 發(fā)出通知時轉(zhuǎn)發(fā)到桌面、Slack、企業(yè) IM、日志系統(tǒng)配置在 hooks.Notification 下;按通知類型匹配notification_type
UserPromptSubmit用戶提交 prompt 后、Claude 處理前注入項目上下文、審計用戶輸入、阻止違規(guī)請求、補(bǔ)充團(tuán)隊規(guī)則配置在 hooks.UserPromptSubmit 下;返回 additionalContext 可給模型增加上下文通常不按工具匹配
SessionStart會話開始、恢復(fù)、清空后重新進(jìn)入等場景加載項目上下文、設(shè)置 watch paths、輸出初始化提示配置在 hooks.SessionStart 下;可返回 additionalContext, initialUserMessage, watchPathssource
SessionEnd會話結(jié)束、清空或退出時清理資源、保存狀態(tài)、發(fā)送結(jié)束通知配置在 hooks.SessionEnd 下;腳本應(yīng)很快完成reason
StopClaude 完成一次響應(yīng)、即將停止時最終質(zhì)量檢查、檢查待辦未完成項、要求 Claude 繼續(xù)修復(fù)配置在 hooks.Stop 下;返回阻塞結(jié)果可促使繼續(xù)處理通常無 matcher
StopFailureStop hook 或停止流程失敗時記錄停止失敗、診斷異常配置在 hooks.StopFailure 下,讀取錯誤信息error
SubagentStart子代理啟動時給子代理注入上下文、記錄代理開始執(zhí)行配置在 hooks.SubagentStart 下agent_type
SubagentStop子代理完成時校驗代理輸出、收集報告、阻止不合格結(jié)果進(jìn)入主流程配置在 hooks.SubagentStop 下agent_type
PreCompact上下文壓縮前保存關(guān)鍵狀態(tài)、導(dǎo)出中間結(jié)論、阻止不合適的壓縮配置在 hooks.PreCompact 下trigger
PostCompact上下文壓縮后恢復(fù)關(guān)鍵上下文、重新注入摘要或提醒配置在 hooks.PostCompact 下trigger
Setup初始化或 setup 流程觸發(fā)時初始化環(huán)境、準(zhǔn)備上下文、執(zhí)行一次性設(shè)置配置在 hooks.Setup 下trigger
TeammateIdle協(xié)作 agent 或 teammate 空閑時自動分派任務(wù)、提醒、狀態(tài)檢查配置在 hooks.TeammateIdle 下通常無 matcher
TaskCreated任務(wù)創(chuàng)建時記錄任務(wù)、同步到外部系統(tǒng)、通知協(xié)作方配置在 hooks.TaskCreated 下通常無 matcher
TaskCompleted任務(wù)完成時結(jié)果校驗、歸檔、通知、觸發(fā)后續(xù)流程配置在 hooks.TaskCompleted 下通常無 matcher
ElicitationMCP elicitation 請求發(fā)起時自動接受、拒絕或取消 MCP 服務(wù)提出的問題配置在 hooks.Elicitation 下mcp_server_name
ElicitationResultMCP elicitation 返回結(jié)果時校驗返回內(nèi)容、審計用戶/系統(tǒng)響應(yīng)配置在 hooks.ElicitationResult 下mcp_server_name
ConfigChange配置發(fā)生變化時刷新緩存、記錄配置變更、重新加載策略配置在 hooks.ConfigChange 下source
WorktreeCreate創(chuàng)建 worktree 時接管或參與 worktree 創(chuàng)建,并在返回路徑前完成必要初始化配置在 hooks.WorktreeCreate 下;必須通過 stdout 或 hookSpecificOutput.worktreePath 返回非空 worktree 路徑通常無 matcher
WorktreeRemove刪除 worktree 時清理資源、釋放鎖、刪除臨時文件配置在 hooks.WorktreeRemove 下通常無 matcher
InstructionsLoaded指令文件加載完成后審計或追加說明上下文、提示沖突規(guī)則配置在 hooks.InstructionsLoaded 下load_reason
CwdChanged當(dāng)前工作目錄變化時更新路徑相關(guān)環(huán)境、刷新項目上下文配置在 hooks.CwdChanged 下通常無 matcher
FileChanged被監(jiān)聽的文件變化時自動刷新上下文、重新加載配置或規(guī)則先通過 SessionStart 返回 watchPaths,再配置 FileChanged 處理變更文件 basename

4. 常見目標(biāo)與推薦 hook

目標(biāo)推薦 hook推薦 matcher典型做法
阻止危險 Bash 命令PreToolUseBash讀取 tool_input.command,命中 rm -rf, git reset --hard, `curl
限制只能改某些目錄PreToolUse`WriteEdit
編輯后自動格式化PostToolUse`WriteEdit
工具失敗后自動診斷PostToolUseFailure`BashRead
自動批準(zhǔn)低風(fēng)險只讀命令PermissionRequestBash對 git status, ls, pwd 等返回 hookSpecificOutput.decision.behavior: "allow"
用戶輸入后補(bǔ)充上下文UserPromptSubmit返回 additionalContext,例如項目當(dāng)前規(guī)范或安全邊界
會話啟動時加載項目信息SessionStartsource返回項目說明、默認(rèn)任務(wù)提醒、需要監(jiān)聽的文件路徑
響應(yīng)結(jié)束前質(zhì)量門禁Stop檢查是否運(yùn)行測試、是否完成待辦;不滿足則阻塞并說明原因
子代理完成后校驗SubagentStopagent_type檢查代理輸出是否包含必需字段或是否發(fā)現(xiàn)高危問題
上下文壓縮前保存狀態(tài)PreCompacttrigger把關(guān)鍵任務(wù)狀態(tài)寫入文件或外部系統(tǒng)
任務(wù)完成后通知TaskCompleted發(fā)桌面通知、Webhook 或企業(yè) IM 消息
接管 worktree 創(chuàng)建WorktreeCreate創(chuàng)建或初始化 worktree 后,返回最終 worktree 路徑

5. Hook 輸入?yún)f(xié)議

Claude Code 會把結(jié)構(gòu)化 JSON 寫入 hook 進(jìn)程的 stdin。

通用字段:

字段類型含義
session_idstring當(dāng)前會話 ID
transcript_pathstring當(dāng)前 transcript 文件路徑
cwdstring當(dāng)前工作目錄
permission_modestring?當(dāng)前權(quán)限模式,可能不存在
agent_idstring?子代理 ID,主線程通常不存在
agent_typestring?agent 類型,可能不存在
hook_event_namestring當(dāng)前 hook 事件名

工具相關(guān) hook 額外字段:

字段出現(xiàn)于含義
tool_namePreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionDenied工具名
tool_input工具相關(guān) hook工具輸入
tool_responsePostToolUse工具成功輸出
error失敗類事件錯誤信息

示例腳本讀取輸入:

#!/usr/bin/env python3
import json
import sys

payload = json.load(sys.stdin)
print(json.dumps({"suppressOutput": True}))

6. Hook 輸出協(xié)議

command hook 的 stdout 如果去掉空白后以 { 開頭,會被當(dāng)成 JSON 解析;否則按普通文本處理。http hook 必須返回 JSON。

通用輸出字段:

字段類型作用
continuebooleanfalse 表示阻止 Claude 繼續(xù)
suppressOutputboolean是否隱藏 hook stdout
stopReasonstringcontinue: false 時展示的停止原因
decisionstring常見值為 approve 或 block
reasonstring決策原因
systemMessagestring展示給用戶的系統(tǒng)消息或警告
hookSpecificOutputobject針對具體 hook 的結(jié)構(gòu)化輸出

常用 hookSpecificOutput

Hook可用字段用法
PreToolUsepermissionDecision, permissionDecisionReason, updatedInput允許、拒絕或改寫即將執(zhí)行的工具輸入
PermissionRequestdecision.behavior, decision.updatedInput, decision.message對權(quán)限請求返回允許或拒絕決策
UserPromptSubmitadditionalContext給 Claude 追加上下文
SessionStartadditionalContext, initialUserMessage, watchPaths初始化會話上下文和文件監(jiān)聽
PostToolUseupdatedMCPToolOutput更新 MCP 工具輸出,僅對 MCP 工具有效
WorktreeCreateworktreePathHTTP hook 返回創(chuàng)建好的 worktree 路徑;command hook 可直接輸出路徑

權(quán)限請求允許示例:

{
  "hookSpecificOutput": {
    "hookEventName": "PermissionRequest",
    "decision": {
      "behavior": "allow",
      "updatedInput": {}
    }
  }
}

權(quán)限請求拒絕示例:

{
  "hookSpecificOutput": {
    "hookEventName": "PermissionRequest",
    "decision": {
      "behavior": "deny",
      "message": "該命令不允許自動執(zhí)行"
    }
  }
}

阻止危險命令示例:

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "deny",
    "permissionDecisionReason": "禁止執(zhí)行破壞性 rm 命令"
  }
}

注入上下文示例:

{
  "hookSpecificOutput": {
    "hookEventName": "UserPromptSubmit",
    "additionalContext": "本項目要求修改代碼后運(yùn)行相關(guān)測試。"
  }
}

會話啟動示例:

{
  "hookSpecificOutput": {
    "hookEventName": "SessionStart",
    "additionalContext": "已加載項目上下文。",
    "initialUserMessage": "請先閱讀 README.md 和 AGENTS.md。",
    "watchPaths": ["/absolute/path/to/AGENTS.md"]
  }
}

7. 退出碼語義

退出碼行為什么時候使用
0成功hook 檢查通過,或只輸出信息
2阻塞錯誤,Claude 會收到 hook feedback需要明確阻止當(dāng)前動作或要求 Claude 修正
其他非零值非阻塞錯誤,通常展示給用戶但不一定阻止流程hook 自身失敗但不應(yīng)中斷主流程

也可以用 JSON 表達(dá)阻塞:

{
  "decision": "block",
  "reason": "該命令不允許執(zhí)行"
}

8. Matcher 與條件

8.1 matcher

matcher 用來篩選 hook 是否執(zhí)行。

寫法含義示例
省略或 *匹配全部所有工具調(diào)用后都運(yùn)行日志 hook
精確工具名只匹配單個工具Bash
管道分隔匹配多個工具`Write
正則表達(dá)式更靈活的匹配^mcp__.*

8.2 if 條件

if 是更細(xì)粒度的工具條件,適用于工具相關(guān)事件:

  • PreToolUse
  • PostToolUse
  • PostToolUseFailure
  • PermissionRequest

示例:

{
  "type": "command",
  "command": "python3 .claude/hooks/check-git.py",
  "if": "Bash(git *)"
}

9. 配置示例

9.1 禁止危險 Bash 命令

.claude/settings.json

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/block-dangerous-bash.py",
            "timeout": 10
          }
        ]
      }
    ]
  }
}

.claude/hooks/block-dangerous-bash.py

下面腳本只是最小演示,不能覆蓋所有 shell 繞過方式;生產(chǎn)環(huán)境更推薦 allowlist、命令解析器或組織級策略引擎。

#!/usr/bin/env python3
import json
import re
import sys
payload = json.load(sys.stdin)
command = payload.get("tool_input", {}).get("command", "")
blocked = [r"\brm\s+-rf\b", r"\bgit\s+reset\s+--hard\b", r"\bgit\s+push\s+--force\b"]
if any(re.search(pattern, command) for pattern in blocked):
    print(json.dumps({
        "hookSpecificOutput": {
            "hookEventName": "PreToolUse",
            "permissionDecision": "deny",
            "permissionDecisionReason": "檢測到高風(fēng)險命令,請先獲得用戶明確確認(rèn)。"
        }
    }))
    sys.exit(0)
print(json.dumps({"suppressOutput": True}))

9.2 編輯后自動格式化

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/format-changed-file.py",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

9.3 會話開始時注入項目上下文

settings.json 里只配置 hook 什么時候運(yùn)行、運(yùn)行什么命令;hookSpecificOutput 是該命令執(zhí)行后輸出到 stdout 的 JSON,不是直接嵌在 settings.json 里的字段。

.claude/settings.json

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume|clear|compact",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/session-context.py",
            "timeout": 10
          }
        ]
      }
    ]
  }
}

matcher 匹配 source 字段,可用值如下:

source含義適用場景
startup新會話啟動加載項目上下文、初始化提示
resume恢復(fù)舊會話恢復(fù)會話狀態(tài)、提醒歷史上下文
clear清空會話后重新開始重新注入基礎(chǔ)規(guī)則
compact壓縮上下文后繼續(xù)重新注入關(guān)鍵摘要或狀態(tài)

SessionStart hook 收到的輸入 JSON 結(jié)構(gòu)大致如下:

{
  "session_id": "session-id",
  "transcript_path": "/absolute/path/to/transcript.jsonl",
  "cwd": "/absolute/path/to/project",
  "permission_mode": "default",
  "hook_event_name": "SessionStart",
  "source": "startup",
  "agent_type": "default",
  "model": "claude-sonnet-4-6"
}

字段說明:

字段類型必填說明
session_idstring當(dāng)前會話 ID
transcript_pathstring當(dāng)前 transcript 文件路徑
cwdstring當(dāng)前工作目錄
permission_modestring當(dāng)前權(quán)限模式
hook_event_name"SessionStart"固定為 SessionStart
source"startup" | "resume" | "clear" | "compact"SessionStart 的觸發(fā)來源,也是 matcher 匹配字段
agent_typestring當(dāng)前 agent 類型
modelstring當(dāng)前會話使用的模型

腳本 stdout 返回的完整 hookSpecificOutput JSON 結(jié)構(gòu):

{
  "hookSpecificOutput": {
    "hookEventName": "SessionStart",
    "additionalContext": "本倉庫是 Claude Code 恢復(fù)版源碼;修改前請優(yōu)先閱讀 README.md。",
    "initialUserMessage": "請先閱讀 README.md 和 AGENTS.md,然后再開始任務(wù)。",
    "watchPaths": [
      "/absolute/path/to/project/README.md",
      "/absolute/path/to/project/AGENTS.md"
    ]
  }
}

SessionStart.hookSpecificOutput 字段說明:

字段類型必填作用
hookEventName"SessionStart"必須與當(dāng)前 hook 事件一致,否則會被視為錯誤輸出
additionalContextstring注入給 Claude 的額外上下文,適合放項目規(guī)則、恢復(fù)提示、環(huán)境說明
initialUserMessagestring作為會話開始時的初始用戶消息,適合自動觸發(fā)啟動任務(wù)或提醒
watchPathsstring[]要監(jiān)聽的絕對路徑;文件變化后可觸發(fā) FileChanged hook

最小腳本示例:

#!/usr/bin/env python3
import json
print(json.dumps({
    "hookSpecificOutput": {
        "hookEventName": "SessionStart",
        "additionalContext": "本項目要求修改代碼后運(yùn)行相關(guān)測試。"
    }
}))

9.4 用戶提交 prompt 后追加規(guī)則

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/user-prompt-context.py",
            "timeout": 5
          }
        ]
      }
    ]
  }
}

腳本輸出:

{
  "hookSpecificOutput": {
    "hookEventName": "UserPromptSubmit",
    "additionalContext": "如果要修改代碼,請先檢查現(xiàn)有測試和相關(guān)實現(xiàn)。"
  }
}

10. 關(guān)鍵注意事項

注意事項說明建議
Hooks 能執(zhí)行任意命令.claude/settings.json 中的 hook 是代碼執(zhí)行入口只信任可信倉庫與可信配置;審查外部 PR 中的 hook 變更
交互模式可能需要 workspace trust未信任工作區(qū)時,交互模式下 hook 可能被跳過對安全邊界不要只依賴 hook;結(jié)合權(quán)限模式和人工確認(rèn)
同一事件的多個 hook 可能并行執(zhí)行不應(yīng)依賴 hook 之間的執(zhí)行順序需要順序時把邏輯放進(jìn)同一個腳本
默認(rèn)超時可能較長工具 hook 默認(rèn)可能等待較久為每個 hook 顯式設(shè)置 timeout
SessionEnd 要快速完成結(jié)束 hook 默認(rèn)超時很短只做輕量清理;重任務(wù)放到后臺或外部隊列
stdout JSON 解析敏感stdout.trim() 以 { 開頭會按 JSON 解析普通文本不要以 { 開頭;結(jié)構(gòu)化輸出確保合法 JSON
HTTP hook 必須返回 JSON空響應(yīng)會按 {} 處理,非 JSON 是錯誤外部服務(wù)統(tǒng)一返回 JSON envelope
HTTP hook 不適合所有事件SessionStart / Setup 等場景不適合 HTTP hook初始化類邏輯優(yōu)先用 command
PreToolUse 可改寫輸入updatedInput 會影響即將執(zhí)行的工具只做確定、安全、可審計的改寫
PostToolUse 不應(yīng)假設(shè)能改所有輸出updatedMCPToolOutput 只對 MCP 工具有效普通工具結(jié)果用日志或上下文提示處理
async hook 后臺運(yùn)行可減少等待,但結(jié)果不會同步阻塞當(dāng)前流程只用于通知、審計、異步歸檔等非關(guān)鍵路徑
asyncRewake 會喚醒模型后臺 hook 退出碼為 2 時可注入阻塞反饋謹(jǐn)慎使用,避免噪音或循環(huán)喚醒
once 只運(yùn)行一次執(zhí)行后 hook 會被移除適合一次性初始化,不適合長期策略
shell 可配置支持 bash 和 powershell跨平臺項目要明確 shell 與路徑差異

11. 設(shè)計建議

設(shè)計原則推薦做法
安全優(yōu)先對破壞性操作使用 PreToolUse 或 PermissionRequest,但仍保留人工確認(rèn)
快速失敗hook 內(nèi)部校驗失敗時輸出清晰原因,不要靜默失敗
最小權(quán)限hook 只讀取必要字段,只訪問必要文件或外部服務(wù)
可觀察關(guān)鍵 hook 記錄事件、決策和原因,便于排查
不依賴順序多個獨(dú)立 hook 不共享隱式狀態(tài)
保持輕量同步 hook 只做快速檢查;耗時任務(wù)改為異步或外部隊列
配置分層團(tuán)隊規(guī)則放項目級,個人偏好放用戶級或本地級
明確邊界不把 hook 當(dāng)作唯一安全機(jī)制;配合權(quán)限模式、代碼審查和測試

12. 速查表

你想做什么首選 hook執(zhí)行類型返回什么
阻止命令執(zhí)行PreToolUsecommandpermissionDecision: "deny"
自動批準(zhǔn)權(quán)限PermissionRequestcommandhookSpecificOutput.decision.behavior: "allow"
改寫工具輸入PreToolUsecommandupdatedInput
編輯后格式化PostToolUsecommand普通輸出或 suppressOutput
工具失敗后提示PostToolUseFailurecommand / prompt文本建議或系統(tǒng)消息
增加用戶 prompt 上下文UserPromptSubmitcommandadditionalContext
會話開始加載上下文SessionStartcommandadditionalContext, initialUserMessage, watchPaths
響應(yīng)結(jié)束前檢查Stopcommand / agentdecision: "block" 或退出碼 2
通知外部系統(tǒng)Notification / TaskCompletedhttp / command{} 或通知結(jié)果
壓縮前保存狀態(tài)PreCompactcommand成功狀態(tài)或阻塞原因
創(chuàng)建 worktreeWorktreeCreatecommand / httpstdout 路徑或 hookSpecificOutput.worktreePath

到此這篇關(guān)于Claude Code Hooks 類型與使用指南的文章就介紹到這了,更多相關(guān)Claude Code Hooks 類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Claude Code中生命周期Hooks的使用指南介紹

    Hooks 是用戶自定義的腳本/命令,在 Claude Code 的特定生命周期節(jié)點(diǎn)自動執(zhí)行,支持 4 種類型、4 個生命周期事件,下面小編就和大家詳細(xì)介紹一下Hook這四種類型的具體使用吧
    2026-06-04
  • Claude Code Hooks 選裝實戰(zhàn)指南

    Claudede Hooks實戰(zhàn)指南,涵蓋三級攔截體系,兩腳本開箱即用,覆蓋致命、高風(fēng)險、警告三級操作,通過配置settings.json靈活定制攔截策略,支持PowerShell與原生Toast通知,適用于
    2026-06-03
  • 一文詳解Claude Code中Hooks的使用

    Claude Code 每次調(diào)用工具、等待輸入、結(jié)束會話,都會觸發(fā)對應(yīng)的Hook生命周期事件,Hook 腳本除了做判斷和記錄,還可以把事件轉(zhuǎn)發(fā)到本地 socket,讓一個常駐進(jìn)程處理所有狀
    2026-06-02

最新評論

九江市| 福泉市| 伊吾县| 惠安县| 靖安县| 凤冈县| 青川县| 韶关市| 隆安县| 思茅市| 正宁县| 渝中区| 贞丰县| 无棣县| 上栗县| 屏东市| 勐海县| 盐边县| 北安市| 乌兰县| 谷城县| 大洼县| 那曲县| 滁州市| 黔西| 叶城县| 淮滨县| 什邡市| 馆陶县| 兴仁县| 台州市| 京山县| 都兰县| 明水县| 紫金县| 琼中| 安远县| 历史| 繁昌县| 新绛县| 乐陵市|