第 5 章:进阶配置

Hooks 与 Plan 模式

自动化守卫与高风险操作安全网

Claude Code 的 Hooks 与 Plan 模式共同构成了一套从"被动审批"到"主动防御"的安全体系。Hooks 是在 Claude Code 生命周期特定节点自动执行的脚本或逻辑,Plan 模式则是将 AI 的"思考"与"执行"分离的只读分析模式。二者与权限模式、安全分类器、Checkpoint 机制协同工作,形成多层次的自动化安全网。

1. Hooks:事件驱动的自动化守卫

1.1 什么是 Hooks

Hooks 是用户定义的 shell 命令、HTTP 端点、LLM 提示或子智能体,在 Claude Code 生命周期的特定节点自动执行。与 CLAUDE.md 中的指令不同——后者是"建议",Claude 通常会遵循但不保证——Hooks 是"确定性"的,只要事件触发,Hook 就一定会执行。

核心原则:CLAUDE.md 用于偏好指导("优先使用 Bun 而非 npm"),Hooks 用于不可违背的规则("必须用 Prettier 格式化"、"禁止触碰 .env 文件")。

1.2 生命周期事件全景

截至 2026 年 3 月,Claude Code 支持 21 个生命周期事件,按触发频率分为三类:

会话级事件(每会话触发一次)

事件触发时机可拦截Matcher 值
SessionStart会话开始或恢复时startup, resume, compact, clear
SessionEnd会话终止时clear, logout, other
PreCompact上下文压缩前manual, auto
PostCompact上下文压缩完成后

轮次级事件(每轮对话触发一次)

事件触发时机可拦截用途
UserPromptSubmit用户提交提示时提示验证、上下文增强
Stop主 Agent 完成响应时自动提交、任务完成验证
StopFailure主 Agent 执行失败时失败恢复、错误日志
Notification通知发送时permission_prompt, idle_prompt

工具级事件(每次工具调用触发)

事件触发时机可拦截Matcher 值
PreToolUse工具执行前工具名:Bash, Edit, Write, Read, Glob, Grep, WebFetch, mcp__*
PostToolUse工具成功执行后同上
PostToolUseFailure工具执行失败后同上
PermissionRequest权限请求对话框出现时同上

Agent 与子智能体事件

事件触发时机可拦截说明
SubagentStart子智能体启动时Agent 类型:Bash, Explore, Plan
SubagentStop子智能体完成时同上
TeammateIdleAgent Teams 队友即将空闲时重新分配任务
TaskCompleted任务标记为完成时完成通知、触发下一任务

配置与 Worktree 事件

事件触发时机可拦截说明
InstructionsLoadedCLAUDE.md 或规则文件加载时仅观察,不可控制
ConfigChange会话中配置文件变更时审计日志、阻止未授权变更
WorktreeCreateWorktree 创建时自定义 Worktree 创建逻辑
WorktreeRemoveWorktree 移除时清理处理
ElicitationMCP 服务器请求用户输入时自动响应或拒绝请求
ElicitationResult用户响应 MCP 请求后响应验证、日志

1.3 四种 Hook 处理器类型

类型描述适用场景支持的事件
command执行 shell 命令格式化、lint、Git 操作、通知、备份所有事件
httpPOST 事件数据到 HTTP 端点外部服务集成、共享审计日志所有事件
prompt单轮 LLM 评估基于上下文的允许/拒绝决策PreToolUse, PostToolUse, PermissionRequest, UserPromptSubmit, Stop, SubagentStop
agent多轮子智能体,可访问工具需要实际文件状态验证的复杂决策同 prompt

1.4 配置方式

Hooks 配置在 JSON 设置文件中,支持三级作用域:

位置作用域可共享典型用途
~/.claude/settings.json所有项目否(仅本地)个人偏好、全局安全策略
.claude/settings.json单个项目是(可提交到 Git)团队共享的格式化规则
.claude/settings.local.json单个项目否(gitignored)个人敏感配置、本地调试

