Jalankan perintah shell di workspace.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.
exec adalah permukaan shell yang mengubah keadaan: perintah dapat membuat, mengedit, atau menghapus file di mana pun host terpilih atau filesystem sandbox mengizinkan. Menonaktifkan alat filesystem OpenClaw seperti write, edit, atau apply_patch tidak membuat exec menjadi hanya-baca.
Mendukung eksekusi foreground + background melalui process. Jika process tidak diizinkan, exec berjalan secara sinkron dan mengabaikan yieldMs/background.
Sesi background dicakup per agen; process hanya melihat sesi dari agen yang sama.
Parameter
Perintah shell yang akan dijalankan.
Direktori kerja untuk perintah.
Pengesampingan lingkungan kunci/nilai yang digabungkan di atas lingkungan yang diwarisi.
Jadikan perintah background secara otomatis setelah penundaan ini (md).
Jadikan perintah background segera alih-alih menunggu
yieldMs.Kesampingkan batas waktu exec yang dikonfigurasi untuk panggilan ini. Atur
timeout: 0 hanya ketika perintah harus berjalan tanpa batas waktu proses exec.Jalankan dalam terminal semu saat tersedia. Gunakan untuk CLI khusus TTY, agen pengodean, dan UI terminal.
Tempat mengeksekusi.
auto diresolusikan ke sandbox ketika runtime sandbox aktif dan ke gateway jika tidak.Diabaikan untuk panggilan alat normal. Keamanan
gateway / node dikendalikan oleh
tools.exec.security dan ~/.openclaw/exec-approvals.json; mode yang ditingkatkan dapat
memaksa security=full hanya ketika operator secara eksplisit memberi akses yang ditingkatkan.Perilaku prompt persetujuan untuk eksekusi
gateway / node.Id/nama node ketika
host=node.Minta mode yang ditingkatkan — keluar dari sandbox ke path host yang dikonfigurasi.
security=full dipaksa hanya ketika elevated diresolusikan ke full.hostsecara default adalahauto: sandbox ketika runtime sandbox aktif untuk sesi, jika tidak Gateway.hosthanya menerimaauto,sandbox,gateway, ataunode. Ini bukan pemilih hostname; nilai yang mirip hostname ditolak sebelum perintah berjalan.autoadalah strategi perutean default, bukan wildcard.host=nodeper panggilan diizinkan dariauto;host=gatewayper panggilan hanya diizinkan ketika tidak ada runtime sandbox yang aktif.- Tanpa konfigurasi tambahan,
host=autotetap “langsung berfungsi”: tidak ada sandbox berarti diresolusikan kegateway; sandbox aktif berarti tetap berada di sandbox. elevatedkeluar dari sandbox ke path host yang dikonfigurasi:gatewaysecara default, ataunodeketikatools.exec.host=node(atau default sesi adalahhost=node). Ini hanya tersedia ketika akses yang ditingkatkan diaktifkan untuk sesi/penyedia saat ini.- Persetujuan
gateway/nodedikendalikan oleh~/.openclaw/exec-approvals.json. nodememerlukan node yang dipasangkan (aplikasi pendamping atau host node tanpa antarmuka).- Jika beberapa node tersedia, atur
exec.nodeatautools.exec.nodeuntuk memilih salah satu. exec host=nodeadalah satu-satunya jalur eksekusi shell untuk node; wrapper lamanodes.runtelah dihapus.timeoutberlaku untuk eksekusi foreground, background,yieldMs, Gateway, sandbox, dansystem.runnode. Jika dihilangkan, OpenClaw menggunakantools.exec.timeoutSec;timeout: 0eksplisit menonaktifkan batas waktu proses exec untuk panggilan tersebut.- Pada host non-Windows, exec menggunakan
SHELLketika disetel; jikaSHELLadalahfish, exec lebih memilihbash(ataush) dariPATHuntuk menghindari skrip yang tidak kompatibel dengan fish, lalu kembali keSHELLjika keduanya tidak ada. - Pada host Windows, exec lebih memilih penemuan PowerShell 7 (
pwsh) (Program Files, ProgramW6432, lalu PATH), lalu kembali ke Windows PowerShell 5.1. - Eksekusi host (
gateway/node) menolak pengesampinganenv.PATHdan loader (LD_*/DYLD_*) untuk mencegah pembajakan biner atau kode yang disuntikkan. - OpenClaw menetapkan
OPENCLAW_SHELL=execdi lingkungan perintah yang dibuat (termasuk eksekusi PTY dan sandbox) sehingga aturan shell/profil dapat mendeteksi konteks alat exec. openclaw channels logindiblokir dariexeckarena merupakan alur autentikasi channel interaktif; jalankan di terminal pada host Gateway, atau gunakan alat login bawaan channel dari chat jika ada.- Penting: sandboxing nonaktif secara default. Jika sandboxing nonaktif,
host=autoimplisit diresolusikan kegateway.host=sandboxeksplisit tetap gagal tertutup alih-alih diam-diam berjalan pada host Gateway. Aktifkan sandboxing atau gunakanhost=gatewaydengan persetujuan. - Pemeriksaan preflight skrip (untuk kesalahan umum sintaks shell Python/Node) hanya memeriksa file di dalam
batas
workdirefektif. Jika path skrip diresolusikan di luarworkdir, preflight dilewati untuk file tersebut. - Untuk pekerjaan berjalan lama yang dimulai sekarang, mulai sekali dan andalkan
wake penyelesaian otomatis ketika diaktifkan dan perintah mengeluarkan output atau gagal.
Gunakan
processuntuk log, status, input, atau intervensi; jangan meniru penjadwalan dengan loop sleep, loop timeout, atau polling berulang. - Untuk pekerjaan yang harus terjadi nanti atau sesuai jadwal, gunakan Cron alih-alih
pola sleep/delay
exec.
Konfigurasi
tools.exec.notifyOnExit(default: true): ketika true, sesi exec yang dijadikan background memasukkan peristiwa sistem ke antrean dan meminta Heartbeat saat keluar.tools.exec.approvalRunningNoticeMs(default: 10000): keluarkan satu pemberitahuan “running” ketika exec yang dibatasi persetujuan berjalan lebih lama dari ini (0 menonaktifkan).tools.exec.timeoutSec(default: 1800): batas waktu exec default per perintah dalam detik.timeoutper panggilan mengesampingkannya;timeout: 0per panggilan menonaktifkan batas waktu proses exec.tools.exec.host(default:auto; diresolusikan kesandboxketika runtime sandbox aktif,gatewayjika tidak)tools.exec.security(default:denyuntuk sandbox,fulluntuk Gateway + node ketika tidak disetel)tools.exec.ask(default:off)- Exec host tanpa persetujuan adalah default untuk Gateway + node. Jika Anda menginginkan perilaku persetujuan/allowlist, perketat baik
tools.exec.*maupun host~/.openclaw/exec-approvals.json; lihat Persetujuan exec. - YOLO berasal dari default kebijakan host (
security=full,ask=off), bukan darihost=auto. Jika Anda ingin memaksa perutean Gateway atau node, aturtools.exec.hostatau gunakan/exec host=.... - Dalam mode
security=fullplusask=off, exec host mengikuti kebijakan yang dikonfigurasi secara langsung; tidak ada lapisan tambahan prefilter heuristik pengaburan perintah atau penolakan preflight skrip. tools.exec.node(default: tidak disetel)tools.exec.strictInlineEval(default: false): ketika true, bentuk eval interpreter inline sepertipython -c,node -e,ruby -e,perl -e,php -r,lua -e, danosascript -eselalu memerlukan persetujuan eksplisit.allow-alwaystetap dapat mempertahankan invocation interpreter/skrip yang tidak berbahaya, tetapi bentuk eval inline tetap meminta prompt setiap kali.tools.exec.commandHighlighting(default: false): ketika true, prompt persetujuan dapat menyorot rentang perintah turunan parser dalam teks perintah. Atur ketruesecara global atau per agen untuk mengaktifkan penyorotan teks perintah tanpa mengubah kebijakan persetujuan exec.tools.exec.pathPrepend: daftar direktori untuk ditambahkan di awalPATHuntuk eksekusi exec (hanya Gateway + sandbox).tools.exec.safeBins: biner aman khusus stdin yang dapat berjalan tanpa entri allowlist eksplisit. Untuk detail perilaku, lihat Biner aman.tools.exec.safeBinTrustedDirs: direktori eksplisit tambahan yang dipercaya untuk pemeriksaan pathsafeBins. EntriPATHtidak pernah otomatis dipercaya. Default bawaan adalah/bindan/usr/bin.tools.exec.safeBinProfiles: kebijakan argv kustom opsional per biner aman (minPositional,maxPositional,allowedValueFlags,deniedFlags).
Penanganan PATH
host=gateway: menggabungkanPATHshell login Anda ke lingkungan exec. Pengesampinganenv.PATHditolak untuk eksekusi host. Daemon itu sendiri tetap berjalan denganPATHminimal:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: menjalankansh -lc(shell login) di dalam kontainer, sehingga/etc/profiledapat meresetPATH. OpenClaw menambahkanenv.PATHdi awal setelah sourcing profil melalui var env internal (tanpa interpolasi shell);tools.exec.pathPrependjuga berlaku di sini.host=node: hanya pengesampingan env yang tidak diblokir yang Anda teruskan yang dikirim ke node. Pengesampinganenv.PATHditolak untuk eksekusi host dan diabaikan oleh host node. Jika Anda memerlukan entri PATH tambahan pada node, konfigurasikan lingkungan layanan host node (systemd/launchd) atau instal alat di lokasi standar.
Pengesampingan sesi (/exec)
Gunakan /exec untuk menetapkan default per sesi untuk host, security, ask, dan node.
Kirim /exec tanpa argumen untuk menampilkan nilai saat ini.
Contoh:
Model otorisasi
/exec hanya dihormati untuk pengirim terotorisasi (allowlist/pairing channel plus commands.useAccessGroups).
Ini hanya memperbarui status sesi dan tidak menulis konfigurasi. Untuk menonaktifkan exec secara keras, tolak melalui kebijakan alat
(tools.deny: ["exec"] atau per agen). Persetujuan host tetap berlaku kecuali Anda secara eksplisit menetapkan
security=full dan ask=off.
Persetujuan exec (aplikasi pendamping / host node)
Agen yang di-sandbox dapat memerlukan persetujuan per permintaan sebelumexec berjalan pada Gateway atau host node.
Lihat Persetujuan exec untuk kebijakan, allowlist, dan alur UI.
Ketika persetujuan diperlukan, alat exec segera mengembalikan
status: "approval-pending" dan id persetujuan. Setelah disetujui (atau ditolak / waktu habis),
Gateway mengeluarkan peristiwa sistem (Exec finished / Exec denied). Jika perintah masih
berjalan setelah tools.exec.approvalRunningNoticeMs, satu pemberitahuan Exec running dikeluarkan.
Pada channel dengan kartu/tombol persetujuan native, agen harus mengandalkan
UI native tersebut terlebih dahulu dan hanya menyertakan perintah /approve manual ketika hasil
alat secara eksplisit mengatakan persetujuan chat tidak tersedia atau persetujuan manual adalah
satu-satunya jalur.
Allowlist + biner aman
Penegakan allowlist manual mencocokkan glob path biner yang diresolusikan dan glob nama perintah polos. Nama polos hanya cocok dengan perintah yang dipanggil melalui PATH, sehinggarg dapat cocok dengan
/opt/homebrew/bin/rg ketika perintahnya adalah rg, tetapi tidak dengan ./rg atau /tmp/rg.
Ketika security=allowlist, perintah shell otomatis diizinkan hanya jika setiap segmen pipeline
ada di allowlist atau merupakan biner aman. Chaining (;, &&, ||) dan redirection
ditolak dalam mode allowlist kecuali setiap segmen tingkat atas memenuhi
allowlist (termasuk biner aman). Redirection tetap tidak didukung.
Kepercayaan tahan lama allow-always tidak melewati aturan itu: perintah berantai tetap memerlukan setiap
segmen tingkat atas untuk cocok.
autoAllowSkills adalah jalur kemudahan terpisah dalam persetujuan exec. Ini tidak sama dengan
entri allowlist path manual. Untuk kepercayaan eksplisit yang ketat, biarkan autoAllowSkills dinonaktifkan.
Gunakan dua kontrol untuk pekerjaan yang berbeda:
tools.exec.safeBins: filter stream kecil yang hanya menggunakan stdin.tools.exec.safeBinTrustedDirs: direktori tepercaya tambahan yang eksplisit untuk jalur executable safe-bin.tools.exec.safeBinProfiles: kebijakan argv eksplisit untuk safe bin kustom.- allowlist: kepercayaan eksplisit untuk jalur executable.
safeBins sebagai allowlist generik, dan jangan tambahkan biner interpreter/runtime (misalnya python3, node, ruby, bash). Jika Anda membutuhkannya, gunakan entri allowlist eksplisit dan tetap aktifkan prompt persetujuan.
openclaw security audit memperingatkan ketika entri safeBins interpreter/runtime tidak memiliki profil eksplisit, dan openclaw doctor --fix dapat membuat kerangka entri safeBinProfiles kustom yang hilang.
openclaw security audit dan openclaw doctor juga memperingatkan ketika Anda secara eksplisit menambahkan kembali bin berperilaku luas seperti jq ke dalam safeBins.
Jika Anda secara eksplisit memasukkan interpreter ke allowlist, aktifkan tools.exec.strictInlineEval agar bentuk evaluasi kode inline tetap memerlukan persetujuan baru.
Untuk detail kebijakan lengkap dan contoh, lihat Persetujuan exec dan Safe bins versus allowlist.
Contoh
Foreground:apply_patch
apply_patch adalah subtool dari exec untuk pengeditan multi-file terstruktur.
Ini diaktifkan secara default untuk model OpenAI dan OpenAI Codex. Gunakan konfigurasi hanya
ketika Anda ingin menonaktifkannya atau membatasinya ke model tertentu:
- Hanya tersedia untuk model OpenAI/OpenAI Codex.
- Kebijakan tool tetap berlaku;
allow: ["write"]secara implisit mengizinkanapply_patch. deny: ["write"]tidak menolakapply_patch; tolakapply_patchsecara eksplisit atau gunakandeny: ["group:fs"]ketika penulisan patch juga harus diblokir.- Konfigurasi berada di bawah
tools.exec.applyPatch. tools.exec.applyPatch.enableddefaultnyatrue; atur kefalseuntuk menonaktifkan tool bagi model OpenAI.tools.exec.applyPatch.workspaceOnlydefaultnyatrue(terbatas dalam workspace). Atur kefalsehanya jika Anda sengaja inginapply_patchmenulis/menghapus di luar direktori workspace.
Terkait
- Persetujuan Exec — gerbang persetujuan untuk perintah shell
- Sandboxing — menjalankan perintah di lingkungan sandbox
- Proses Background — exec yang berjalan lama dan tool proses
- Keamanan — kebijakan tool dan akses yang ditingkatkan