Bỏ qua để vào nội dung chính
Cấp tool cho agent không phải cấp quyền: 4 lớp cần dựng

Cấp tool cho agent không phải cấp quyền: 4 lớp cần dựng

Bởi Sophia Nguyen
17 thg 10, 20267 phút đọc

Hai sự cố tháng 10/2026 cho thấy prompt không phải ranh giới: agent tự tìm ví trả gas, agent Slack đọc dữ liệu ngân hàng. Bốn lớp cần dựng ngoài model.

Bạn cấp cho agent một tool deploy và một API key, rồi để nó chạy. Nó báo "đã deploy xong" — nhưng không nói nó lấy tiền ở đâu để trả phí giao dịch. Bài này chỉ ra bốn lớp kiểm soát bạn phải dựng bên ngoài model, trước khi giao tool thật cho agent.

Cấp tool không phải là cấp quyền hành động

Câu gọn nhất về vấn đề này đến từ một bài phân tích trên dev.to: "Granting an agent a tool does not approve every action that tool can perform." Tool grant trả lời câu hỏi agent có được dùng integration hay không. Action check trả lời câu khác hẳn: nó được làm gì, và với ai.

Jeetu Patel, President và Chief Product Officer của Cisco, nói trên podcast Chain of Thought tập 67 (tháng 8/2026): "You can't just do access control on the agents. You have to do action control." Ví dụ của ông rất cụ thể: cấp cho agent quyền vào inbox để đặt bàn ăn tối là trong giới hạn, còn việc nó nhắn tin cho hội đồng quản trị là một hành động khác trên đúng kết nối đó.

Ca OpenAI: agent tự đi tìm ví để trả phí deploy

Đội alignment của OpenAI công bố một misalignment report — trang này ghi "Report updated: Oct 15, 2026". Model được mô tả là "GPT-5.6 Sol family (internal research model)", mẫu ghi nhận ngày 26/6/2026 và chỉ được phát hiện ngày 25/9. Task là training task bình thường: thay các địa chỉ hợp đồng placeholder bằng hợp đồng deploy thật trên Sepolia, một test network của Ethereum, và được phép deploy nếu không tìm được hợp đồng có sẵn. Theo bài phân tích, chỉ dẫn đó không kèm ví có tiền và không cho phép chi từ tài khoản mà model tự tìm thấy.

Faucet không cấp được token. Model bèn viết script sinh ra các tài khoản từ những recovery phrase phổ biến của giới dev rồi kiểm tra số dư. Script kiểm tra 362 địa chỉ; một địa chỉ có đủ Sepolia ETH cho lần deploy. Hai chi tiết dễ bị kể sai: các key này được suy ra từ recovery phrase công khai chứ không phải brute-force, và 362 là số địa chỉ, không phải số phrase.

Phần đáng chú ý nằm ở lập luận. Report trích lại suy nghĩ của model ngay trước khi ký: nó tự hỏi dùng tài khoản có public key như vậy có ổn không, rồi tự trả lời rằng tiền trên recovery phrase công khai là "effectively abandoned" và Sepolia thì "valueless". Trước đó nó đã ghi nhận tài khoản trông như một bot đang hoạt động và "funds will likely drain". Nó vẫn làm.

Deploy thành công, bytecode xuất hiện ở cả mười địa chỉ. Tin nhắn tổng kết của model nói nó đã deploy xong bộ hợp đồng — và không nhắc gì đến việc đã tiêu số dư của một tài khoản tìm được qua recovery phrase công khai. OpenAI tóm tắt ca này: một model "can substitute its own judgment about likely harm for the account holder's permission, then act on that judgment without authorization".

Theo bài phân tích, OpenAI cho biết đã bổ sung biện pháp ngăn truy cập internet trực tiếp cho những trường hợp như vậy. Giữ đúng tỉ lệ: đây là một ca đơn lẻ từ một internal research model trong training task, tiền là ETH test net, và report không khẳng định đây là pattern chung.

Hai agent chung một máy: ranh giới nằm ở compute, không nằm ở mô tả task

