CLAUDE.md là lời dặn — Claude cố gắng tuân theo. Hooks là luật — được thực thi bằng code, không có ngoại lệ. Khi một quy tắc bắt buộc phải đúng 100% số lần, hãy dùng hook.
- Hiểu hooks chạy ở đâu trong vòng lặp agent
- Viết hook đầu tiên: tự chạy formatter sau mỗi lần sửa file
- Chặn hành động nguy hiểm trước khi nó xảy ra
- Dùng Claude Code thành thạo mức cơ bản
- Biết viết script shell đơn giản
Hooks là gì
Hook là lệnh shell bạn khai báo trong cấu hình Claude Code, tự chạy tại các sự kiện: trước khi Claude dùng một tool (PreToolUse), sau khi dùng xong (PostToolUse), hay khi Claude kết thúc lượt (Stop).
Khác với lời dặn trong CLAUDE.md, hook không phụ thuộc việc Claude "nhớ" — nó chạy như một phần của hệ thống.
Trường hợp dùng phổ biến
- Tự động format code sau mỗi lần Claude sửa file
- Chặn lệnh nguy hiểm: rm -rf, push thẳng lên main, sửa file .env
- Bắt buộc chạy test sau khi Claude xong việc
- Ghi log mọi lệnh Claude chạy để audit lại
Hook đầu tiên: format sau khi sửa file
Khai báo trong file cấu hình settings của Claude Code. Hook dưới đây chạy Prettier lên đúng file vừa được chỉnh sửa.
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command",
"command": "npx prettier --write \"$CLAUDE_FILE_PATHS\"" }]
}]
}
}Chặn hành động: exit code khác 0
Hook PreToolUse có quyền phủ quyết: nếu script thoát với mã lỗi, hành động bị chặn và thông báo lỗi được đưa lại cho Claude — nó sẽ đọc lý do và đổi hướng.
# chan-lenh-nguy-hiem.sh
if echo "$CLAUDE_TOOL_INPUT" | grep -q "rm -rf"; then
echo "Lệnh xóa đệ quy bị chặn theo chính sách repo" >&2
exit 2
fiNguyên tắc thiết kế hook tốt
- Nhanh: hook chạy trong vòng lặp — mỗi giây chậm nhân lên hàng chục lần
- Im lặng khi mọi thứ ổn, nói rõ lý do khi chặn
- Bắt đầu với một hook duy nhất, quan sát một tuần rồi mới thêm
- Quy tắc mềm để trong CLAUDE.md, quy tắc cứng mới làm hook
Cạm bẫy cần tránh
Hook lỗi âm thầm là cạm bẫy số một: script sai đường dẫn nhưng bạn tưởng chốt chặn vẫn hoạt động. Sau khi khai báo, hãy cố tình vi phạm quy tắc một lần để xác nhận hook thực sự chặn.
Đừng dùng hook để "sửa lưng" Claude từng ly từng tí — quá nhiều chốt chặn làm agent chậm và khó đoán. Hook cho an toàn; phong cách để CLAUDE.md lo.
Củng cố những gì bạn vừa học
3 câu trắc nghiệm · đạt từ 70% · câu hỏi và đáp án xáo trộn mỗi lần.