基础配置结构:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|DROP TABLE' && exit 2 || exit 0"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_TOOL_INPUT_FILE_PATH\""
          }
        ]
      }
    ]
  }
}

1.5 退出码与决策控制

Hook 通过退出码和 stdout JSON 输出控制行为:

退出码含义效果
0成功继续执行,stdout 解析为 JSON 或作为上下文添加
2拦截阻止操作,stderr 反馈给 Claude
其他非阻塞错误操作继续,stderr 在 verbose 模式显示

JSON 结构化输出(exit 0 时通过 stdout):

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "deny",
    "permissionDecisionReason": "此命令被项目策略阻止",
    "updatedInput": {
      "command": "modified-command"
    },
    "additionalContext": "额外上下文信息"
  }
}

permissionDecision 可选值:

  • "allow" — 绕过权限系统,自动批准
  • "deny" — 阻止工具调用
  • "ask" — 显示正常权限提示

1.6 异步 Hooks

2026 年 1 月新增的异步执行模式:

{
  "type": "command",
  "command": "node backup-script.js",
  "async": true,
  "timeout": 30
}
特性同步 Hooks(默认)异步 Hooks(async: true
Claude 行为等待 Hook 完成立即继续,不等待
拦截能力可用 exit 2 拦截无法拦截(不阻塞)
适用场景安全检查、权限决策日志、备份、发送通知

1.7 环境变量

  • $CLAUDE_TOOL_INPUT:当前事件的 JSON 字符串
  • $CLAUDE_TOOL_INPUT_FILE_PATH:工具输入中的文件路径(如有)
  • $CLAUDE_PROJECT_DIR:项目根目录绝对路径
  • $CLAUDE_ENV_FILE:用于 SessionStart 中持久化环境变量到会话

2. Hooks 实际应用场景

2.1 提交前自动 Lint 与格式化

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'FILE=$(jq -r \".tool_input.file_path\" <<< \"$(cat)\"); if [[ \"$FILE\" == *.ts || \"$FILE\" == *.tsx || \"$FILE\" == *.js || \"$FILE\" == *.jsx ]]; then npx eslint --fix \"$FILE\" 2>/dev/null; npx prettier --write \"$FILE\" 2>/dev/null; fi; exit 0'"
          }
        ]
      }
    ]
  }
}

2.2 编辑后自动类型检查

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'FILE=$(jq -r \".tool_input.file_path\" <<< \"$(cat)\"); if [[ \"$FILE\" == *.ts || \"$FILE\" == *.tsx ]]; then npx tsc --noEmit 2>&1 | head -20; fi; exit 0'",
            "timeout": 30
          }
        ]
      }
    ]
  }
}

2.3 阻止危险命令

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'CMD=$(jq -r \".tool_input.command\" <<< \"$(cat)\"); for p in \"rm -rf /\" \"rm -rf ~\" \"drop table\" \"DROP TABLE\" \"truncate\" \"TRUNCATE\" \"--force\" \"push.*--force\"; do if echo \"$CMD\" | grep -qiE \"$p\"; then echo \"Blocked: pattern \\\"$p\\\" detected\" >&2; exit 2; fi; done; exit 0'"
          }
        ]
      }
    ]
  }
}

2.4 保护敏感文件

#!/bin/bash
# .claude/hooks/protect-files.sh
INPUT=$(cat)
FILE=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
PROTECTED=(".env" ".env.local" "secrets/" ".git/" "package-lock.json" "pnpm-lock.yaml")
for pattern in "${PROTECTED[@]}"; do
  if [[ "$FILE" == *"$pattern"* ]]; then
    echo "Protected file: $pattern" >&2
    exit 2
  fi
done
exit 0
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"
          }
        ]
      }
    ]
  }
}

