
Claude Code Hooks 2026: 25 Events และ 4 Handler Types
ช่วงปี 2025 ผมเจอทีม dev ไทยหลายทีมที่ใช้ Claude Code แบบ “แชทเอาคำตอบ” อย่างเดียว — พิมพ์คำสั่ง รอผล คัดลอก ใส่ในโปรเจค ทำแบบนี้ไปเรื่อยๆ ครับ
ซึ่งก็ใช้ได้ แต่มันเหมือนซื้อรถสปอร์ตมาขับไปตลาดสด 55 คุณค่าจริงของ Claude Code ปี 2026 ไม่ได้อยู่ที่การ “ตอบคำถาม” แต่อยู่ที่การ ฝัง Quality Gate และ Automation เข้าไปใน dev loop โดยที่คุณไม่ต้องสั่งทุกครั้ง และตัวที่ทำเรื่องนี้ได้คือ Hooks
เดือนเมษายน 2026 Hooks ขยายจาก ~8 events เดิม เป็น 25 lifecycle events และเพิ่ม handler type ใหม่ (Agent hook) ที่สามารถ spawn subagent ขึ้นมาตรวจสอบได้จริง ไม่ใช่แค่รัน shell script
บทความนี้ผมจะพาดูครบทั้งระบบ — 25 events แบ่งเป็นกลุ่มไหนบ้าง, handler 4 ประเภทต่างกันยังไง, และเมื่อไหร่ควรเลือกตัวไหนครับ
สรุป (TL;DR)
- Claude Code Hooks คือระบบ event-driven automation ที่ Claude Code รัน script/subagent ของคุณโดยอัตโนมัติตามจังหวะ session lifecycle
- ปี 2026 มี 25 lifecycle events ครอบคลุมตั้งแต่ tool use, subagent, agent teams, worktree ไปจนถึง config change
- มี 4 handler types:
command(shell),http(webhook),prompt(LLM single-turn),agent(subagent พร้อม tool access) - Rule of thumb: เริ่มจาก Command hook → ยก
promptเมื่อเจอ context-dependent → ใช้agentเมื่อต้อง cross-file analysis - v2.1.89 เพิ่ม
deferdecision ให้ PreToolUse hook หยุด session รอ external signal (ใช้ CI/CD gate ได้) - Hooks ต่างกับ Skill/Subagent/MCP คือมัน deterministic ไม่มี LLM involvement (ยกเว้น prompt/agent type) ทำให้เข้มงวดกว่าและทำนายได้
💡 ในความเห็นของผม — ถ้าทีม dev ไทยของคุณใช้ Claude Code แล้วยังไม่แตะ Hooks เลย นั่นแปลว่าคุณทิ้งศักยภาพของเครื่องมือไปครึ่งหนึ่ง Hooks คือเส้นแบ่งระหว่าง “chatbot” กับ “engineering partner ที่บังคับมาตรฐานให้ทีมได้”
Hooks คืออะไร และทำไมถึงสำคัญปี 2026
Hook คือคำสั่ง/สคริปต์/subagent ที่ Claude Code เรียกรันอัตโนมัติในจังหวะที่กำหนด โดยไม่ต้องให้ developer สั่ง — เช่น ก่อนแก้ไฟล์, หลังแก้ไฟล์, ตอน subagent เริ่ม, ตอน context โดน compact เป็นต้น
ลองเปรียบเทียบกับของที่หลายคนคุ้นเคย: Git hooks — ตอน commit เราสามารถกำหนดให้รัน linter, ทดสอบ, หรือตรวจ convention ก่อนอัตโนมัติ Claude Code Hooks ก็ concept เดียวกัน แต่จังหวะ (event) เยอะกว่า และตัว handler ทำอะไรได้ลึกกว่า shell script ธรรมดาครับ
ทำไม 2026 ถึงเป็นจุดเปลี่ยน
ย้อนไปต้นปี 2025 Hooks ยังเป็น feature ที่คนใช้เป็นของ nice-to-have — auto-format, auto-lint, จบ แต่ปี 2026 สถานการณ์เปลี่ยนเพราะ:
- Claude Code กลายเป็น autonomous coding agent — ตั้งแต่มี
/loop, scheduled tasks, agent teams, auto mode → session ทำงานยาวและซับซ้อนขึ้น Hook คือวิธีที่ทำให้ agent อยู่ในกรอบ ได้ โดยไม่ต้องนั่งเฝ้าทุกขั้น - Quality gate ต้อง enforced ไม่ใช่ documented — มีทีม dev หลายทีมที่ขาด review เพราะ PR เยอะ hook กลายเป็น checkpoint ที่ทำงานทุกครั้ง ไม่ใช่แค่ตอน reviewer จำได้
- Plugin + marketplace — hooks ถูก bundle ไปกับ plugin ได้ ทำให้กระจาย practice ไปทั้งทีมได้ด้วย install เดียว (อ้างอิง: Anthropic Claude Code docs)
25 Lifecycle Events แบ่งเป็น 5 กลุ่ม
ตามข้อมูล cheat sheet ล่าสุดของ Claude Code ปี 2026 มี 25 lifecycle events ผมจัดกลุ่มเพื่อให้จำง่ายตามนี้ครับ
1. Tool lifecycle (ตอนใช้เครื่องมือ)
PreToolUse— ก่อน Claude จะเรียก tool (เช่น Bash, Write, Edit, MCP) บล็อกได้PostToolUse— หลังเรียก tool สำเร็จPermissionDenied— เมื่อ auto mode classifier หรือ user ปฏิเสธ (เพิ่มretry: trueให้ agent ลองใหม่ได้)
ใช้บ่อยสุด 80% ของ use case: auto-format, auto-lint, บล็อก rm -rf, ส่ง notification
2. Session & conversation
SessionStart,SessionEndUserPromptSubmit— ก่อน prompt ของ user จะถูกส่งให้ modelNotificationStop— ตอน agent จบ turnPreCompact,PostCompact— ก่อน/หลัง context compactionConfigChange— เมื่อ setting file เปลี่ยน
3. Agent team & subagent
SubagentStart,SubagentStopTaskCreated,TaskCompletedTeammateIdle— เมื่อ agent ใน team ว่าง (ใช้กระจายงานได้)
กลุ่มนี้เกิดขึ้นเพราะ Agent Teams เข้า GA เดือนเมษายน 2026 (อ้างอิง)
4. File & workspace
FileChanged— เมื่อไฟล์ใน workspace เปลี่ยน (ไม่ว่าโดย Claude หรือโดย external)WorktreeCreate,WorktreeRemove— เมื่อ isolated-worktree subagent ถูกสร้าง/ลบ
5. Integration layer
- Hook events สำหรับ MCP, scheduled tasks, และ config watchers
Config ตัวอย่าง
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"if": "Bash(git *)",
"command": "npx eslint --fix $CLAUDE_FILE_PATH"
}
]
}
}
หมายเหตุ field if ที่เพิ่มใน v2.1.85 ใช้ permission rule syntax เพื่อกรองให้ hook รันเฉพาะ match จริง ลด process spawn overhead — เล็กแต่สำคัญตอน session ยาว
4 Handler Types — เปรียบเทียบ Command / HTTP / Prompt / Agent
ปี 2026 Claude Code รองรับ handler 4 แบบ ต่างกันที่ “ใครเป็นคนตัดสินใจ” และ “มี tool access แค่ไหน”
| Handler | จังหวะการตัดสิน | Use case ที่เหมาะ | ต้นทุน token |
|---|---|---|---|
| Command | Exit code + stdout | Format, lint, logging, block pattern ชัดเจน | 0 |
| HTTP | HTTP 200/4xx + JSON body | CI/CD gate, external approval, audit logging | 0 (แต่มี latency) |
| Prompt | LLM single-turn decision | Security classify, style review แบบ fuzzy | ปานกลาง |
| Agent | Subagent พร้อม Read/Grep/Glob | Cross-file verification, migration check, RLS audit | สูง |
Command hook — ของเรียบง่ายที่ยังเวิร์คเสมอ
รับ event JSON ผ่าน stdin, ตอบด้วย exit code
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "node scripts/block-dangerous-bash.js"
}
]
}
}
เขียน block-dangerous-bash.js ให้ exit 2 เมื่อเจอ rm -rf / หรือ curl | sh จบ
HTTP hook — เชื่อมกับระบบองค์กร
เพิ่มใน v2 ที่น่าสนใจคือ HTTP handler สามารถ return defer (v2.1.89) เพื่อหยุด headless session รอ external signal
{
"hooks": {
"PreToolUse": [
{
"matcher": "mcp__prod-db__execute_sql",
"handler": "http",
"url": "https://approval.internal/api/sql-gate"
}
]
}
}
ที่ endpoint /sql-gate ตอบกลับด้วย {"decision": "defer"} แล้วให้คนจริงไปกดอนุมัติใน dashboard ก่อน session จึงเดินต่อ
💡 ในความเห็นของผม — Hook แบบนี้คือสะพานระหว่าง AI agent กับ compliance process ขององค์กร สำหรับธุรกิจไทยที่ต้องมี approval chain (เช่น ธนาคาร, ประกัน, retail ใหญ่) นี่คือเหตุผลที่ Claude Code ใส่เข้าไปใน SDLC ได้จริง ไม่ได้ใช้เฉพาะ startup
Prompt hook — ให้ LLM ตัดสินใจแบบ fuzzy
เหมาะเมื่อเงื่อนไขเขียน regex ไม่ครบ เช่น “บล็อกถ้า commit message ไม่ professional”
hooks:
PreToolUse:
- matcher: "Bash(git commit *)"
handler: prompt
prompt: |
ข้อความ commit ด้านล่างเป็น professional และบอก why ชัดเจนหรือไม่?
ถ้าไม่ ให้ตอบ DENY พร้อมเหตุผล
${args}
Agent hook — หนักสุด แต่ลึกสุด
Spawn subagent พร้อม tool access (Read, Grep, Glob) ไปตรวจ codebase จริงก่อนตัดสิน
Use case จริงที่ผมเห็นเวิร์ค:
– RLS audit — ก่อน merge migration ของ Supabase/PostgreSQL ให้ agent hook ไปอ่าน schema + policies ทั้งหมด ตรวจว่ามี row-level-security ครบทุกตารางที่มี user data
– Convention compliance — คอนเวนชันที่เขียนใน CLAUDE.md ให้ agent hook cross-check กับไฟล์ที่กำลังจะ write จริง
Decision Framework — ควรใช้ handler ไหนเมื่อไหร่
ผมสรุปเป็น flow สั้นๆ ที่ใช้กับลูกค้าได้จริง
- เงื่อนไขเป็น regex/exit code ได้ไหม? → ใช้ Command
- ต้องเชื่อมกับระบบภายนอก (Jira, Slack, approval dashboard) ไหม? → ใช้ HTTP
- เงื่อนไขเป็น “ดู context แล้วตัดสิน” แต่ไม่ต้องเปิดไฟล์อื่น? → ใช้ Prompt
- ต้อง cross-file หรือวิเคราะห์ทั้ง codebase? → ใช้ Agent
⚠️ อย่าใช้ Agent hook กับ event ที่ trigger บ่อย (เช่น
PostToolUseทุกครั้ง) — token cost จะพุ่ง เพราะ spawn subagent ใหม่ทุกครั้ง แนะนำให้ใช้iffilter จำกัด scope ให้ยิงเฉพาะ path ที่สำคัญ
ตัวอย่าง Production Setup ที่ใช้ได้จริงในทีมไทย
จาก engagement ที่ผมทำกับทีม fintech และ e-commerce ในไทย — นี่คือ combo ที่ใช้ได้จริงและ ROI สูงสุดภายในเดือนแรก
Setup 1: Auto-format + secret scanner (ทุกทีมควรเริ่มจากอันนี้)
{
"hooks": {
"PostToolUse": [
{ "matcher": "Write|Edit", "command": "npx prettier --write $CLAUDE_FILE_PATH" },
{ "matcher": "Write|Edit", "command": "trufflehog filesystem --fail $CLAUDE_FILE_PATH" }
]
}
}
Trufflehog จะทำให้ agent ไม่เขียน API key หรือ secret ลงในไฟล์ โดยเด็ดขาด ถ้าเจอจะ exit 1 แล้ว hook บล็อก
Setup 2: Migration safety gate (fintech/insurance)
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write",
"if": "Path(migrations/**)",
"handler": "agent",
"agent": "migration-auditor"
}
]
}
}
สร้าง subagent migration-auditor ที่อ่าน migration file, เช็คว่ามี rollback, เช็คว่าไม่ใช่ destructive operation บน production column, และเช็คว่า RLS policy ยังครอบคลุม
Setup 3: Approval gate สำหรับ production DB
HTTP hook + defer decision — agent จะค้างรอจนคนกดอนุมัติใน Slack/email อย่างที่เล่าด้านบน เหมาะกับองค์กรใหญ่ที่ต้องมี segregation of duty
Pitfalls ที่เจอบ่อยและวิธีหลีก
- Hook infinite loop — hook ที่ยิง
PostToolUseแล้วเขียนไฟล์เอง → triggerPostToolUseซ้ำ → ลูป แก้โดยใช้ flag env variable หรือ filter path - Token burn จาก Agent hook — ดังที่กล่าว ใช้
iffield หรือmatcherจำกัด - Blocking hook ทำ session ช้า — ถ้า command รันเกิน 30s session รู้สึกช้าทันที แยกงานยาวเป็น async + notification กลับผ่าน webhook แทน
- ลืม scope hierarchy — hooks merge จากทุก source (managed > user > project) ต่างกับ MCP ที่ override ระวังอย่าซ้ำ
- ไม่ test hook ก่อน commit เข้า repo — ทั้งทีมจะสะดุดพร้อมกัน แนะนำให้ท่า hook ใหม่ใน
~/.claude/settings.jsonก่อน แล้วค่อยย้ายเข้า project
Hook ต่างกับ Skill, Subagent, MCP อย่างไร?
คำถามยอดฮิตจาก workshop ผมมักจะตอบด้วยตารางนี้
| Feature | เมื่อไหร่ LLM involvement | Use case |
|---|---|---|
| CLAUDE.md | Always-on context | Project convention, style rule |
| Skill | On-demand โดย agent | Reusable workflow (/deploy, /review) |
| MCP | ผ่าน tool call | ต่อ external service (DB, Jira, browser) |
| Subagent | Isolated context | Noisy research, parallel task |
| Hook | Deterministic (command/http) หรือ per-event LLM call (prompt/agent) | Enforced automation, quality gate |
จุดที่ต่างชัด: Hook รันโดยไม่รอ agent ขอ — เป็น event-driven 100% ซึ่งก็คือเหตุผลที่มัน “enforce” ได้ ไม่ใช่ “suggest”
คำถามที่พบบ่อย (FAQ)
Hook ใช้ได้ทั้งใน Claude Code CLI และ Claude Cowork ไหม?
ใช้ได้ทั้งสองตัวครับ เพราะ Cowork build บน Claude Code และ Claude Agent SDK — configuration file โครงสร้างเดียวกัน (.claude/settings.json) แต่บาง event ที่เกี่ยวกับ desktop action (เช่น file drag-drop) เป็นของ Cowork เฉพาะ ตรวจ documentation ล่าสุดของแต่ละ platform ก่อนใช้นะครับ
Hook จะกินค่าใช้จ่าย Claude subscription เพิ่มไหม?
Command และ HTTP hook ไม่กิน token เลย เพราะไม่เรียก model Prompt hook กินเฉพาะ turn นั้น (single-turn) Agent hook กินเท่ากับ subagent session ใหม่ ถ้ากังวล cost ให้เริ่มจาก Command + HTTP ก่อน แล้วยกระดับเมื่อจำเป็น
Hook ต่างกับ Git pre-commit hook อย่างไร?
Git hook รันเฉพาะตอน git commit, git push Claude Code hook รันใน session lifecycle ของ agent ทั้งหมด — มี 25 จุดให้ทำงานแทนที่จะเป็น 3-4 จุด และบาง handler ใช้ LLM/subagent ตัดสินใจได้ ไม่ใช่แค่ shell script ที่ pass/fail ตาย
ถ้า hook ทำงานผิดพลาด จะทำให้ session Claude Code พังไหม?
ขึ้นกับ event type — PreToolUse hook ที่ exit code ไม่ปกติจะ block tool call นั้น (ป้องกันปัญหา) PostToolUse ที่ล้มเหลวจะ log error แต่ไม่ทำ session ตาย Agent hook ที่ spawn subagent ล้มเหลวจะ fallback เป็น deny ตาม policy แนะนำให้ทุก hook มี timeout + fallback แน่นอน
ทีม dev ไทยควรเริ่ม Hook ตัวไหนก่อน?
แนะนำตามลำดับ: (1) PostToolUse auto-format, (2) PreToolUse block destructive command, (3) PreToolUse secret scanner, (4) ค่อยพิจารณา Agent hook สำหรับ migration/compliance เมื่อทีมมี CI/CD เสถียรแล้ว อย่าข้ามไปเล่น Agent hook ตั้งแต่วันแรก — overhead สูง ทีมจะรู้สึกว่า Claude ช้า
สรุปและ Next Step
Claude Code Hooks ปี 2026 ไม่ใช่ feature เล็กอีกแล้วครับ มันคือ control plane ของ autonomous coding agent ที่ทำให้ทีม dev ไทยใช้ AI ได้อย่าง กล้าที่จะปล่อยให้รันเอง โดยยังรักษามาตรฐานและ compliance ไว้ได้
สิ่งที่ผมอยากให้คุณทำในสัปดาห์นี้:
- เปิด
.claude/settings.jsonของโปรเจคปัจจุบัน แล้วเพิ่มPostToolUseauto-format ตัวเดียว — แค่นี้ก็เปลี่ยน workflow ได้เยอะแล้ว - ลิสต์ “สิ่งที่ทีมพลาดบ่อย” 3 อย่าง (format ไม่ตรง, commit secret, migration ไม่มี rollback) แล้วแปลงเป็น Hook หนึ่งตัวต่อปัญหาหนึ่งอัน
- ถ้าทีมใหญ่ขึ้น พิจารณา bundle เป็น plugin เพื่อกระจาย practice
Hook คือการติดกระดุมเม็ดแรกของ AI-assisted engineering อย่างถูกต้อง กระดุมเม็ดอื่น (Skill, Subagent, Agent Team) จะติดง่ายขึ้นมาก เมื่อเม็ดแรกนี้แน่นแล้วครับ
ข้อมูลอัปเดต: เมษายน 2026
แหล่งอ้างอิง:
– Claude Code Hooks Reference — All 12 → 25 Events
– Claude Code Changelog 2026
– Anthropic Claude Code Features Overview
– Claude Code Cheat Sheet 2026
– Vibehackers Claude Code Hooks Guide
อ่านเพิ่ม (Data-Espresso):
– Claude Code & AI Coding Agents คู่มือฉบับสมบูรณ์ 2026 — pillar page
– Claude Code 6 เวอร์ชันใน 7 วัน: สัญญาณที่ทีม dev ไม่ควรมองข้าม
– Claude Cowork Plugin ที่ SME ไทยต้องลอง
