Chuyển đến nội dung chính
Yêu cầu quyền của Plugin cho phép mã Plugin tạm dừng một lệnh gọi công cụ hoặc thao tác do Plugin sở hữu cho đến khi người dùng chấp thuận hoặc từ chối. Chúng sử dụng luồng Gateway plugin.approval.* và cùng các bề mặt giao diện người dùng phê duyệt xử lý các nút phê duyệt trong cuộc trò chuyện và lệnh /approve. Sử dụng yêu cầu quyền của Plugin cho các quyền của Plugin/ứng dụng. Chúng không thay thế phê duyệt thực thi trên máy chủ, danh sách cho phép công cụ tùy chọn hoặc quy trình xem xét quyền gốc của Codex.

Chọn cổng kiểm soát phù hợp

Chọn cổng kiểm soát khớp với điểm ra quyết định bạn cần: Công cụ tùy chọn là cổng kiểm soát tại thời điểm khám phá. Yêu cầu quyền của Plugin là cổng kiểm soát cho từng lệnh gọi. Sử dụng cả hai khi một công cụ nhạy cảm phải yêu cầu người dùng chọn tham gia rõ ràng trước khi mô hình có thể nhìn thấy công cụ đó và phải được phê duyệt trước khi hành động chạy.

Yêu cầu phê duyệt trước một lệnh gọi công cụ

Hầu hết lời nhắc do Plugin tạo nên bắt đầu trong hook before_tool_call. Hook này chạy sau khi mô hình chọn công cụ và trước khi OpenClaw thực thi công cụ đó:
Viết nội dung lời nhắc dành cho người sẽ phê duyệt hành động:
  • Giữ title ngắn gọn và tập trung vào hành động; Gateway giới hạn nội dung này ở 80 ký tự.
  • Giữ description cụ thể và có phạm vi rõ ràng; Gateway giới hạn nội dung này ở 512 ký tự.
  • Bao gồm hành động, mục tiêu và rủi ro. Không bao gồm thông tin bí mật, token hoặc tải trọng riêng tư không nên xuất hiện trên các bề mặt phê duyệt trong cuộc trò chuyện.
  • severity mặc định là "warning" khi bị bỏ qua. Chỉ sử dụng "critical" cho các hành động mà quyết định sai có thể gây thiệt hại cho hệ thống sản xuất hoặc mất dữ liệu.
  • allowedDecisions mặc định là ["allow-once", "allow-always", "deny"] khi bị bỏ qua. Truyền ["allow-once", "deny"] khi việc tin cậy lâu dài không an toàn đối với hành động đó.
  • timeoutMs mặc định là 120000 (2 phút) và bị giới hạn ở 600000 (10 phút) bất kể giá trị được yêu cầu.

Hành vi quyết định

OpenClaw tạo một phê duyệt đang chờ với ID plugin:, phân phối phê duyệt đó đến các bề mặt phê duyệt hiện có và chờ quyết định. Chỉ các quyết định allow-onceallow-always chính xác được yêu cầu cho phép mới cho phép thực thi. Các quyết định không xác định, không đúng định dạng, không khớp, bị thiếu và hết thời gian chờ đều bị từ chối theo mặc định. Trường cũ timeoutBehavior vẫn được chấp nhận để tương thích với Plugin nhưng đã ngừng khuyến nghị và bị bỏ qua; không đặt trường này trong hook mới. allow-always chỉ có hiệu lực lâu dài khi Plugin hoặc runtime đưa ra yêu cầu triển khai cơ chế lưu trạng thái đó. Đối với các hook before_tool_call.requireApproval thông thường, OpenClaw coi allow-onceallow-always là các quyết định phê duyệt cho lệnh gọi hiện tại và chuyển giá trị đã xử lý đến onResolution. Nếu Plugin của bạn cung cấp allow-always, hãy ghi tài liệu và triển khai chính xác những lệnh gọi trong tương lai mà cơ chế đó tin cậy. Nếu hook cũng trả về params, OpenClaw chỉ áp dụng các thay đổi tham số đó sau khi phê duyệt thành công. Hook có mức ưu tiên thấp hơn vẫn có thể chặn sau khi hook có mức ưu tiên cao hơn yêu cầu phê duyệt. allowedDecisions giới hạn các nút và lệnh được hiển thị cho người dùng. Gateway từ chối mọi lần thử xử lý bằng quyết định mà yêu cầu không cung cấp.