2.5 会话开始时注入上下文

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'BRANCH=$(git -C \"$CLAUDE_PROJECT_DIR\" branch --show-current 2>/dev/null); echo \"{\\\"additionalContext\\\": \\\"Current branch: $BRANCH. Recent commits: $(git -C \"$CLAUDE_PROJECT_DIR\" log --oneline -3 2>/dev/null)\\\"}\"'"
          }
        ]
      }
    ]
  }
}

2.6 任务完成前强制测试通过

#!/bin/bash
# .claude/hooks/verify-tests.sh
INPUT=$(cat)
# 防止无限循环
if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then
  exit 0
fi
# 运行测试
if ! npm test --silent 2>/dev/null; then
  echo "Tests are failing. Fix them before finishing." >&2
  exit 2
fi
exit 0
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/verify-tests.sh",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

关键Stop Hook 必须检查 stop_hook_active 字段,否则会导致无限循环——Hook 阻止停止,Claude 继续工作,再次触发 Hook。

2.7 Prompt Hooks:LLM 驱动的质量门

当验证逻辑过于复杂,无法用 shell 脚本表达时:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "prompt",
            "prompt": "Review the conversation. Did the user's request get fully completed? Check: all files created, tests passing, no TODO comments left. Respond with {\"ok\": true} if done, or {\"ok\": false, \"reason\": \"what remains\"} if not.",
            "timeout": 30
          }
        ]
      }
    ]
  }
}

2.8 Agent Hooks:多轮验证

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "agent",
            "prompt": "Verify the work is complete: 1) Run the test suite. 2) Check for any TypeScript errors. 3) Verify no console.log statements were left in production code. Report your findings.",
            "timeout": 120
          }
        ]
      }
    ]
  }
}

3. Plan 模式:只读分析的安全前哨

3.1 定义与核心特性

Plan 模式是一种只读权限状态,Claude 可以分析代码库、搜索文件、创建详细计划——但不能修改任何文件,直到你明确允许。

核心特性

  • 工具限制:仅允许 ReadGrepGlob 等分析操作
  • 修改阻断:EditWriteBash 等修改操作被阻止
  • 权限提示仍然适用:与 default 模式的权限提示行为一致

3.2 如何启用

会话中切换

  • Shift+Tab 循环切换模式
  • 或在单条提示前加 /plan 前缀

启动时指定

claude --permission-mode plan

设为默认

{
  "permissions": {
    "defaultMode": "plan"
  }
}

3.3 使用场景

  1. 探索代码库:在不修改任何文件的情况下理解项目结构
  2. 复杂变更前的规划:让 Claude 先制定详细实施计划,你审查后再执行
  3. 安全审查:分析潜在风险而不触发副作用
  4. 需求澄清:在动手编码前确保理解正确

3.4 Plan 完成后的选项

当 Plan 准备就绪后,Claude 会呈现计划并询问如何继续:

  • 批准并以 auto 模式启动:完全自动执行计划
  • 批准并接受编辑:自动接受文件编辑,但命令仍提示
  • 批准并手动审查每个编辑:逐条审批
  • 继续规划并反馈:提供更多指导
  • 使用 Ultraplan 细化:在浏览器中审查

每个选项还可选择是否先清除规划上下文。

4. 权限模式全景对比

4.1 六种权限模式一览

模式无需询问即可执行适用场景安全风险
default仅读取操作入门、敏感工作
acceptEdits读取 + 文件编辑 + 常见文件系统命令(mkdir, touch, mv, cp 等)审查代码时迭代低-中
plan仅读取操作探索代码库、变更前规划极低
auto所有操作(经 ML 分类器后台安全检查)长任务、减少提示疲劳中(有分类器保护)
dontAsk仅预批准的工具锁定的 CI 和脚本低(严格白名单)
bypassPermissions除受保护路径外的所有操作仅隔离容器和 VM

4.2 模式切换方式

