INTERACTIVE LAB v2.2

Claude Code: Hook 機制深度模擬器

不要只看文件,動手搞壞它。透過親自配置路由、編寫攔截邏輯與體驗重啟陷阱,真正掌握 PreToolUse Hook 的底層原理與邊界防護。

1
2
3

1 動態路由模擬:Matcher 是第一道閘門

Claude Code 會根據 `settings.local.json` 中的 `matcher` 決定是否要將 Tool 請求拋給你的 Node.js 腳本。如果 Matcher 沒對到,你的腳本連執行的機會都沒有。請嘗試不同的組合!

Claude 想要執行...
你的 settings.json Matcher
Claude
?
Bypass (危險: 直通作業系統)
Node.js Hook 腳本

2 Live Code 驗證台:為何單一腳本不可靠?

這是一個真正的 JavaScript 執行器。教材提到不同工具有不同的 Payload (Data Schema)。**請親自修改下方的 IF 判斷式**,然後點擊「執行測試」,看看你的防護邏輯能不能完美擋下三種工具的攻擊。

read_hook.js
// 從 STDIN 取得 JSON 並解析
const toolArgs = JSON.parse(input);
// 你的安全攔截邏輯寫在這裡:
if ( ) {
  console.error("攔截!");
  process.exit(2);
} else {
  process.exit(0); // 放行
}

執行結果面板

測試 1: Read 工具 等待測試...
Payload: {"tool_input": {"file_path": ".env"}}
測試 2: Grep 工具 等待測試...
Payload: {"tool_input": {"pattern": "API", "path": "/"}}
測試 3: Bash 工具 等待測試...
Payload: {"tool_input": {"command": "cat .env"}}

3 DX 狀態機:重啟陷阱密室逃脫

這是實務上最多人踩的坑。**修改 Hook 檔案後如果沒有重啟 Claude Code,設定是不會生效的!** 請跟隨右方的「任務清單」指示,一步步體驗並破解這個地雷。

🎯 逃脫任務:
1. 輸入 read .env 觸發漏洞
2. 修改設定檔並點擊「重啟按鈕」
3. 再次輸入 read .env 驗證攔截
Sandbox Engine v1.1
狀態同步:磁碟設定與記憶體一致
settings.local.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Read",
        "command":
      }
    ]
  }
}
檔案已修改
Claude 記憶體載入狀態: "true" (無防護)
Welcome to Claude Code Sandbox.
Tip: Type read .env to test security.

密室逃脫成功!

完美體會了「修改 → 重啟 → 驗證」的正確開發循環。
在實際開發中,永遠記得重啟你的 CLI!