📖 Nội dung bài học
Đường viền ký tự
Không có
Màu đường viền
Tóm tắt
Hooks cho phép bạn chạy các lệnh trước hoặc sau khi Claude cố gắng chạy một tool. Chúng cực kỳ hữu ích để triển khai các quy trình làm việc tự động như chạy trình định dạng code sau khi chỉnh sửa file, thực thi các bài kiểm tra khi file thay đổi hoặc chặn quyền truy cập vào các file cụ thể.
Cách hoạt động của Hooks
Để hiểu về hooks, trước tiên hãy xem lại luồng bình thường khi bạn tương tác với Claude Code. Khi bạn hỏi Claude điều gì đó, truy vấn của bạn sẽ được gửi đến model Claude cùng với định nghĩa tool. Claude có thể quyết định dùng một tool bằng cách cung cấp một phản hồi đã được định dạng, và sau đó Claude Code thực thi tool đó và trả về kết quả.
Hooks tự chèn vào quy trình này, cho phép bạn thực thi code ngay trước hoặc ngay sau khi tool được thực thi.

Có hai loại hooks:
- PreToolUse hooks - Chạy trước khi một tool được gọi
- PostToolUse hooks - Chạy sau khi một tool được gọi
Cấu hình Hook
Hooks được định nghĩa trong các file cài đặt của Claude. Bạn có thể thêm chúng vào:
- Global -
~/.claude/settings.json(ảnh hưởng đến tất cả các project) - Project -
.claude/settings.json(chia sẻ với team) - Project (không commit) -
.claude/settings.local.json(cài đặt cá nhân)
Bạn có thể viết hooks bằng tay trong các file này hoặc dùng lệnh /hooks bên trong Claude Code.

Cấu trúc cấu hình bao gồm hai phần chính:

PreToolUse Hooks
PreToolUse hooks chạy trước khi một tool được thực thi. Chúng bao gồm một matcher chỉ định loại tool nào sẽ nhắm mục tiêu:
"PreToolUse": [
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "node /home/hooks/read_hook.ts"
}
]
}
]
Trước khi tool 'Read' được thực thi, cấu hình này sẽ chạy lệnh đã chỉ định. Lệnh của bạn nhận chi tiết về tool call mà Claude muốn thực hiện, và bạn có thể:
- Cho phép thao tác tiếp tục bình thường
- Chặn tool call và gửi thông báo lỗi trở lại cho Claude
PostToolUse Hooks
PostToolUse hooks chạy sau khi một tool đã được thực thi. Dưới đây là một ví dụ kích hoạt sau các thao tác write, edit hoặc multi-edit:
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "node /home/hooks/edit_hook.ts"
}
]
}
]
Vì tool call đã xảy ra, PostToolUse hooks không thể chặn thao tác. Tuy nhiên, chúng có thể:
- Chạy các thao tác tiếp theo (như định dạng một file vừa được chỉnh sửa)
- Cung cấp phản hồi bổ sung cho Claude về tool use

Ứng dụng thực tế
Dưới đây là một số cách phổ biến để dùng hooks:
- Code formatting - Tự động định dạng file sau khi Claude chỉnh sửa chúng
- Testing - Tự động chạy các bài kiểm tra khi file thay đổi
- Access control - Chặn Claude đọc hoặc chỉnh sửa các file cụ thể
- Code quality - Chạy linters hoặc type checkers và cung cấp phản hồi cho Claude
- Logging - Theo dõi những file nào Claude truy cập hoặc sửa đổi
- Validation - Kiểm tra quy ước đặt tên hoặc tiêu chuẩn coding
Điểm mấu chốt là hooks cho phép bạn mở rộng khả năng của Claude Code bằng cách tích hợp các tool và quy trình của riêng bạn vào quy trình làm việc. PreToolUse hooks cho bạn quyền kiểm soát những gì Claude có thể làm, trong khi PostToolUse hooks cho phép bạn cải thiện những gì Claude đã làm.
🔁 Bài học liên quan
- Bài tiếp: Defining hooks
- Bài trước: Github integration
- Cùng section: Adding context · Making changes · Course satisfaction survey
- Thuộc lộ trình: Path C
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/claude-code-in-action/312000
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: — · Chuẩn hoá: 2026-05-01