CLI

  • 会话中按 Shift+Tab 循环 default -> acceptEdits -> plan
  • autobypassPermissions 需先启用才会出现在循环中
  • 启动时:claude --permission-mode <mode>

VS Code

  • 点击提示框底部的模式指示器
  • 或在 Claude Code 扩展设置中配置

4.3 受保护路径

以下路径在任何模式下都不会自动批准

受保护目录.git, .vscode, .idea, .husky, .claude.claude/commands, .claude/agents, .claude/skills, .claude/worktrees 除外)

受保护文件.gitconfig, .gitmodules, .bashrc, .bash_profile, .zshrc, .zprofile, .profile, .ripgreprc, .mcp.json, .claude.json

defaultacceptEditsplanbypassPermissions 模式下,这些写入会提示;在 auto 模式下路由到分类器;在 dontAsk 模式下被拒绝。

5. Auto Mode 安全分类器

5.1 为什么需要分类器

Anthropic 内部数据显示,用户手动批准了 93% 的权限提示。这意味着大量提示只增加了摩擦,没有增加安全性。Auto Mode 的目标是在不牺牲安全的前提下消除这种摩擦。

5.2 两层防御架构

输入层:提示注入探测

  • 服务器端的 prompt-injection probe 扫描工具输出(文件读取、网页获取、shell 输出、外部工具响应)
  • 当内容看起来像劫持行为的尝试时,在结果传递给 Agent 前添加警告
  • 提示 Agent 将此内容视为可疑,并锚定用户的实际请求

输出层:转录分类器

  • 基于 Sonnet 4.6 的分类器模型评估每个操作
  • 两阶段设计:
    • Stage 1:快速单 token 过滤器(是/否决定),偏向拦截
    • Stage 2:仅对 Stage 1 标记的内容进行链式思考推理,减少误报
  • 分类器仅看到用户消息和工具调用,剥离了 Claude 自己的消息和工具输出(防止 Agent "说服" 分类器)

5.3 五级权限决策流程

Tier 1: 内置安全工具白名单 + 用户设置
  -> 只读工具(Read, Grep, Glob 等)直接允许
  -> 进入 auto 模式时,丢弃已知的任意代码执行权限规则

Tier 2: 项目内文件操作
  -> 工作目录内的文件写入/编辑直接允许(无需分类器调用)
  -> 可通过版本控制审查

Tier 3: 转录分类器
  -> Shell 命令、Web 请求、外部工具集成、子智能体、项目外文件操作
  -> Stage 1 快速过滤 -> Stage 2 推理审查

5.4 分类器性能数据

数据集Stage 1 FPRStage 1 FNR完整管道 FPR完整管道 FNR
真实内部流量(n=10,000)8.5%0.4%
真实过度热心行为(n=52)6.6%17%
合成数据泄露(n=1,000)1.8%5.7%

FPR = 误报率(良性操作被拦截的比例);FNR = 漏报率(危险操作被放行的比例)

17% 的漏报率是诚实的数字——分类器正确识别了危险,但错误判断了用户意图是否覆盖了该操作。这意味着 Auto Mode 不是高 stakes 基础设施的谨慎人工审查的替代品

5.5 分类器默认拦截的行为

