Tạp chí Thợ Code

Kiro Approve for Me: Khi AI Agent tự quyết định hành động nào được phép chạy, hành động nào cần hỏi Developer

Một trong những trải nghiệm khá khó chịu khi làm việc với AI Coding Agent là chuyện... phải liên tục bấm Approve.

  • Bạn yêu cầu AI sửa một failing test.
  • Agent đọc source code. Approve.
  • Agent chạy test. Approve.
  • Agent sửa code. Approve.
  • Agent chạy lại test. Lại Approve.

Một task đáng lẽ có thể để AI tự xử lý trong vài phút, cuối cùng developer vẫn phải ngồi canh màn hình để liên tục cấp quyền.

Vấn đề không hẳn nằm ở việc AI cần xin phép. Kiểm soát quyền thực thi là cần thiết, đặc biệt khi agent có thể chạy shell commands, chỉnh sửa filesystem hoặc truy cập các công cụ bên ngoài.

Vấn đề là AI đang yêu cầu con người đưa ra quá nhiều quyết định không thực sự cần thiết.

Và để giải quyết việc đó, cho pháp các thợ code có thể yên tâm cắm máy đó và đi ngủ thì Kiro giới thiệu tính năng Approve for me, một cơ chế sử dụng AI để đánh giá và phê duyệt các hành động của AI Agent.

Điều thú vị là thay vì loại bỏ approval, Kiro lại đưa thêm một AI vào quy trình để quyết định khi nào approval thực sự cần thiết.

Nghe hơi giống chuyện thuê thêm một người để quản lý một nhân viên AI vậy. 😅

Approve for Me là gì?

Hiểu đơn giản, Approve for me là chế độ cho phép Kiro tự động đánh giá mức độ an toàn của những hành động chưa được xử lý bởi permission rules.

Khi agent muốn thực hiện một hành động, Kiro sẽ kiểm tra các rules đã cấu hình.

Nếu hành động chưa có rule quyết định, Kiro sử dụng một LLM để đánh giá. Theo công bố ban đầu, cơ chế này sử dụng model của Anthropic.

Kết quả đánh giá có ba khả năng:

  • Approve: Hành động được đánh giá an toàn và được thực thi mà không cần hỏi developer.
  • Block: Hành động bị đánh giá không an toàn và bị chặn. Agent có thể tìm phương án khác an toàn hơn.
  • Ask: AI chưa đủ chắc chắn nên chuyển quyền quyết định lại cho developer.

Có thể hình dung luồng xử lý như sau:

Agent Action → Permission Rules → AI Safety Evaluation → Approve / Block / Ask Human

Điểm quan trọng ở đây là AI không thay thế hoàn toàn hệ thống permission hiện có.

Những rule mà developer hoặc tổ chức đã cấu hình vẫn được ưu tiên áp dụng.

Approve for me chỉ xử lý những hành động chưa có rule quyết định.

Kiro hiện có ba chế độ Approval

Trước đây, Kiro sử dụng Autopilot để cho phép agent chỉnh sửa file mà không cần xác nhận từng thay đổi.

Với phiên bản mới, giao diện chat có ba chế độ.

ModeCách hoạt động
SupervisedDeveloper kiểm tra, chấp nhận hoặc từ chối thay đổi file sau mỗi lượt chỉnh sửa
Accept file changesAgent tự tạo, sửa, xóa file; lệnh thực thi vẫn cần approval theo cơ chế quyền hiện có
Approve for meAI đánh giá các hành động chưa được permission rules xử lý và quyết định approve, block hoặc hỏi developer

Supervised phù hợp với những công việc cần kiểm soát chặt chẽ.

Accept file changes, tên mới của Autopilot, phù hợp khi developer tin tưởng agent chỉnh sửa code nhưng vẫn muốn kiểm soát các lệnh thực thi.

Approve for me hướng đến một mô hình linh hoạt hơn: tự động hóa các approval thông thường nhưng giữ lại những quyết định có rủi ro hoặc chưa rõ ràng cho con người.

Và theo mình, đây mới là điểm đáng chú ý nhất.

Tại sao Kiro lại cần tính năng này?

Theo số liệu Kiro công bố từ một tuần quan sát các phiên Kiro CLI interactive:

  • 15,8% tool calls yêu cầu người dùng cấp quyền.
  • 97,1% các yêu cầu approval đó được người dùng chấp thuận.
  • 13,4% sessions bắt đầu với trust-all-tools được bật.

