Exec aracı
Çalışma alanında shell komutları çalıştırın.process aracılığıyla ön plan + arka plan yürütmeyi destekler.
process izinli değilse exec eşzamanlı çalışır ve yieldMs/background değerlerini yok sayar.
Arka plan oturumları agent başına kapsamlıdır; process yalnızca aynı agent’taki oturumları görür.
Parametreler
command(gerekli)workdir(varsayılan olarak cwd)env(anahtar/değer geçersiz kılmaları)yieldMs(varsayılan 10000): gecikmeden sonra otomatik arka planbackground(bool): hemen arka plana altimeout(saniye, varsayılan 1800): süresi dolunca öldürpty(bool): mevcutsa pseudo-terminal içinde çalıştır (yalnızca TTY CLI’ler, coding agent’lar, terminal UI’ları)host(auto | sandbox | gateway | node): nerede yürütüleceğisecurity(deny | allowlist | full):gateway/nodeiçin yaptırım moduask(off | on-miss | always):gateway/nodeiçin onay istemlerinode(string):host=nodeiçin node kimliği/adıelevated(bool): elevated mod iste (sandbox’tan yapılandırılmış host yoluna kaç);security=fullyalnızca elevatedfullolarak çözümlendiğinde zorlanır
hostvarsayılan olarakautokullanır: oturum için sandbox çalışma zamanı etkinse sandbox, aksi halde gateway.autojoker değil, varsayılan yönlendirme stratejisidir. Çağrı başınahost=node,autoiçinden izinlidir; çağrı başınahost=gatewayyalnızca sandbox çalışma zamanı etkin değilse izinlidir.- Ek yapılandırma olmadan
host=autoyine de “olduğu gibi çalışır”: sandbox yoksagatewayolarak çözülür; canlı sandbox varsa sandbox içinde kalır. elevated, yapılandırılmış host yoluna sandbox’tan kaçar: varsayılan olarakgateway, veyatools.exec.host=nodeolduğunda (ya da oturum varsayılanıhost=nodeise)node. Yalnızca elevated erişim mevcut oturum/sağlayıcı için etkinse kullanılabilir.gateway/nodeonayları~/.openclaw/exec-approvals.jsonile denetlenir.node, eşlenmiş bir node gerektirir (yardımcı uygulama veya headless node host).- Birden fazla node varsa birini seçmek için
exec.nodeveyatools.exec.nodeayarlayın. exec host=node, node’lar için tek shell yürütme yoludur; eskinodes.runsarmalayıcısı kaldırılmıştır.- Windows olmayan hostlarda exec, ayarlıysa
SHELLkullanır;SHELLfishise fish ile uyumsuz betikleri önlemek için öncePATHiçindenbash(veyash) tercih eder, sonra ikisi de yoksaSHELLdeğerine geri döner. - Windows hostlarda exec önce PowerShell 7 (
pwsh) keşfini tercih eder (Program Files, ProgramW6432, sonra PATH), ardından Windows PowerShell 5.1’e geri döner. - Host yürütmesi (
gateway/node), ikili ele geçirme veya eklenmiş kodu önlemek içinenv.PATHve loader geçersiz kılmalarını (LD_*/DYLD_*) reddeder. - OpenClaw, shell/profile kurallarının exec-tool bağlamını algılayabilmesi için başlatılan komut ortamında
OPENCLAW_SHELL=execayarlar (PTY ve sandbox yürütmesi dahil). - Önemli: sandboxing varsayılan olarak kapalıdır. Sandbox kapalıysa örtük
host=autogatewayolarak çözülür. Açıkhost=sandboxise sessizce gateway hostunda çalışmak yerine yine fail-closed olur. Sandboxing’i etkinleştirin veya onaylarlahost=gatewaykullanın. - Betik ön kontrol denetimleri (yaygın Python/Node shell sözdizimi hataları için) yalnızca
etkin
workdirsınırı içindeki dosyaları inceler. Bir betik yoluworkdirdışına çözülürse o dosya için ön kontrol atlanır. - Şimdi başlayan uzun süreli işler için bir kez başlatın ve otomatik
tamamlama uyandırmasına güvenin; etkinse ve komut çıktı üretirse veya başarısız olursa bu çalışır.
Günlükler, durum, girdi veya müdahale için
processkullanın; zamanlama taklidini sleep döngüleri, timeout döngüleri veya yinelenen yoklama ile yapmayın. - Daha sonra veya bir zamanlamaya göre gerçekleşmesi gereken işler için
execsleep/delay örüntüleri yerine Cron kullanın.
Yapılandırma
tools.exec.notifyOnExit(varsayılan: true): true olduğunda arka plana alınmış exec oturumları çıkışta bir sistem olayı kuyruğa alır ve Heartbeat ister.tools.exec.approvalRunningNoticeMs(varsayılan: 10000): onay geçitli bir exec bundan daha uzun sürerse tek bir “running” bildirimi yayar (0 devre dışı bırakır).tools.exec.host(varsayılan:auto; sandbox çalışma zamanı etkinsesandbox, aksi haldegatewayolarak çözülür)tools.exec.security(varsayılan: sandbox içindeny, ayarlanmamışsa gateway + node içinfull)tools.exec.ask(varsayılan:off)- Onaysız host exec, gateway + node için varsayılandır. Onaylar/allowlist davranışı istiyorsanız hem
tools.exec.*ayarlarını hem de host~/.openclaw/exec-approvals.jsondosyasını sıkılaştırın; bkz. Exec approvals. - YOLO,
host=autodeğerinden değil, host-ilkesi varsayılanlarından (security=full,ask=off) gelir. Gateway veya node yönlendirmesini zorlamak istiyorsanıztools.exec.hostayarlayın veya/exec host=...kullanın. security=fullartıask=offmodunda host exec doğrudan yapılandırılmış ilkeyi izler; ek sezgisel komut-karartma ön filtresi veya betik-ön-kontrol ret katmanı yoktur.tools.exec.node(varsayılan: ayarlanmamış)tools.exec.strictInlineEval(varsayılan: false): true olduğundapython -c,node -e,ruby -e,perl -e,php -r,lua -eveosascript -egibi satır içi yorumlayıcı eval biçimleri her zaman açık onay gerektirir.allow-alwaysiyi huylu yorumlayıcı/betik çağrılarını yine kalıcı kılabilir, ancak satır içi eval biçimleri yine her seferinde istem gösterir.tools.exec.pathPrepend: exec çalıştırmaları içinPATHbaşına eklenecek dizin listesi (yalnızca gateway + sandbox).tools.exec.safeBins: açık allowlist girdileri olmadan çalışabilen yalnızca stdin güvenli ikilileri. Davranış ayrıntıları için bkz. Safe bins.tools.exec.safeBinTrustedDirs:safeBinsyol denetimleri için ayrıca açıkça güvenilen dizinler.PATHgirdilerine asla otomatik güvenilmez. Yerleşik varsayılanlar/binve/usr/binolur.tools.exec.safeBinProfiles: özel safe bin başına isteğe bağlı özel argv ilkesi (minPositional,maxPositional,allowedValueFlags,deniedFlags).
PATH işleme
host=gateway: login-shellPATHdeğeriniz exec ortamına birleştirilir.env.PATHgeçersiz kılmaları host yürütmesi için reddedilir. Daemon’ın kendisi yine minimal birPATHile çalışır:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: kapsayıcı içindesh -lc(login shell) çalıştırır, bu yüzden/etc/profilePATHsıfırlayabilir. OpenClaw, profil kaynağı sonrasıenv.PATHdeğerini dahili bir env değişkeniyle başa ekler (shell interpolation yok);tools.exec.pathPrependburada da uygulanır.host=node: geçirdiğiniz ve engellenmemiş env geçersiz kılmaları node’a gönderilir.env.PATHgeçersiz kılmaları host yürütmesi için reddedilir ve node hostlar tarafından yok sayılır. Bir node üzerinde ek PATH girdilerine ihtiyacınız varsa, node host hizmet ortamını yapılandırın (systemd/launchd) veya araçları standart konumlara kurun.
Oturum geçersiz kılmaları (/exec)
host, security, ask ve node için oturum başına varsayılanları ayarlamak üzere /exec kullanın.
Geçerli değerleri göstermek için bağımsız değişken olmadan /exec gönderin.
Örnek:
Yetkilendirme modeli
/exec yalnızca yetkili göndericiler için uygulanır (kanal allowlist’leri/eşleme artı commands.useAccessGroups).
Yalnızca oturum durumunu günceller ve yapılandırma yazmaz. Exec’i kesin olarak devre dışı bırakmak için araç
ilkesiyle reddedin (tools.deny: ["exec"] veya agent başına). Açıkça
security=full ve ask=off ayarlamadığınız sürece host onayları yine geçerlidir.
Exec approvals (yardımcı uygulama / node host)
Sandbox içindeki agent’lar, exec gateway veya node host üzerinde çalışmadan önce istek başına onay gerektirebilir. İlke, allowlist ve UI akışı için bkz. Exec approvals. Onay gerektiğinde exec aracı hemenstatus: "approval-pending" ve bir onay kimliğiyle döner. Onaylandıktan sonra (veya reddedildiğinde / zaman aşımına uğradığında),
Gateway sistem olayları yayar (Exec finished / Exec denied). Komut hâlâ
tools.exec.approvalRunningNoticeMs sonrasında çalışıyorsa tek bir Exec running bildirimi yayılır.
Yerel onay kartları/düğmeleri olan kanallarda agent önce bu
yerel UI’a güvenmeli ve yalnızca araç
sonucu sohbet onaylarının kullanılamadığını veya tek yolun manuel yol olduğunu açıkça söylediğinde elle /approve komutu eklemelidir.
Allowlist + safe bins
Elle allowlist yaptırımı yalnızca çözülmüş ikili yollarıyla eşleşir (basename eşleşmesi yok).security=allowlist
olduğunda shell komutlarına yalnızca her pipeline segmenti
allowlist’te veya safe bin ise otomatik izin verilir. Zincirleme (;, &&, ||) ve yeniden yönlendirmeler,
allowlist modunda her üst düzey segment allowlist’i karşılamadıkça reddedilir
(safe bin’ler dahil). Yeniden yönlendirmeler yine desteklenmez.
Kalıcı allow-always güveni bu kuralı aşmaz: zincirlenmiş bir komut yine her
üst düzey segmentin eşleşmesini gerektirir.
autoAllowSkills, exec approvals içinde ayrı bir kolaylık yoludur. Bu,
elle yol allowlist girdileriyle aynı şey değildir. Sıkı açık güven için
autoAllowSkills devre dışı bırakılmış halde kalsın.
İki denetimi farklı işler için kullanın:
tools.exec.safeBins: küçük, yalnızca stdin akış filtreleri.tools.exec.safeBinTrustedDirs: safe bin yürütülebilir yolları için açık ek güvenilir dizinler.tools.exec.safeBinProfiles: özel safe bin’ler için açık argv ilkesi.- allowlist: yürütülebilir yollar için açık güven.
safeBins öğelerini genel bir allowlist gibi ele almayın ve yorumlayıcı/çalışma zamanı ikilileri eklemeyin (örneğin python3, node, ruby, bash). Bunlara ihtiyacınız varsa açık allowlist girdileri kullanın ve onay istemlerini etkin tutun.
openclaw security audit, yorumlayıcı/çalışma zamanı safeBins girdilerinde açık profil eksik olduğunda uyarır ve openclaw doctor --fix, eksik özel safeBinProfiles girdilerini iskeletleyebilir.
openclaw security audit ve openclaw doctor, jq gibi geniş davranışlı bin’leri açıkça yeniden safeBins içine eklediğinizde de uyarır.
Yorumlayıcıları açıkça allowlist’e alırsanız satır içi kod-eval biçimlerinin yine yeni onay gerektirmesi için tools.exec.strictInlineEval etkinleştirin.
Tam ilke ayrıntıları ve örnekler için bkz. Exec approvals ve Safe bins versus allowlist.
Örnekler
Ön plan:apply_patch
apply_patch, yapılandırılmış çok dosyalı düzenlemeler için exec aracının bir alt aracıdır.
OpenAI ve OpenAI Codex modelleri için varsayılan olarak etkindir. Yapılandırmayı yalnızca
devre dışı bırakmak veya belirli modellerle sınırlamak istediğinizde kullanın:
- Yalnızca OpenAI/OpenAI Codex modelleri için kullanılabilir.
- Araç ilkesi yine uygulanır;
allow: ["write"], örtük olarakapply_patchiçin de izin verir. - Yapılandırma
tools.exec.applyPatchaltında bulunur. tools.exec.applyPatch.enabledvarsayılan olaraktruedeğerindedir; OpenAI modelleri için aracı devre dışı bırakmak üzere bunufalseyapın.tools.exec.applyPatch.workspaceOnlyvarsayılan olaraktruedeğerindedir (çalışma alanı içinde sınırlı).apply_patcharacının çalışma alanı dizini dışında yazma/silme yapmasını özellikle istiyorsanız bunu yalnızca o zamanfalseyapın.
İlgili
- Exec Approvals — shell komutları için onay geçitleri
- Sandboxing — komutları sandbox ortamlarında çalıştırma
- Background Process — uzun süre çalışan exec ve process aracı
- Security — araç ilkesi ve elevated erişim