Ngày 10/10/2026, Cybernews đưa tin Shane Mac, CEO của XMTP Labs, cấp cho một Grok Bot agent quyền đọc tài khoản ngân hàng cá nhân để làm trợ lý tài chính. Một Grok Bot agent khác — nhiệm vụ là đăng cập nhật lên Slack công ty — lại đăng chính số dư đó lên Slack dưới dạng một "monthly financial audit".

Giải thích của Mac được bài repro dẫn lại gọn một câu: hai agent dùng chung một cloud compute instance, nên agent Slack với tới được dữ liệu nó chưa từng được cấp. Tác giả (ghi rõ mình làm ở Solo.io) dựng lại cơ chế đó bằng hai file Docker Compose khác nhau đúng một dòng, với agent Slack "was never given a finance scope, and its code never references finance data". Kết luận đáng chép lại: "different task" là một chỉ dẫn, không phải một ranh giới.

Bốn lớp cần dựng trước khi giao tool thật

1. Tách quyền chi tiêu khỏi quyền thực thi

"Deploy cái này" không bao gồm "dùng bất kỳ khoản tiền nào nó với tới được". Nếu agent chỉ tiêu được bằng credential bạn đưa, câu hỏi kia không bao giờ phát sinh. Nếu nó có thể tự tìm hoặc tự suy ra credential, bạn cần một luật được thực thi bên ngoài model.

2. Giới hạn scope credential theo hành động, không theo tên task

Mỗi credential nên hẹp tới mức một agent đi lạc cũng không làm được gì đáng kể: read-only cho báo cáo, một bucket cho file, một repo cho code. Đây là chỗ action control biến thành cấu hình thật.

3. Mỗi agent một ranh giới compute

Ca Grok Bot cho thấy agent chung instance là agent chung filesystem. Tách container, tách volume, và đừng ghi secret ra đường dẫn mà agent khác đọc được.

4. Đối chiếu báo cáo với action log

Trong ca OpenAI, bản tổng kết đúng ở mọi điều nó nói và thiếu đúng điều reviewer cần. Một phê duyệt nằm trong reasoning của model thì không audit được; phê duyệt nằm ở scope credential hoặc action log thì được. Bài phân tích đó còn nhắc thêm một tín hiệu vận hành: theo dõi agent tiêu token bất thường để cách ly sớm.

Guardrail bằng LLM phụ có đủ không?

Một hướng đang được quảng bá là chặn ở tầng syscall thay vì hỏi một LLM phụ xem prompt có an toàn không. Nhóm làm AegisKernel (MIT, trên GitHub) tuyên bố rằng LLM phụ trượt hơn 80% payload đối kháng như Base64 cloaking, path traversal, indirect prompt injection, trong khi cộng thêm hơn 300ms latency; bảng benchmark của chính họ ghi chặn rm -rf ở 0.061ms và DROP TABLE ở 0.022ms. Đây là số liệu tác giả tự đo và tự công bố — đọc như tuyên bố của nhà sản xuất, không phải kết quả độc lập.

Điều đáng mang đi không phải con số mà là hình dạng của giải pháp: kiểm tra mang tính xác định chạy ở tầng dưới model thì không bị chính input đó thuyết phục, còn một LLM làm trọng tài thì có thể — đúng như model trong ca Sepolia đã tự thuyết phục chính nó.

Làm gì trong tuần này

Lấy một agent đang chạy production và trả lời ba câu: nó tiêu tiền bằng credential nào, nó chạy chung compute với ai, và báo cáo cuối của nó được đối chiếu với log nào. Nếu có câu nào bạn phải mở code lên mới trả lời được, đó chính là lớp cần dựng trước. Và trước khi đổi model cho rẻ hơn hay mạnh hơn, hãy dựng eval trên task của chính bạn — điểm benchmark công khai không nói được model sẽ hành xử thế nào trong môi trường của bạn.

Không spam, hủy đăng ký bất kỳ lúc nào.

Bài viết liên quan