Con số 97,1% khá thú vị.

Nó cho thấy phần lớn những lần agent dừng lại để hỏi đều nhận được câu trả lời là Yes.

Vậy developer đang thực sự kiểm tra hành động của agent hay chỉ đang bấm Approve theo thói quen?

Đây chính là hiện tượng permission fatigue.

Khi một hệ thống cảnh báo quá thường xuyên, người dùng dần mất khả năng phân biệt cảnh báo quan trọng với những thông báo bình thường.

Một lời nhắc trước khi chạy npm test có thể chỉ làm gián đoạn công việc.

Nhưng một lời nhắc liên quan đến việc đọc AWS credentials, thay đổi security configuration hay xóa dữ liệu lại có ý nghĩa hoàn toàn khác.

Nếu cả hai đều xuất hiện liên tục dưới cùng một hình thức, developer rất dễ chấp thuận mà không kiểm tra kỹ.

Approve for me cố gắng giảm những quyết định ít giá trị để con người tập trung vào những quyết định quan trọng hơn.

Ví dụ thực tế: AI Agent tự sửa lỗi trong một Backend Service

Giả sử team backend đang phát triển một hệ thống thương mại điện tử bằng Node.js.

Một pull request làm hỏng một số unit tests liên quan đến xử lý đơn hàng.

Developer giao cho Kiro nhiệm vụ:

Investigate failing tests in the order service, fix the root cause, and verify that all existing tests pass. Do not change production configuration.

Agent bắt đầu thực hiện workflow:

Read Code → Run Tests → Investigate → Fix Code → Rerun Tests → Report

Trong quá trình đó, agent có thể cần thực hiện nhiều hành động.

Hành độngKết quả minh họa
Đọc source code trong workspaceAllow theo rule
Chạy npm testAI đánh giá và có thể Approve
Sửa logic xử lý đơn hàngAllow theo rule
Chạy lại unit testsAI đánh giá và có thể Approve
Thay đổi Git hooks để bỏ qua kiểm traCó thể bị Block
Truy cập file credentials ngoài workspaceAsk hoặc Block tùy policy và ngữ cảnh

Đây là tình huống minh họa. Quyết định thực tế phụ thuộc permission rules, môi trường, trust state và đánh giá của model.

Trước đây, một workflow như vậy có thể liên tục dừng lại ở những bước cần approval.

Với Approve for me, các hành động thông thường có thể được xử lý mà developer không cần can thiệp.

Nhưng nếu agent phát sinh một hành động bất thường, chẳng hạn thay đổi cấu hình bảo mật để test chạy thành công, hệ thống có thể chặn lại.

Agent sau đó có thể tìm phương án khác thay vì tiếp tục thực hiện hành động không được chấp thuận.

Điều chúng ta muốn không phải là AI làm mọi thứ mà không hỏi, mà là AI biết khi nào nên hỏi.

画像が読み込まれない場合はページを更新してみてください。
Ảnh: kiro blog.
Permission Rules vẫn là lớp kiểm soát đầu tiên

Một điểm mình đánh giá cao là Approve for me không bỏ qua những rule đã cấu hình.

Kiro sử dụng các hiệu ứng permission với thứ tự ưu tiên:

Deny → Ask → Allow → Evaluate

Trong đó:

Deny: Hành động bị từ chối theo rule.

Ask: Developer phải xác nhận.

Allow: Hành động được phép thực hiện.

Evaluate: Kiro sử dụng LLM để đánh giá.

Ví dụ, một engineering team có thể thiết lập chính sách:

  • Cho phép đọc và chỉnh sửa source code trong các thư mục dự án phù hợp.
  • Chặn các lệnh xóa dữ liệu nguy hiểm như rm -rf *.
  • Yêu cầu xác nhận trước những lệnh tác động tới production.
  • Để AI đánh giá các shell commands chưa có rule.

Khi đó, những hành động đã bị Deny không thể được Approve for me tự ý cho phép.

Ngược lại, những hành động đã được Allow không cần phải gửi thêm cho LLM review.

Mô hình này khá giống cách thiết kế security policy truyền thống: deterministic rules xử lý những trường hợp đã biết, AI xử lý phần còn chưa được định nghĩa rõ ràng.

Kết quả thử nghiệm ban đầu có đáng chú ý không?

Kiro cho biết đã sử dụng Approve for me nội bộ trong hai tuần.

