

🪝 Claude Code Hooks: Biến Terminal AI Thành Cỗ Máy Tự Động Hoá Cho Developer
Bạn đang dùng Claude Code mỗi ngày nhưng vẫn phải ngồi canh từng lệnh, bấm approve thủ công, rồi tự format code sau mỗi lần sửa? Claude Code Hooks sẽ thay đổi hoàn toàn cách bạn làm việc.
🪝 Hooks Là Gì?
Hooks là hệ thống event-driven cho phép bạn gắn các hành động tự động vào từng bước trong quy trình làm việc của Claude Code. Hiểu đơn giản, bạn bảo Claude: "Mỗi khi chạy xong lệnh Bash, hãy tự động lint code giúp tao." Và nó sẽ làm đúng như vậy, không cần nhắc lại.
Hooks hỗ trợ 4 loại handler: Command (chạy shell script), HTTP (gọi API endpoint), Prompt (hỏi Claude đánh giá), và Agent (spawn subagent kiểm tra). Bạn chọn loại nào tuỳ vào độ phức tạp của task cần tự động hoá.
⚡ 26 Sự Kiện Hook Bạn Có Thể Bắt
Claude Code cung cấp hơn 26 lifecycle events mà bạn có thể hook vào. Một số event quan trọng nhất:
PreToolUse chạy trước khi Claude thực thi một tool. Bạn có thể chặn lệnh nguy hiểm như "rm -rf", từ chối truy cập file nhạy cảm, hoặc tự động sửa lệnh trước khi chạy. Đây là lớp bảo vệ đầu tiên cho project của bạn.
PostToolUse chạy sau khi tool hoàn thành. Dùng nó để auto-lint sau mỗi lần Edit, chạy test sau khi Write file mới, hoặc gửi notification khi task xong.
SessionStart kích hoạt khi bạn mở Claude Code. Bạn có thể tự động load git log gần nhất, thiết lập environment variables, hoặc kéo context từ issue tracker vào session.
Stop chạy khi Claude chuẩn bị kết thúc. Dùng để kiểm tra chất lượng output trước khi Claude dừng lại.
🛡️ Bảo Mật Tự Động, Không Cần Canh
Một trong những use case mạnh nhất của Hooks là security automation. Bạn viết một script đơn giản kiểm tra lệnh Bash có chứa "rm -rf" hay không, gắn vào PreToolUse, và từ đó mọi lệnh xoá file đều bị chặn tự động. Claude sẽ nhận được thông báo giải thích tại sao lệnh bị từ chối.
Hooks cũng hỗ trợ PermissionRequest để bạn tự động approve hoặc deny quyền truy cập dựa trên policy riêng. Thay vì bấm "Yes" 100 lần mỗi ngày, bạn để hook quyết định dựa trên regex pattern, file path, hoặc logic tuỳ chỉnh.
🔧 Cấu Hình Đơn Giản, Hiệu Quả Cao
Hooks được cấu hình trong file settings.json với cú pháp rõ ràng. Bạn chọn event (ví dụ PreToolUse), đặt matcher (ví dụ "Bash" hoặc "Edit|Write"), rồi khai báo handler. Matcher hỗ trợ regex nên bạn có thể lọc chính xác tool nào cần hook.
Bạn có thể đặt hooks ở nhiều cấp: user-level (cho mọi project), project-level (commit vào repo để team dùng chung), hoặc local-only (chỉ máy bạn, gitignore). Tổ chức lớn còn có managed policy để enforce hooks toàn bộ team.
🚀 3 Ví Dụ Hooks Thực Tế
Auto-lint sau mỗi lần sửa file: Gắn PostToolUse matcher "Write|Edit" vào script chạy eslint hoặc prettier. Code luôn sạch sau mỗi thay đổi.
Load context khi bắt đầu session: Gắn SessionStart hook chạy "git log --oneline -5" và "gh issue list", inject kết quả vào context. Claude bắt đầu mỗi session đã hiểu project đang ở đâu.
Chặn lệnh nguy hiểm tự động: Gắn PreToolUse matcher "Bash" vào script kiểm tra command. Nếu phát hiện "rm -rf" hoặc "DROP TABLE", hook trả về deny kèm lý do. An toàn tuyệt đối.
Hooks biến Claude Code từ một AI assistant thành một hệ thống tự động hoá hoàn chỉnh. Bạn đã thử setup hook nào chưa? Share xuống comment nhé!
#learnontiktok #ClaudeCode #AIAutomation #DevTools #VibeAICoder