默认拦截

  • 下载并执行代码(如 curl | bash
  • 向外部端点发送敏感数据
  • 生产环境部署和迁移
  • 云存储大规模删除
  • 授予 IAM 或仓库权限
  • 修改共享基础设施
  • 不可逆地销毁会话前已存在的文件
  • Force push 或直接推送到 main

默认允许

  • 工作目录内的本地文件操作
  • 安装 lock 文件或清单中声明的依赖
  • 读取 .env 并将凭据发送到匹配的 API
  • 只读 HTTP 请求
  • 推送到启动时的分支或 Claude 创建的分支

5.6 配置信任基础设施

{
  "autoMode": {
    "environment": [
      "$defaults",
      "Organization: ACME Corp. Primary use: software development",
      "Source control: github.example.com/acme-corp",
      "Cloud providers: AWS, GCP",
      "Trusted cloud buckets: s3://acme-builds, gs://acme-datasets",
      "Trusted internal domains: *.internal.example.com, api.example.com",
      "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"
    ],
    "allow": [
      "$defaults",
      "Deploying to the staging namespace is allowed: staging is isolated from production"
    ],
    "soft_deny": [
      "$defaults",
      "Never run database migrations outside the migrations CLI",
      "Never modify files under infra/terraform/prod/"
    ]
  }
}

配置检查命令:

claude auto-mode defaults    # 查看内置规则
claude auto-mode config      # 查看实际生效配置
claude auto-mode critique    # AI 审查自定义规则

5.7 使用限制

Auto Mode 有严格的账户要求:

  • Plan:Max、Team、Enterprise 或 API。Pro 不可用
  • Admin:Team 和 Enterprise 需管理员在设置中启用
  • Model:Team/Enterprise/API 需 Claude Sonnet 4.6、Opus 4.6 或 Opus 4.7;Max 计划仅 Opus 4.7
  • Provider:仅 Anthropic API。Bedrock、Vertex、Foundry 不可用

5.8 回退机制

  • 连续 3 次或总计 20 次被拦截后,Auto Mode 暂停,恢复手动提示
  • 批准被提示的操作后恢复 Auto Mode
  • 非交互模式(-p 标志)下,重复拦截会终止会话

6. Checkpoint 机制:时间旅行安全网

6.1 自动检查点

Claude Code 在每次用户提示提交时自动创建检查点,捕获编辑前的代码状态。这让你可以放心地尝试大规模变更,知道随时可以回到之前的状态。

特性

  • 每次用户提示创建新检查点
  • 检查点跨会话持久化(恢复对话后仍可访问)
  • 30 天后自动清理(可配置)

6.2 三种恢复模式

Esc 两次或使用 /rewind 命令打开恢复菜单:

恢复选项效果适用场景
恢复代码和对话代码和对话都回退到该点完全改变方向
仅恢复对话回退对话,保留当前代码拒绝 Claude 的方案,要求替代方法
仅恢复代码回退代码,保留对话上下文代码有 Bug 但想保持对话理解
从此处总结压缩从此点往后的对话释放上下文窗口空间

6.3 与 Git 的协作

Checkpoint 是"本地撤销",Git 是"永久历史"。推荐工作流:

开始新功能 -> 创建 Git 分支 -> 请求 Claude 实现
  -> 审查结果
    -> OK -> Git commit -> 继续改进或创建 PR
    -> NG -> Checkpoint 恢复 -> 重新指导 Claude
操作CheckpointGit
短期实验恢复推荐污染提交历史
长期存储30 天限制永久
团队共享仅本地可推送
对话上下文保留支持不支持

6.4 限制

  • 不追踪 Bash 命令变更rm, mv, cp 等命令造成的文件修改无法通过 rewind 撤销
  • 不追踪外部变更:Claude Code 外的手动编辑和其他会话的编辑通常不被捕获
  • 不是版本控制替代品:Checkpoint 用于会话级快速恢复,Git 用于永久版本历史

7. 组合使用策略

7.1 安全金字塔

          ┌─────────────┐
          │  Checkpoint │  <- 最后防线:时间旅行恢复
          │  (自动备份)  │
          ├─────────────┤
          │   Hooks     │  <- 自动化守卫:确定性规则执行
          │ (Pre/Post)  │
          ├─────────────┤
          │  Plan Mode  │  <- 思考与执行分离
          │  (只读规划)  │
          ├─────────────┤
          │  Auto Mode  │  <- ML 分类器:智能审批
          │  (分类器)   │
          ├─────────────┤
          │ Permission  │  <- 基础层:手动审批
          │   Modes     │
          └─────────────┘

7.2 推荐工作流组合

场景一:日常开发(低风险)

{
  "permissions": {
    "defaultMode": "acceptEdits"
  },
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_TOOL_INPUT_FILE_PATH\""
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'CMD=$(jq -r \".tool_input.command\" <<< \"$(cat)\"); if echo \"$CMD\" | grep -qE \"rm -rf /|rm -rf ~|DROP TABLE|force push\"; then echo \"Blocked by policy\" >&2; exit 2; fi; exit 0'"
          }
        ]
      }
    ]
  }
}

