Setujui tindakan berisiko sebelum dijalankan BETA
escalate_on_deny tidak mengajukan permintaan persetujuanPenolakan tetap berjalan. Aturan yang diberi tag escalate_on_deny: true menolak persis
seperti yang tertulis -- dengan policy_id aturan yang cocok, effect: "deny",
reason_code: "RULE_MATCH".
Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis
You are protected.
Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis
The escalation does not. The tag is accepted by the policy schema and
carried into the policy bundle, and no enforcer acts on it: no approval request
is raised, no approver is notified, and decision.requires_approval stays
false. Code that branches on decision.requires_approval in order to act on
this tag therefore never runs. (A different mechanism, LLM function policies'
require_approval, does set that field -- escalate_on_deny is not wired to
it.) Tracking: #2391.
Untuk meminta persetujuan saat ini, panggil secara eksplisit.
client.request_approval(decision) mengirimkan permintaan persetujuan yang sebenarnya. Tag tersebut
tidak memanggilnya untuk Anda. Lihat Approval callback.
Sesuai #2363, halaman
/approvals untuk pemberi persetujuan memerlukan persetujuan di produksi, sehingga permintaan
diselesaikan melalui API.
Hal ini berlaku untuk SDK Python yang dipublikasikan (controlzero 1.13.14) dan
SDK Node yang dipublikasikan (@controlzero/sdk 1.13.6).
Titik penerapan yang digunakan: Alur persetujuan (dasbor + kanal notifikasi) Mode yang didukung: Hosted (SaaS) Paket: Teams Status: BETA. Jalur permintaan sudah tersedia di setiap deployment, termasuk paket hosted (SaaS): kebijakan mengajukan permintaan persetujuan dan agen berhenti sejenak. Persetujuan nonaktif secara default -- administrator mengaktifkannya per cakupan (organisasi, proyek, atau kunci API) di Settings -> Approvals. Pengaktifan memerlukan pemberi persetujuan terpisah, sehingga dimulai dari paket Teams.
Separuh alur yang menghentikan sementara tindakan sudah berfungsi saat ini. Separuh yang memungkinkan manusia melepaskannya belum: rute kotak masuk persetujuan dan detail permintaan dialihkan ke dasbor di setiap deployment yang dikirimkan, dan deep link notifikasi mengarah ke jalur yang sama. Tidak ada paket -- termasuk Teams -- yang dapat menyetujui permintaan dari UI saat ini.
Konsekuensinya aman tetapi tumpul. Permintaan yang tertahan berjalan hingga batas waktunya,
SDK memunculkan HITLTimeoutError dengan penolakan sintetis, dan tindakan tidak
dijalankan. Mengaktifkan persetujuan saat ini memberi Anda penghentian keras dengan jejak audit pada
tindakan approval_required. Belum ada alur setujui-dan-lanjutkan. Lihat
Siapkan persetujuan untuk panduan menyeluruh.
Yang akan Anda lakukan
Saat agen AI mencoba tindakan yang ditandai approval_required oleh kebijakan Anda (deploy produksi, refund besar, pengiriman email eksternal), permintaan berhenti sejenak dan pemberi persetujuan menerima notifikasi Slack atau email lengkap dengan konteksnya. Setelah kotak masuk tersedia, pemberi persetujuan mengklik Approve atau Deny dan agen akan melanjutkan atau menerima penolakan beserta alasannya.
Mengapa ini jalur yang tepat untuk Anda
- Jika Anda ingin agen AI menangani pekerjaan berisiko tinggi tetapi tidak membiarkan mereka berjalan lepas tanpa pengawasan, inilah polanya.
- Jika kelompok pemberi persetujuan Anda kecil dan mudah diprediksi, alur persetujuan lebih baik daripada mengubah kebijakan per permintaan.
- Jika Anda ingin menolak secara mutlak, gunakan aturan atau kebijakan DLP biasa. Persetujuan ditujukan untuk keputusan "kadang ya, kadang tidak".
Kapan TIDAK menggunakan pendekatan ini
Jika jawabannya selalu sama ("jangan pernah izinkan penulisan produksi dari agen"), jangan menunggu persetujuan. Tulis aturan penolakan hari ini.
Pengalamannya
Agent -> Control Zero: invoke tool "send_refund" args {amount: $9500, customer: ...}
Control Zero: policy match "high_value_refund" -> deny
SDK: your code calls client.request_approval(decision) -> POST approval request
Control Zero -> Slack / email / in-app bell: "Agent 'billing-bot' wants to refund $9500 to cust_123.
[ Approve ] [ Deny ] [ Open context ]"
Approver clicks Approve once / for 24h / 7d / 30d / forever.
SDK: PendingApproval.wait() resolves -> agent proceeds with the call (allow path).
Primitif jeda-dan-tunggu sudah tersedia di SDK saat ini: agen memanggil request_approval() pada penolakan yang menurutnya dapat ditinjau, lalu menunggu di PendingApproval.wait() hingga pemberi persetujuan memutuskan. Aksi kebijakan, kanal notifikasi, dan jejak audit semuanya mendukung alur ini. Langkah yang harus dilakukan kode agen itu sendiri adalah pemanggilan request_approval() -- tag kebijakan tidak membuatnya terjadi.
Cara menyiapkannya
- Beri tag pada aturan. Tandai aturan yang ingin Anda tinjau dengan
escalate_on_deny: true. Saat ini tag ini mencatat maksud bagi siapa pun yang membaca kebijakan; langkah 3 yang mengubah penolakan menjadi permintaan. - Aktifkan persetujuan. Admin mengaktifkan persetujuan untuk cakupan (organisasi, proyek, atau kunci API) di Settings -> Approvals. Fitur ini nonaktif secara default.
- Hubungkan SDK. Pada penolakan yang menurut kode Anda dapat ditinjau, panggil
request_approval()danwait()(Python) /requestApproval()danwait()(Node). Langkah inilah yang mengajukan permintaan. Lihat panduan approval callback. - Setujui dari mana saja. Pemberi persetujuan bertindak dari lonceng dalam aplikasi, magic link email, atau kanal peringatan yang terhubung.
Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis
Every approval is auditable: who approved, when, why, and what grant was created.
Lihat Siapkan persetujuan untuk panduan lengkap dan Alur persetujuan untuk model jenis keputusan dan cakupan.
Lebih suka penolakan yang selalu aktif?
Jika jawabannya selalu "tidak", jangan gunakan persetujuan -- tulis aturan penolakan. Jika Anda menginginkan alur tinjauan ringan notifikasi saat penolakan tanpa mengaktifkan persetujuan, tolak dengan alasan dan arahkan ke sebuah kanal:
- name: high_value_refund
match:
tool: send_refund
argument_gt: { amount: 1000 }
action: deny
reason: 'Refunds over $1,000 require a human approver. Reply in #approvals to authorize.'
Pasangkan dengan kanal peringatan agar alasan penolakan dan argumen alat masuk ke kanal tinjauan Anda.
Tindak lanjut umum
- "Siapkan alur persetujuan lengkap" -> Siapkan persetujuan
- "Hubungkan callback SDK" -> Approval callback
- "Tulis aturan penolakan biasa saja" -> Siapkan aturan DLP
- "Lihat apa lagi yang ada di peta jalan" -> Ketersediaan fitur
Referensi
- Konsep: Kebijakan, Notifikasi
- API: Referensi API