Trong Stage 3: Build, hooks đóng vai trò guardrails tự động (allow/block) không cần con người can thiệp. Ngoài ra, hook có thể tạm dừng để hỏi (ask), kích hoạt Approval Gates (cổng phê duyệt của con người), chờ người có thẩm quyền phê duyệt trước khi tiếp tục — đáp ứng yêu cầu release gating trong Stage 5: Deploy.
AI-Native: Deterministic Hooks & Approval Gates
Mọi hành động rủi ro cao (deploy production, sửa migration/infra khi thiếu change ticket, sửa file test khi fix bug) đều bị PreToolUse interceptor (chốt chặn kiểm soát lệnh trước khi thực thi) chặn trước khi chạy: Allow (cho phép), Ask (kích hoạt Approval Gates (cổng phê duyệt của con người) chờ phê duyệt), hoặc Block (exit 2 kèm lý do).
Traditional: Prompt-based Rules
Chỉ dựa vào quy định trong CLAUDE.md. Dễ bị bypass do hallucination, prompt injection hoặc trôi chỉ dẫn khi context window dài.
Nguyên tắc cốt lõi
Hook là cơ chế kiểm soát tất định (deterministic 100%) ở tầng hệ thống và mạng, không phụ thuộc vào việc AI có tuân thủ prompt hay không.
Cơ chế PreToolUse interceptor (chốt chặn kiểm soát lệnh trước khi thực thi) chặn lệnh bash, đối chiếu chính sách doanh nghiệp, kích hoạt Approval Gates (cổng phê duyệt của con người) và ghi log OpenTelemetry:
Archify Interactive Diagram (Stage 5: Hooks as Approval Gates)
Mở toàn màn hình ↗
3. Điều kiện tiên quyết & Hạ tầng
Prerequisites: Không có.
Hạ tầng quy trình: Danh sách bằng văn bản các phê duyệt con người bắt buộc trong quy trình thay đổi.
4. Các bước thực thi: 4 bước thiết lập
4 bước triển khai các cổng phê duyệt kiểm soát phát hành:
1
Lập danh mục Approval Gates (cổng phê duyệt của con người) bắt buộc
Lãnh đạo kỹ thuật cùng bộ phận Change Management và Compliance liệt kê các Approval Gates (cổng phê duyệt của con người) bắt buộc phải duy trì, chẳng hạn như phê duyệt từ Change Management (change management sign-off), ủy quyền phát hành (release authorization), và chỉnh sửa các đường dẫn được bảo vệ (edits to protected paths).
compliancegovernance
2
Hiện thực hóa cổng thành Hook Script
Platform engineer chuyển đổi từng cổng kiểm soát thành hook script dưới dạng PreToolUse interceptor (chốt chặn kiểm soát lệnh trước khi thực thi) chạy trước khi Claude thao tác: cho phép (allow - exit 0), yêu cầu phê duyệt (ask), hoặc chặn đứng (block - exit 2).
PreToolUsebash script
3
Phân tầng cấu hình Git và Managed Settings
Hook của dự án lưu tại .claude/settings.json trong Git. Hook bắt buộc không thể thương lượng đặt trong Managed Settings do Platform hoặc IT Admin quản lý (kỹ sư không thể tắt).
managed settingstamper-proof
4
Giải thích rõ lý do và đường dẫn phê duyệt khi Block
Mỗi quyết định chặn phải tự giải thích: khi hook ngăn chặn hành động, lý do và quy trình xin phê duyệt hiển thị trực tiếp trong output của Claude.
error feedbackstderr exit 2
5. Cấu hình Hook trong dự án
Khai báo PreToolUse interceptor (chốt chặn kiểm soát lệnh trước khi thực thi) trong .claude/settings.json của dự án:
#!/bin/bash
# Production deploys require a named release authorization
cmd=$(jq -r '.tool_input.command' < /dev/stdin)
if [[ "$cmd" == *"deploy"* && "$cmd" == *"production"* ]]; then
if [ -z "$RELEASE_APPROVAL" ]; then
echo "Production deploys need a release authorization." >&2
exit 2 # exit 2 blocks the action; the message goes to Claude
fi
fi
exit 0
6. Managed Settings trong doanh nghiệp có kiểm soát
Trong môi trường doanh nghiệp có kiểm soát (regulated enterprise), cấu hình an toàn được triển khai tập trung qua MDM hoặc Admin Console. Kỹ sư không thể chỉnh sửa hay ghi đè:
permissions.deny giữ secrets không lọt vào context của agent và chặn egress mạng tùy ý qua các công cụ. permissions.allow phê duyệt trước safe inner loop (chu trình làm việc an toàn nội bộ: build, test, lint) để danh sách deny không gây ra tình trạng quá tải xác nhận (prompt fatigue). Đi kèm đó, disableBypassPermissionsMode kết hợp cùng allowManagedPermissionRulesOnly đồng nghĩa không một kỹ sư, file cấu hình dự án hay cờ dòng lệnh (CLI flag) nào có thể nới lỏng hoặc mở rộng các quy tắc đã đặt.
2
sandbox
sandbox bao quát những gì permissions không thể xử lý. Việc cấm WebFetch ở cấp độ công cụ không ngăn được lệnh shell tiếp cận mạng ngoài, trong khi danh sách domain cho phép (domain allowlist: network.allowedDomains) ở cấp hệ điều hành sẽ chặn đứng hoàn toàn egress — cả hai lớp cùng thực thi một mục tiêu ở các tầng khác nhau. failIfUnavailable và allowUnsandboxedCommands biến sandbox thành điều kiện tiên quyết: Claude Code từ chối khởi động nếu sandbox không thể khởi tạo, và một lệnh thất bại trong sandbox tuyệt đối không được phép thử lại bên ngoài sandbox.
3
credentials
credentials xử lý trường hợp mà các quy tắc deny bỏ sót. permissions.deny quản lý các công cụ file của Claude, nhưng một lệnh shell chạy trong sandbox theo mặc định vẫn có thể đọc ~/.ssh hoặc ~/.aws/credentials. Khối credentials (quản lý files và envVars) từ chối các thao tác đọc đó và loại bỏ các secrets được chỉ định (như GITHUB_TOKEN) khỏi môi trường thực thi của các lệnh trong sandbox.
4
allowManagedHooksOnly
allowManagedHooksOnly quy định chỉ các hook khai báo trong Managed Settings mới được chạy; các hook trong user, project và local settings đều bị chặn (kể cả ví dụ .claude/settings.json độc lập ở trên). Để đảm bảo Approval Gates (cổng phê duyệt của con người) của bài học này luôn được thực thi bắt buộc, hãy định nghĩa nó trong chính khối hooks của file managed settings.
5
disableSideloadFlags
disableSideloadFlags từ chối ngay khi khởi động các cờ dòng lệnh (flags) cho phép nạp ngoài (sideload) một plugin, agent hoặc cấu hình MCP cho một lần chạy đơn lẻ, loại bỏ nguy cơ kỹ sư bypass hệ thống kiểm soát bằng các thiết lập tạm thời.
6
strictKnownMarketplaces
strictKnownMarketplaces bảo đảm mọi skill, agent, hook hoặc MCP server trên máy kỹ sư đều phải đến từ marketplace plugin đã được tổ chức phê duyệt (approved plugin marketplace), không được nạp từ thư mục người dùng cá nhân (home directory). Marketplace allowlist kiểm soát chặt chẽ toàn bộ danh mục được phép cài đặt.
7
allowManagedMcpServersOnly
allowManagedMcpServersOnly biến toàn bộ bề mặt công cụ (tool surface) của agent thành một allowlist do Platform Team trực tiếp sở hữu và quản lý.
8
requiredMinimumVersion
requiredMinimumVersion từ chối khởi động Claude Code nếu phiên bản thấp hơn mức sàn phê duyệt, bảo đảm các cơ chế an ninh được thực thi bởi một bản build mà tổ chức đã thực sự thẩm định và đánh giá rủi ro.
8. Kiểm soát & Đo lường hiệu quả
Hooks chính là các Approval Gates (cổng phê duyệt của con người). Điều kiện cổng được thực thi trong mọi trường hợp, cho tất cả mọi người. Các quyết định allow và block đều được ghi log kèm timestamp. Cổng cũng định nghĩa rõ ràng những gì được tính là sự phê duyệt hợp lệ, cho dù đó là một change ticket đã duyệt hay ký duyệt của Release Manager.
Yếu tố Quản trị
Chi tiết Thực thi Kỹ thuật
What is enforced
Điều kiện cổng (gate condition) được thực thi trong mọi trường hợp, áp dụng đồng nhất 100% cho tất cả mọi người.
Where it is logged
Mọi quyết định allow và block đều được ghi nhận kèm timestamp và chuyển tiếp qua OpenTelemetry export về observability stack của tổ chức.
Who approves
Cổng kiểm soát định nghĩa rõ điều kiện phê duyệt hợp lệ: một change ticket đã được phê duyệt hoặc ký duyệt của Release Manager.
Chỉ số Đo lường Hiệu quả
Leading indicator: Thời gian chờ trên mỗi Approval Gates (cổng phê duyệt của con người). Mọi quyết định hook đều được ghi vào OpenTelemetry export kèm timestamp và phán quyết allow hoặc block, giúp thời gian chờ hiển thị rõ ràng trên từng cổng.
Lagging indicator: Số vi phạm cổng kiểm soát (gate violations) lọt lên production trước và sau khi triển khai hooks, trích xuất từ hệ thống theo dõi sự cố (incident tracker).