场景二:复杂重构(中风险)

  1. plan 模式启动:claude --permission-mode plan
  2. 让 Claude 分析并制定详细计划
  3. 审查计划,批准后切换到 acceptEditsauto 模式
  4. 启用 PostToolUse Hook 自动格式化
  5. 使用 /rewind 在出现问题时回退

场景三:生产环境操作(高风险)

{
  "permissions": {
    "defaultMode": "default",
    "deny": [
      "Bash(*deploy*)",
      "Bash(*migration*)",
      "Bash(git push *)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "prompt",
            "prompt": "Evaluate whether this Bash command could affect the production environment. Consider: database operations, deployments, infrastructure changes. Respond with {\"safe\": true} or {\"safe\": false, \"reason\": \"...\"}.",
            "timeout": 10
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "agent",
            "prompt": "Before completing, verify: 1) No production credentials were logged. 2) No database connections were made to prod. 3) All changes are reversible. Report findings.",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

场景四:自动化 CI 流水线

{
  "permissions": {
    "defaultMode": "dontAsk",
    "allow": [
      "Bash(npm test)",
      "Bash(npm run build)",
      "Bash(npm run lint)",
      "Read(*)",
      "Edit(*)",
      "Write(*)"
    ],
    "deny": [
      "Bash(git push *)",
      "Bash(*deploy*)",
      "WebFetch(*)"
    ]
  }
}

7.3 企业级安全策略

对于团队和组织,建议分层配置:

Managed Settings(管理员强制)

{
  "permissions": {
    "disableBypassPermissionsMode": "disable",
    "disableAutoMode": "disable",
    "deny": [
      "Bash(*prod*)",
      "Bash(*deploy*)",
      "Read(//etc/**)",
      "Read(~/.ssh/**)"
    ]
  },
  "allowManagedPermissionRulesOnly": true,
  "allowManagedHooksOnly": true
}

项目级 Settings(团队共享)

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_TOOL_INPUT_FILE_PATH\""
          }
        ]
      }
    ]
  }
}

个人 Local Settings(开发者自定义)

{
  "permissions": {
    "allow": [
      "Bash(npm run dev)",
      "Bash(npm run test:watch)"
    ]
  }
}

8. 参考来源

  1. Hooks Reference - Claude Code Docs — 官方 Hooks 事件、配置模式、JSON 输入/输出格式参考
  2. Choose a Permission Mode - Claude Code Docs — 权限模式官方文档
  3. Configure Auto Mode - Claude Code Docs — Auto Mode 分类器配置指南
  4. Configure Permissions - Claude Code Docs — 权限规则语法与细粒度控制
  5. Security - Claude Code Docs — 安全机制与最佳实践
  6. Checkpointing - Claude Code Docs — 检查点与恢复机制
  7. Claude Code Auto Mode: A Safer Way to Skip Permissions — Anthropic 官方工程博客,分类器架构详解
  8. Claude Code Hooks Complete Guide (March 2026 Edition) — 21 个生命周期事件、4 种处理器类型的完整指南
  9. Claude Code Hooks: Complete Guide with 20+ Examples (2026) — 20+ 生产级配置示例
  10. Claude Code 2.0 Checkpoint Feature Practical Guide — 恢复模式与 Git 集成策略
  11. Claude Code Permission Modes: Complete Guide — 6 种权限模式全景对比
  12. Dive into Claude Code: The Design Space of Today's and Future AI Agent — 源代码级架构分析论文