Định tuyến lời nhắc phê duyệt

Lời nhắc phê duyệt có thể được xử lý trên các bề mặt giao diện người dùng cục bộ hoặc trong các kênh trò chuyện hỗ trợ xử lý phê duyệt. Để chuyển tiếp lời nhắc phê duyệt Plugin đến các mục tiêu trò chuyện được chỉ định rõ ràng, hãy cấu hình approvals.plugin:
approvals.plugin độc lập với approvals.exec. Bật tính năng chuyển tiếp phê duyệt thực thi không định tuyến lời nhắc phê duyệt Plugin, và bật tính năng chuyển tiếp phê duyệt Plugin không thay đổi chính sách thực thi trên máy chủ. Khi lời nhắc có nội dung phê duyệt thủ công, hãy xử lý bằng một trong các quyết định được cung cấp:
Xem Phê duyệt thực thi nâng cao để biết đầy đủ mô hình chuyển tiếp, hành vi phê duyệt trong cùng cuộc trò chuyện, việc phân phối gốc của kênh và các quy tắc người phê duyệt dành riêng cho từng kênh.

Quyền gốc của Codex

Lời nhắc quyền gốc của Codex cũng có thể đi qua phê duyệt Plugin, nhưng chúng có quyền sở hữu khác với các hook do Plugin tạo.
  • Yêu cầu phê duyệt của máy chủ ứng dụng Codex được định tuyến qua OpenClaw sau khi Codex xem xét.
  • Bộ chuyển tiếp hook gốc permission_request có thể yêu cầu thông qua plugin.approval.request khi bộ chuyển tiếp đó được bật.
  • Yêu cầu phê duyệt công cụ MCP được định tuyến qua phê duyệt Plugin khi Codex đánh dấu _meta.codex_approval_kind"mcp_tool_call".
Xem Runtime bộ khai thác Codex để biết hành vi và quy tắc dự phòng dành riêng cho Codex.

Khắc phục sự cố

Công cụ cho biết phê duyệt Plugin không khả dụng. Không có giao diện người dùng phê duyệt hoặc tuyến phê duyệt đã cấu hình nào chấp nhận yêu cầu. Hãy kết nối một máy khách có khả năng phê duyệt, sử dụng kênh hỗ trợ /approve trong cùng cuộc trò chuyện hoặc cấu hình approvals.plugin. allow-always xuất hiện nhưng lệnh gọi tiếp theo lại nhắc. Luồng phê duyệt Plugin chung không tự động lưu trạng thái tin cậy cho các hook tùy ý. Hãy lưu trạng thái tin cậy do Plugin sở hữu trong Plugin của bạn sau onResolution("allow-always"), hoặc chỉ cung cấp allow-oncedeny. /approve từ chối quyết định. Yêu cầu đã giới hạn allowedDecisions. Hãy sử dụng một trong các quyết định được in trong lời nhắc. Lời nhắc Discord, Matrix, Slack hoặc Telegram được định tuyến khác với phê duyệt thực thi. Phê duyệt Plugin và phê duyệt thực thi sử dụng cấu hình riêng biệt và có thể sử dụng các bước kiểm tra ủy quyền khác nhau. Hãy xác minh approvals.plugin và khả năng hỗ trợ phê duyệt Plugin của kênh thay vì chỉ kiểm tra approvals.exec.

Liên quan