Persetujuan exec adalah pagar pengaman aplikasi pendamping / host node untuk mengizinkan agen tersandbox menjalankan perintah pada host nyata (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
gateway atau node). Sebuah
interlock keselamatan: perintah hanya diizinkan ketika kebijakan + allowlist +
persetujuan pengguna (opsional) semuanya setuju. Persetujuan exec ditumpuk di atas
kebijakan alat dan gating elevated (kecuali elevated diatur ke full, yang
melewati persetujuan).
Kebijakan efektif adalah yang lebih ketat dari default
tools.exec.* dan
persetujuan; jika sebuah bidang persetujuan dihilangkan, nilai tools.exec
digunakan. Exec host juga menggunakan status persetujuan lokal pada mesin tersebut - sebuah
ask: "always" lokal-host di ~/.openclaw/exec-approvals.json tetap
memunculkan prompt meskipun default sesi atau konfigurasi meminta ask: "on-miss".Memeriksa kebijakan efektif
| Perintah | Yang ditampilkan |
|---|---|
openclaw approvals get / --gateway / --node <id|name|ip> | Kebijakan yang diminta, sumber kebijakan host, dan hasil efektif. |
openclaw exec-policy show | Tampilan gabungan mesin lokal. |
openclaw exec-policy set / preset | Sinkronkan kebijakan lokal yang diminta dengan file persetujuan host lokal dalam satu langkah. |
host=node, exec-policy show melaporkan
cakupan tersebut sebagai dikelola node saat runtime, bukan berpura-pura bahwa file
persetujuan lokal adalah sumber kebenaran.
Jika UI aplikasi pendamping tidak tersedia, permintaan apa pun yang biasanya
memunculkan prompt akan diselesaikan oleh fallback ask (default: deny).
Tempat penerapannya
Persetujuan exec diberlakukan secara lokal pada host eksekusi:- Host Gateway → proses
openclawpada mesin gateway. - Host node → runner node (aplikasi pendamping macOS atau host node headless).
Model kepercayaan
- Pemanggil yang diautentikasi Gateway dipercaya sebagai operator untuk Gateway tersebut.
- Node yang dipasangkan memperluas kemampuan operator tepercaya itu ke host node.
- Persetujuan exec mengurangi risiko eksekusi tidak disengaja, tetapi bukan batas autentikasi per pengguna atau kebijakan filesystem baca-saja.
- Setelah disetujui, sebuah perintah dapat mengubah file sesuai izin filesystem host atau sandbox yang dipilih.
- Eksekusi host node yang disetujui mengikat konteks eksekusi kanonis: cwd kanonis, argv persis, pengikatan env ketika ada, dan path executable yang dipin ketika berlaku.
- Untuk skrip shell dan pemanggilan file interpreter/runtime langsung, OpenClaw juga mencoba mengikat satu operand file lokal konkret. Jika file terikat itu berubah setelah persetujuan tetapi sebelum eksekusi, eksekusi ditolak alih-alih menjalankan konten yang bergeser.
- Pengikatan file sengaja bersifat upaya terbaik, bukan model semantik lengkap untuk setiap path loader interpreter/runtime. Jika mode persetujuan tidak dapat mengidentifikasi tepat satu file lokal konkret untuk diikat, mode tersebut menolak membuat eksekusi berbasis persetujuan alih-alih berpura-pura memiliki cakupan penuh.
Pemisahan macOS
- Layanan host node meneruskan
system.runke aplikasi macOS melalui IPC lokal. - Aplikasi macOS memberlakukan persetujuan dan mengeksekusi perintah dalam konteks UI.
Pengaturan dan penyimpanan
Persetujuan berada dalam file JSON lokal pada host eksekusi:Kenop kebijakan
exec.security
deny- blokir semua permintaan exec host.allowlist- izinkan hanya perintah yang ada dalam allowlist.full- izinkan semuanya (setara dengan elevated).
exec.ask
off- jangan pernah memunculkan prompt.on-miss- munculkan prompt hanya ketika allowlist tidak cocok.always- munculkan prompt pada setiap perintah. Kepercayaan tahan lamaallow-alwaystidak menekan prompt ketika mode ask efektif adalahalways.
askFallback
Resolusi ketika prompt diperlukan tetapi tidak ada UI yang dapat dijangkau.
deny- blokir.allowlist- izinkan hanya jika allowlist cocok.full- izinkan.
tools.exec.strictInlineEval
Ketika
true, OpenClaw memperlakukan bentuk eval kode inline sebagai hanya-berdasarkan-persetujuan
meskipun binary interpreter itu sendiri ada dalam allowlist. Defense-in-depth
untuk loader interpreter yang tidak terpetakan secara bersih ke satu operand
file stabil.python -cnode -e,node --eval,node -pruby -eperl -e,perl -Ephp -rlua -eosascript -e
allow-always tidak mempertahankan entri allowlist baru untuknya
secara otomatis.
tools.exec.commandHighlighting
Hanya mengontrol penyajian dalam prompt persetujuan exec. Ketika diaktifkan,
OpenClaw dapat melampirkan rentang perintah turunan parser sehingga prompt
persetujuan Web dapat menyorot token perintah. Atur ke
true untuk mengaktifkan
penyorotan teks perintah.security, ask, pencocokan allowlist,
perilaku eval inline ketat, penerusan persetujuan, atau eksekusi perintah.
Ini dapat diatur secara global di bawah tools.exec.commandHighlighting atau per
agen di bawah agents.list[].tools.exec.commandHighlighting.
Mode YOLO (tanpa persetujuan)
Jika Anda ingin exec host berjalan tanpa prompt persetujuan, Anda harus membuka kedua lapisan kebijakan - kebijakan exec yang diminta dalam konfigurasi OpenClaw (tools.exec.*) dan kebijakan persetujuan lokal-host di
~/.openclaw/exec-approvals.json.
YOLO adalah perilaku host default kecuali Anda memperketatnya secara eksplisit:
| Lapisan | Pengaturan YOLO |
|---|---|
tools.exec.security | full pada gateway/node |
tools.exec.ask | off |
Host askFallback | full |
--permission-mode bypassPermissions ketika kebijakan exec yang diminta OpenClaw
adalah YOLO. Timpa perilaku backend tersebut dengan argumen Claude eksplisit
di bawah agents.defaults.cliBackends.claude-cli.args / resumeArgs -
misalnya --permission-mode default, acceptEdits, atau
bypassPermissions.
Jika Anda menginginkan penyiapan yang lebih konservatif, perketat salah satu lapisan kembali ke
allowlist / on-miss atau deny.
Penyiapan gateway-host persisten “jangan pernah prompt”
Pintasan lokal
tools.exec.host/security/asklokal.- Default
~/.openclaw/exec-approvals.jsonlokal.
openclaw approvals set --gateway atau
openclaw approvals set --node <id|name|ip>.
Host node
Untuk host node, terapkan file persetujuan yang sama pada node tersebut sebagai gantinya:Batasan hanya-lokal:
openclaw exec-policytidak menyinkronkan persetujuan node.openclaw exec-policy set --host nodeditolak.- Persetujuan exec node diambil dari node saat runtime, jadi pembaruan yang ditargetkan ke node harus menggunakan
openclaw approvals --node ....
Pintasan hanya-sesi
/exec security=full ask=offhanya mengubah sesi saat ini./elevated fulladalah pintasan break-glass yang juga melewati persetujuan exec untuk sesi tersebut.
Allowlist (per agen)
Allowlist bersifat per agen. Jika ada beberapa agen, beralihlah ke agen yang sedang Anda edit di aplikasi macOS. Pola adalah kecocokan glob. Pola dapat berupa glob path binary yang terselesaikan atau glob nama perintah polos. Nama polos hanya cocok dengan perintah yang dipanggil melaluiPATH, sehingga rg dapat cocok
dengan /opt/homebrew/bin/rg ketika perintahnya adalah rg, tetapi tidak ./rg atau
/tmp/rg. Gunakan glob path ketika Anda ingin mempercayai satu lokasi binary
tertentu.
Entri lama agents.default dimigrasikan ke agents.main saat dimuat.
Rantai shell seperti echo ok && pwd tetap memerlukan setiap segmen tingkat atas
untuk memenuhi aturan allowlist.
Contoh:
rg~/Projects/**/bin/peekaboo~/.local/bin/*/opt/homebrew/bin/rg
Membatasi argumen dengan argPattern
TambahkanargPattern ketika sebuah entri allowlist harus cocok dengan binary dan
bentuk argumen tertentu. OpenClaw mengevaluasi regular expression
terhadap argumen perintah yang diurai, tanpa token executable
(argv[0]). Untuk entri yang ditulis tangan, argumen digabungkan dengan
satu spasi, jadi jangkar pola ketika Anda memerlukan kecocokan persis.
python3 safe.py; python3 other.py adalah miss allowlist.
Jika entri hanya-path untuk binary yang sama juga ada, argumen yang tidak cocok
masih dapat fallback ke entri hanya-path tersebut. Hilangkan entri hanya-path
ketika tujuannya adalah membatasi binary ke argumen yang dideklarasikan.
Entri yang disimpan oleh alur persetujuan dapat menggunakan format pemisah internal untuk
pencocokan argv yang tepat. Sebaiknya gunakan UI atau alur persetujuan untuk meregenerasi
entri tersebut daripada mengedit nilai yang dikodekan secara manual. Jika OpenClaw tidak dapat
mengurai argv untuk segmen perintah, entri dengan argPattern tidak cocok.
Setiap entri allowlist mendukung:
| Bidang | Makna |
|---|---|
pattern | Glob path biner yang di-resolve atau glob nama perintah polos |
argPattern | Regex argv opsional; entri yang dihilangkan hanya path |
id | UUID stabil yang digunakan untuk identitas UI |
source | Sumber entri, seperti allow-always |
commandText | Teks perintah yang ditangkap saat alur persetujuan membuat entri |
lastUsedAt | Timestamp terakhir digunakan |
lastUsedCommand | Perintah terakhir yang cocok |
lastResolvedPath | Path biner terakhir yang di-resolve |
CLI Skills yang diizinkan otomatis
Saat CLI Skills yang diizinkan otomatis diaktifkan, executable yang direferensikan oleh Skills yang diketahui diperlakukan sebagai terdaftar dalam allowlist pada Node (Node macOS atau host Node headless). Ini menggunakanskills.bins melalui Gateway RPC untuk mengambil
daftar bin Skills. Nonaktifkan ini jika Anda menginginkan allowlist manual yang ketat.
Bin aman dan penerusan persetujuan
Untuk bin aman (fast-path hanya stdin), detail binding interpreter, dan cara meneruskan prompt persetujuan ke Slack/Discord/Telegram (atau menjalankannya sebagai klien persetujuan native), lihat Persetujuan exec - lanjutan.Pengeditan UI Kontrol
Gunakan kartu Control UI → Nodes → Exec approvals untuk mengedit default, override per agen, dan allowlist. Pilih cakupan (Default atau agen), sesuaikan kebijakan, tambah/hapus pola allowlist, lalu Save. UI menampilkan metadata terakhir digunakan per pola agar Anda dapat menjaga daftar tetap rapi. Pemilih target memilih Gateway (persetujuan lokal) atau Node. Node harus mengiklankansystem.execApprovals.get/set (aplikasi macOS atau
host Node headless). Jika sebuah Node belum mengiklankan persetujuan exec,
edit langsung ~/.openclaw/exec-approvals.json lokalnya.
CLI: openclaw approvals mendukung pengeditan Gateway atau Node - lihat
CLI Persetujuan.
Alur persetujuan
Saat prompt diperlukan, Gateway menyiarkanexec.approval.requested ke klien operator. Control UI dan aplikasi macOS
menyelesaikannya melalui exec.approval.resolve, lalu Gateway meneruskan
permintaan yang disetujui ke host Node.
Untuk host=node, permintaan persetujuan menyertakan payload systemRunPlan
kanonis. Gateway menggunakan rencana tersebut sebagai konteks
command/cwd/session yang otoritatif saat meneruskan permintaan system.run
yang disetujui.
Itu penting untuk latensi persetujuan async:
- Path exec Node menyiapkan satu rencana kanonis di awal.
- Catatan persetujuan menyimpan rencana tersebut beserta metadata binding-nya.
- Setelah disetujui, panggilan
system.runakhir yang diteruskan menggunakan ulang rencana tersimpan alih-alih mempercayai edit pemanggil berikutnya. - Jika pemanggil mengubah
command,rawCommand,cwd,agentId, atausessionKeysetelah permintaan persetujuan dibuat, Gateway menolak run yang diteruskan sebagai ketidakcocokan persetujuan.
Peristiwa sistem
Siklus hidup exec ditampilkan sebagai pesan sistem:Exec running(hanya jika perintah melebihi ambang pemberitahuan berjalan).Exec finished.Exec denied.
runId dalam pesan-pesan ini
agar mudah dikorelasikan.
Perilaku persetujuan yang ditolak
Saat persetujuan exec async ditolak, OpenClaw mencegah agen menggunakan ulang output dari run sebelumnya dari perintah yang sama dalam sesi. Alasan penolakan diteruskan dengan panduan eksplisit bahwa tidak ada output perintah yang tersedia, yang menghentikan agen dari mengklaim ada output baru atau mengulangi perintah yang ditolak dengan hasil lama dari run berhasil sebelumnya.Implikasi
fullsangat kuat; sebaiknya gunakan allowlist bila memungkinkan.askmembuat Anda tetap terlibat sambil tetap memungkinkan persetujuan cepat.- Allowlist per agen mencegah persetujuan satu agen bocor ke agen lain.
- Persetujuan hanya berlaku untuk permintaan exec host dari pengirim terotorisasi. Pengirim tidak terotorisasi tidak dapat menerbitkan
/exec. /exec security=fulladalah kemudahan tingkat sesi untuk operator terotorisasi dan melewati persetujuan secara desain. Untuk memblokir exec host secara tegas, atur keamanan persetujuan kedenyatau tolak toolexecmelalui kebijakan tool.
Terkait
Persetujuan exec - lanjutan
Bin aman, binding interpreter, dan penerusan persetujuan ke chat.
Tool exec
Tool eksekusi perintah shell.
Mode elevated
Path break-glass yang juga melewati persetujuan.
Sandboxing
Mode sandbox dan akses workspace.
Keamanan
Model keamanan dan hardening.
Sandbox vs kebijakan tool vs elevated
Kapan menggunakan setiap kontrol.
Skills
Perilaku izinkan otomatis yang didukung Skill.