Theo số liệu từ một tuần thử nghiệm:

Chỉ sốKết quả
Hành động được permission rules xử lýKhoảng 70%
Hành động cần LLM reviewKhoảng 30%
LLM review xử lý không cần hỏi người dùngKhoảng 97%
LLM review chuyển lại cho người dùngKhoảng 2%
LLM review chặnDưới 1%
Median review latencyDưới 1 giây

Điểm đáng chú ý là 97% ở đây chỉ tính trên nhóm hành động đã được gửi đến LLM review, không phải toàn bộ tool calls.

Kết quả cho thấy AI có thể giải quyết phần lớn những approval còn lại sau khi permission rules đã được áp dụng.

Tuy nhiên, đây mới là số liệu sử dụng nội bộ do Kiro công bố, chưa phải một benchmark độc lập về độ chính xác của khả năng phát hiện hành động nguy hiểm.

Và cũng cần lưu ý: ít approval prompts hơn không đồng nghĩa với an toàn hơn trong mọi tình huống.

Approve for me có thực sự an toàn?

Đây có lẽ là câu hỏi quan trọng nhất.

Approve for me sử dụng LLM để đánh giá một hành động có nên được thực thi hay không.

Nhưng LLM không phải security boundary tuyệt đối.

Một model có thể đánh giá sai.

Một shell command nhìn có vẻ bình thường vẫn có thể gây ra tác động ngoài dự kiến.

Một dependency hoặc script được agent thực thi cũng có thể chứa những hành vi mà việc đánh giá ban đầu không phát hiện đầy đủ.

Kiro cũng nói rõ rằng Approve for me chỉ quyết định hành động nào được cấp quyền, chứ không tự giới hạn những tài nguyên mà shell command có thể truy cập sau khi chạy.

Do đó, Kiro khuyến nghị sử dụng thêm Local Command Sandbox trong IDE và CLI.

Sandbox tạo ra lớp giới hạn ở mức hệ điều hành đối với shell commands, bao gồm khả năng hạn chế network access.

Với Kiro Web, các session đã chạy trong môi trường cloud sandbox được quản lý.

Đây là một cách tiếp cận theo nguyên tắc Defense in Depth:

Permission Rules → AI Approval → Sandbox → Human Oversight

Mỗi lớp giải quyết một phần rủi ro khác nhau.

Không có lớp nào nên được xem là giải pháp bảo mật tuyệt đối.

Những điểm mình đánh giá cao
1. Giảm gián đoạn khi làm việc với AI Agent

Đối với các công việc dài như refactoring, debugging hoặc xây dựng tính năng mới, việc liên tục phê duyệt từng hành động có thể phá vỡ workflow.

Approve for me giúp agent thực thi những bước thông thường liên tục hơn.

2. Hạn chế nhu cầu sử dụng trust-all-tools

Trước đây, để tránh approval prompts, developer có thể bật trust-all-tools.

Cách này thuận tiện nhưng cũng làm tăng rủi ro vì agent được tin tưởng quá rộng.

Approve for me mang lại một lựa chọn trung gian hợp lý hơn: giảm approval nhưng vẫn có khả năng chặn hoặc hỏi khi cần.

3. Phù hợp với Agentic Development

Khi AI chỉ generate code, việc review từng thay đổi chưa phải vấn đề lớn.

Nhưng khi agent thực hiện workflow nhiều bước, liên tục đọc file, chạy tool, sửa code và kiểm tra kết quả, approval trở thành một thành phần ảnh hưởng trực tiếp đến throughput.

Approve for me giúp giảm một phần chi phí tương tác giữa developer và agent.

Nhưng vẫn có những đánh đổi

Điểm đầu tiên là model không bảo đảm đánh giá chính xác tuyệt đối. Doanh nghiệp vẫn cần permission policies, sandbox và các kiểm soát phù hợp.

Điểm thứ hai là chi phí. Kiro tính mức sử dụng LLM review vào gói dịch vụ của người dùng. Với những team có khối lượng agent actions lớn, đây là một yếu tố cần theo dõi.

Điểm thứ ba là không phải mọi approval đều biến mất. Những hành động không rõ mức độ an toàn vẫn có thể cần developer xác nhận.

Kiro cũng có cơ chế quay lại hỏi người dùng kèm lý do sau ba bước liên tiếp gặp hành động bị chặn.

Vì vậy, Approve for me nên được hiểu là một cơ chế giảm ma sát trong quá trình thực thi, không phải chế độ tự động hóa hoàn toàn.

