Source: https://aiprimetech.io/vi/claude-code/hooks/ [Trang chủ](/vi/) › [Claude Code](/vi/claude-code/) › Hook [Tổng quan](/vi/claude-code/)[Cài đặt](/vi/claude-code/install/)[tài liệu tham khảo CLI](/vi/claude-code/cli/)[Giá và giới hạn](/vi/claude-code/pricing/)[Agent SDK](/vi/claude-code/sdk/)[Kỹ năng và plugin](/vi/claude-code/skills/)[GitHub](/vi/claude-code/github/)[Web, máy tính và IDE](/vi/claude-code/web-and-desktop/)[Mô hình](/vi/claude-code/models/)[Lỗi](/vi/claude-code/errors/)[Có phải mã nguồn mở?](/vi/claude-code/open-source/)[Hướng dẫn thực hành](/vi/claude-code/tutorial/)[Dành cho sinh viên](/vi/claude-code/for-students/)[Tự động hóa QA](/vi/claude-code/qa-automation/)[So với Cursor](/vi/claude-code/vs-cursor/)[So với Codex và OpenCode](/vi/claude-code/vs-codex/)[Tác tử phụ](/vi/claude-code/subagents/)[Hook](/vi/claude-code/hooks/)[MCP](/vi/claude-code/mcp/)[Hệ sinh thái](/vi/claude-code/ecosystem/)[VS Code](/vi/claude-code/vscode/)[OpenRouter](/vi/claude-code/openrouter/)[Giới hạn tốc độ](/vi/claude-code/rate-limits/)[Hướng dẫn bằng tiếng Trung](/claude-code/zh/) Cập nhật lần cuối: ngày 11 tháng Mười, 2026 # Hook của Claude Code: kiểm soát hành động của tác nhân theo quy tắc xác định Hook là các lệnh shell mà Claude Code chạy tại những thời điểm cố định trong vòng lặp của nó — trước khi gọi công cụ, sau khi gọi công cụ, khi bạn gửi prompt và khi nó hoàn tất. Khác với hướng dẫn trong CLAUDE.md, mà mô hình có thể tuân theo hoặc không, hook luôn chạy. Đây là cách bạn tạo ra những quy tắc luôn được thực thi. ## TLDR - Được cấu hình trong .claude/settings.json (dự án) hoặc ~/.claude/settings.json (người dùng), hoặc bằng /hooks. - Các sự kiện: PreToolUse, PostToolUse, UserPromptSubmit, Notification, Stop, SubagentStop, PreCompact, SessionStart. - Hook nhận JSON trên stdin (tên công cụ, đầu vào, phiên); mã thoát 0 cho phép tiếp tục, mã thoát 2 chặn và gửi stderr trở lại Claude. - Các cách dùng phổ biến: định dạng sau mỗi lần chỉnh sửa, chặn lệnh nguy hiểm, yêu cầu chạy kiểm thử trước khi dừng, thông báo trên màn hình. ## Cấu trúc của một hook ``` { "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "npx prettier --write \"$(jq -r .tool_input.file_path)\"" } ] } ] } } ``` Gồm ba phần: sự kiện, bộ so khớp (biểu thức chính quy áp dụng cho tên công cụ đối với sự kiện công cụ; bỏ qua để khớp với mọi thứ) và một hoặc nhiều lệnh. Lệnh nhận một đối tượng JSON trên stdin mô tả sự kiện — đối với sự kiện công cụ, đối tượng này bao gồm tool_name và tool_input, nhờ đó ví dụ ở trên tìm được tệp vừa được chỉnh sửa. Đặt cấu hình này trong .claude/settings.json để chia sẻ cùng kho mã, ~/.claude/settings.json để dùng riêng, hoặc chạy /hooks và để Claude Code ghi cấu hình. ## Các sự kiện - PreToolUse — trước khi một công cụ chạy. Sự kiện duy nhất có thể chặn: mã thoát 2 hủy lệnh gọi và Claude đọc stderr của bạn để biết lý do. - PostToolUse — sau khi một công cụ thực thi thành công. Chạy trình định dạng, trình kiểm tra lint và kiểm tra kiểu trên tệp đã chỉnh sửa. - UserPromptSubmit — khi bạn gửi prompt; có thể bổ sung ngữ cảnh hoặc từ chối prompt. - Stop / SubagentStop — khi tác nhân (hoặc tác nhân phụ) sắp hoàn tất. Mã thoát 2 ở đây có nghĩa là "chưa xong" — cách dùng điển hình là không cho dừng khi kiểm thử vẫn thất bại. - PreCompact — trước /compact; lưu mọi nội dung bạn cần từ bản ghi hội thoại đầy đủ. - SessionStart — khi một phiên bắt đầu hoặc tiếp tục; nạp môi trường, in lời nhắc. - Notification — khi Claude Code cần bạn chú ý (yêu cầu cấp quyền, trạng thái chờ); kết nối sự kiện này với thông báo trên màn hình hoặc Slack. ## Chặn lệnh nguy hiểm ``` #!/usr/bin/env bash # .claude/hooks/guard.sh -- PreToolUse, matcher: Bash cmd=$(jq -r '.tool_input.command') if echo "$cmd" | grep -Eq 'rm -rf|git push --force|DROP TABLE|--no-verify'; then echo "blocked by guard.sh: $cmd" >&2 exit 2 fi exit 0 ``` Mã thoát 2 là quy ước: lệnh gọi công cụ không được thực hiện, và mọi nội dung hook in ra stderr trở thành lời giải thích mà Claude nhìn thấy, để nó có thể chọn cách tiếp cận khác thay vì thử lại cùng một cách. Mọi mã thoát khác không đều được ghi log nhưng không chặn. ## "Không dừng cho đến khi các kiểm thử thành công" ``` #!/usr/bin/env bash # Stop hook: refuse to finish while the suite is red if ! npm test --silent >/tmp/claude-test.log 2>&1; then echo "Tests are failing; fix them before finishing:" >&2 tail -n 40 /tmp/claude-test.log >&2 exit 2 fi ``` Kết hợp với giới hạn --max-turns trong các lần chạy không có giao diện để một lỗi thực sự không thể khắc phục không gây lặp vô tận. ## Hook so với CLAUDE.md và quyền CLAUDE.md là lời hướng dẫn mà mô hình đọc; /permissions là danh sách những việc nó được phép làm mà không cần hỏi; hook là mã chạy trong mọi trường hợp. Dùng CLAUDE.md cho phong cách và ngữ cảnh, quyền để xác định khi nào được phép thực hiện và khi nào cần hỏi, còn hook cho mọi điều phải luôn được bảo đảm — định dạng, quét thông tin bí mật, điều kiện kiểm thử, nhật ký kiểm toán. Chúng kết hợp với nhau: một quyền cho phép Bash(git *) chạy, nhưng hook PreToolUse vẫn chặn git push --force. ## Hook và cổng API Hook chạy cục bộ và không bao giờ gọi API, nên không có gì thay đổi khi Claude Code trỏ đến ANTHROPIC_BASE_URL=https://aiprimetech.io. Một cách kết hợp hữu ích: hook Stop in ra /costthông tin sử dụng theo kiểu này từ nhật ký của bạn, để một nhóm dùng tín dụng trả theo mức sử dụng thấy được chi phí của từng phiên khi phiên kết thúc. ## Dùng thử miễn phí trước Tài khoản mới nhận được $5 tín dụng API miễn phí với mã CLAUDECODE — đủ cho một buổi tối dùng Claude Code với Sonnet — sau đó là tín dụng có giá trị sử dụng gấp 7.69231× mệnh giá. ``` export ANTHROPIC_BASE_URL=https://aiprimetech.io export ANTHROPIC_API_KEY=your_key ``` [Tạo tài khoản với mã CLAUDECODE](/register?promo=CLAUDECODE) ## Câu hỏi thường gặp Hook của Claude Code là gì? Các lệnh shell mà Claude Code tự động chạy tại các sự kiện trong vòng lặp — trước/sau khi gọi công cụ, khi gửi prompt, khi dừng. Chúng có tính xác định, khác với hướng dẫn trong CLAUDE.md.Làm cách nào để chặn một lệnh bằng hook? Dùng hook PreToolUse có bộ so khớp Bash để kiểm tra tool_input.command từ stdin và thoát với mã 2; văn bản stderr được hiển thị cho Claude làm lý do.Đặt hook ở đâu? Trong .claude/settings.json của dự án (dùng chung) hoặc ~/.claude/settings.json (cá nhân), dưới khóa hooks; /hooks cho phép chỉnh sửa chúng theo cách tương tác. ## Chạy Claude Code trên cổng API Vẫn các mô hình đó, hai biến môi trường, tín dụng có giá trị sử dụng gấp 7.69231× mệnh giá — hoặc gói không giới hạn với phí cố định. Tài khoản mới: $5 tín dụng API miễn phí với mã CLAUDECODE.[Lấy khóa API](/register?promo=CLAUDECODE) [Xem các gói không giới hạn](/vi/plans/) AI Prime Tech là một cổng API độc lập, không có quan hệ liên kết với Anthropic và không được Anthropic chứng thực hay tài trợ. “Claude” và “Claude Code” là các nhãn hiệu của Anthropic. Các tính năng Claude Code được mô tả ở đây dựa trên tài liệu công khai của Anthropic tại thời điểm viết và thường xuyên thay đổi; giá và danh sách mô hình trên trang này được đọc từ cấu hình hiện hành của cổng API này. ## Thêm hướng dẫn về Claude Code [Claude Code: hướng dẫn đầy đủ](/vi/claude-code/)[Cách cài đặt Claude Code](/vi/claude-code/install/)[Tài liệu CLI của Claude Code: lệnh và cờ](/vi/claude-code/cli/)[Giải thích giá và giới hạn của Claude Code](/vi/claude-code/pricing/)[Claude Code SDK, nay là Claude Agent SDK](/vi/claude-code/sdk/)[Kỹ năng và plugin của Claude Code](/vi/claude-code/skills/)[Claude Code trong GitHub: App, Action và @claude](/vi/claude-code/github/)[Claude Code có giao diện web không? Giải thích về web, ứng dụng máy tính và IDE](/vi/claude-code/web-and-desktop/)[Claude Code sử dụng mô hình nào và cách thay đổi](/vi/claude-code/models/)[Các lỗi Claude Code và cách khắc phục](/vi/claude-code/errors/)[Claude Code có phải mã nguồn mở không?](/vi/claude-code/open-source/)[Hướng dẫn thực hành Claude Code: phiên làm việc thực tế đầu tiên của bạn](/vi/claude-code/tutorial/)[Claude dành cho sinh viên: Claude Code, API và những quyền lợi thực tế dành cho giáo dục](/vi/claude-code/for-students/)[Cách sử dụng Claude Code để tự động hóa QA](/vi/claude-code/qa-automation/)[Claude Code so với Cursor: chọn công cụ nào, khi nào — và cách sử dụng cả hai](/vi/claude-code/vs-cursor/)[Claude Code vs Codex vs OpenCode: so sánh các tác nhân trong terminal](/vi/claude-code/vs-codex/)[Tác nhân phụ của Claude Code: cách hoạt động, cách định nghĩa và các nhóm tác nhân](/vi/claude-code/subagents/)[MCP của Claude Code: kết nối máy chủ, phạm vi, MCP từ xa và ví dụ thực tế](/vi/claude-code/mcp/)[Hệ sinh thái Claude Code: bộ định tuyến, framework, plugin và các danh sách theo dõi chúng](/vi/claude-code/ecosystem/)[Claude Code trong VS Code: tiện ích mở rộng, cách dùng qua terminal và các lỗi](/vi/claude-code/vscode/)[Cách dùng OpenRouter trong Claude Code (và khi nào không nên dùng)](/vi/claude-code/openrouter/)[Lỗi giới hạn tốc độ của Claude: "API error: rate limit reached" có nghĩa là gì và cách khắc phục](/vi/claude-code/rate-limits/)[Cách dùng Claude Code: từ cài đặt đến sử dụng hằng ngày](/claude-code/zh/)