Cách bật Approve for me

Tính năng được Kiro công bố cho người dùng trả phí trên Kiro IDE, Kiro CLI và Kiro Web tại các khu vực us-east-1 và eu-central-1, tùy khả năng cung cấp của tính năng và model hỗ trợ.

Kiro IDE: Từ phiên bản 1.4.154, chọn Approve for me trong menu chế độ chat. Có thể bật Use Approve for me by default để áp dụng cho các cuộc chat mới ở tất cả workspaces. Command Palette cũng hỗ trợ quản lý thiết lập này.

画像が読み込まれない場合はページを更新してみてください。

Kiro CLI: Từ phiên bản 2.36, trong interactive V3 session, sử dụng /permissions, chọn Policies rồi chọn approve-for-me nếu khả dụng.

画像が読み込まれない場合はページを更新してみてください。

Kiro Web: Bật trong Agent Config → Tool approvals. Thiết lập áp dụng cho các session mới, không thay đổi autonomous sessions.

画像が読み込まれない場合はページを更新してみてください。
Ảnh: kiro blog

Tính năng mặc định không được bật. Nếu chuyển chế độ trong một chat hiện tại, chế độ mới có hiệu lực từ hành động tiếp theo của Kiro.

Góc nhìn của mình: AI Agent không chỉ cần khả năng thực thi, mà còn cần khả năng kiểm soát

Điều mình thấy đáng chú ý ở Approve for me không nằm ở việc Kiro giúp developer tiết kiệm vài cú click. Mà là một sự thay đổi trong cách thiết kế AI Agent.

画像が読み込まれない場合はページを更新してみてください。

Trước đây, chúng ta thường chỉ tập trung vào: Prompt → Reasoning → Tool Execution → Result

Nhưng khi agent bắt đầu có quyền truy cập filesystem, terminal, cloud resources và các hệ thống bên ngoài, workflow cần thêm một thành phần: Prompt → Reasoning → Permission Evaluation → Tool Execution → Verification

Và Permission Evaluation đang dần trở thành một phần quan trọng trong kiến trúc của AI Agent.

Thay vì buộc developer quyết định mọi hành động, hệ thống có thể phân chia trách nhiệm:

  • Rules quyết định những trường hợp đã được định nghĩa rõ ràng.
  • AI đánh giá những trường hợp chưa có rule.
  • Sandbox giới hạn môi trường thực thi.
  • Con người xử lý các quyết định quan trọng hoặc chưa chắc chắn.

Theo mình, đây là hướng đi hợp lý đối với các AI Agent ngày càng tự chủ. Bởi vì một coding agent tốt không chỉ cần biết viết code, chạy test hay sửa lỗi. Nó còn phải biết những hành động nào có thể tự thực hiện, những hành động nào cần dừng lại và khi nào phải trả quyền quyết định cho con người.

Tuy nhiên, ở thời điểm hiện tại Approve for me chưa giải quyết hoàn toàn bài toán AI Agent Security. Nhưng nó là một bước tiến đáng chú ý từ mô hình Human Approves Everything sang Human Oversees What Matters. Trước đây, với mô hình Human Approves Everything, developer phải liên tục xác nhận từng hành động của AI Agent, kể cả những tác vụ đơn giản như chạy test hay đọc source code. Điều này khiến con người vô tình trở thành nút thắt cổ chai trong quá trình tự động hóa. Với Human Oversees What Matters, vai trò của developer chuyển từ người phê duyệt mọi thao tác sang người giám sát và xử lý những quyết định thực sự quan trọng. AI có thể tự thực hiện các hành động được đánh giá an toàn, trong khi con người chỉ cần can thiệp khi có rủi ro hoặc sự không chắc chắn. Nói cách khác, developer không còn phải quản lý từng bước AI làm, mà tập trung kiểm soát những gì AI được phép làm.

Và khi AI Agent ngày càng tham gia sâu vào Software Development Lifecycle, khả năng kiểm soát hành động có lẽ sẽ quan trọng không kém khả năng viết code.


Tài liệu tham khảo

Nội dung dựa trên tài liệu chính thức của Kiro, cập nhật đến ngày 14/11/2026. Các tình huống thực tế trong bài là ví dụ minh họa, không phải kết quả kiểm thử độc lập.

Bài: Bái Tử Long. Cover Photo by Dimas Rizki Pratama on Unsplash