Exec aracı
Çalışma alanında kabuk komutlarını çalıştırır.process aracılığıyla ön plan + arka plan yürütmeyi destekler.
process izinli değilse, exec eşzamanlı çalışır ve yieldMs/background yok sayılır.
Arka plan oturumları ajan bazında kapsamlandırılır; process yalnızca aynı ajana ait oturumları görür.
Parametreler
command(gerekli)workdir(varsayılan: cwd)env(anahtar/değer geçersiz kılmaları)yieldMs(varsayılan 10000): gecikmeden sonra otomatik arka planbackground(bool): hemen arka plantimeout(saniye, varsayılan 1800): süre dolunca sonlandırpty(bool): mümkün olduğunda bir sahte terminalde çalıştır (yalnızca TTY CLI’da çalışan araçlar, kodlama ajanları, terminal UI’leri)host(sandbox | gateway | node): nerede yürütüleceğisecurity(deny | allowlist | full):gateway/nodeiçin zorunlu kılma moduask(off | on-miss | always):gateway/nodeiçin onay istemlerinode(string):host=nodeiçin düğüm kimliği/adıelevated(bool): yükseltilmiş mod iste (gateway ana makinesi);security=fullyalnızca yükseltilmiş durumfullolarak çözümlendiğinde zorlanır
hostvarsayılan olaraksandbox’dir.elevated, sandboxing kapalıyken yok sayılır (exec zaten ana makinede çalışır).gateway/nodeonayları~/.openclaw/exec-approvals.jsontarafından denetlenir.nodeeşleştirilmiş bir düğüm gerektirir (yardımcı uygulama veya başsız düğüm ana makinesi).- Birden fazla düğüm varsa, birini seçmek için
exec.nodeveyatools.exec.nodeayarlayın. - Windows olmayan ana makinelerde, ayarlıysa exec
SHELLkullanır;SHELLfishise, balık kabuğuyla uyumsuz betiklerden kaçınmak içinPATHiçindenbash(veyash) tercih edilir, her ikisi de yoksaSHELL’ye geri düşer. - Ana makinede yürütme (
gateway/node), ikili ele geçirilmesini veya enjekte edilmiş kodu önlemek içinenv.PATHve yükleyici geçersiz kılmalarını (LD_*/DYLD_*) reddeder. - Önemli: sandboxing varsayılan olarak kapalıdır. Sandboxing kapalıysa,
host=sandboxdoğrudan gateway ana makinesinde (konteyner yok) çalışır ve onay gerektirmez. Onay gerektirmek içinhost=gatewayile çalıştırın ve exec onaylarını yapılandırın (veya sandboxing’i etkinleştirin).
Yapılandırma
tools.exec.notifyOnExit(varsayılan: true): true olduğunda, arka plana alınmış exec oturumları bir sistem olayı kuyruğa alır ve çıkışta bir heartbeat ister.tools.exec.approvalRunningNoticeMs(varsayılan: 10000): onay gerektiren bir exec bu süreden uzun sürerse tek bir “çalışıyor” bildirimi yayar (0 devre dışı bırakır).tools.exec.host(varsayılan:sandbox)tools.exec.security(varsayılan: sandbox içindeny, ayarlanmadığında gateway + düğüm içinallowlist)tools.exec.ask(varsayılan:on-miss)tools.exec.node(varsayılan: ayarlanmamış)tools.exec.pathPrepend: exec çalıştırmaları içinPATH’in başına eklenecek dizinlerin listesi.tools.exec.safeBins: açık izin listesi girdileri olmadan çalışabilen, yalnızca stdin kullanan güvenli ikililer.
PATH işleme
host=gateway: giriş kabuğunuzunPATH’ini exec ortamına birleştirir. Ana makinede yürütme içinenv.PATHgeçersiz kılmaları reddedilir. Daemon’un kendisi yine de asgari birPATHile çalışır:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: konteyner içindesh -lc(giriş kabuğu) çalıştırır; bu nedenle/etc/profile,PATH’yi sıfırlayabilir. OpenClaw, profil kaynaklamasından sonra dahili bir ortam değişkeni aracılığıylaenv.PATH’i başa ekler (kabuk enterpolasyonu yok);tools.exec.pathPrependburada da geçerlidir.host=node: yalnızca ilettiğiniz engellenmemiş ortam geçersiz kılmaları düğüme gönderilir.env.PATHgeçersiz kılmaları host yürütmesi için reddedilir ve node host’ları tarafından yok sayılır. Bir node üzerinde ek PATH girdilerine ihtiyacınız varsa, node host hizmeti ortamını (systemd/launchd) yapılandırın veya araçları standart konumlara yükleyin.
25. Oturum geçersiz kılmaları (/exec)
/exec kullanarak host, security, ask ve node için oturum başına
varsayılanları ayarlayın.
Geçerli değerleri göstermek için bağımsız değişkensiz /exec gönderin.
Örnek:
Yetkilendirme modeli
/exec yalnızca yetkili gönderenler için geçerlidir (kanal izin listeleri/eşleştirme artı commands.useAccessGroups).
Yalnızca oturum durumunu günceller ve yapılandırmaya yazmaz. Exec’i kalıcı olarak devre dışı bırakmak için,
araç politikası üzerinden (tools.deny: ["exec"] veya ajan başına) reddedin. Ana makine onayları,
security=full ve ask=off’i açıkça ayarlamadığınız sürece geçerlidir.
Exec onayları (yardımcı uygulama / düğüm ana makinesi)
Sandbox’lı ajanlar,exec gateway veya düğüm ana makinesinde çalışmadan önce istek başına onay gerektirebilir.
Politika, izin listesi ve UI akışı için Exec approvals sayfasına bakın.
Onaylar gerektiğinde, exec aracı hemen
status: "approval-pending" ve bir onay kimliği ile döner. Onaylandıktan (veya reddedildikten / zaman aşımına uğradıktan) sonra
Gateway sistem olayları yayar (Exec finished / Exec denied). Komut tools.exec.approvalRunningNoticeMs sonrasında hâlâ çalışıyorsa,
tek bir Exec running bildirimi yayılır.
İzin listesi + güvenli ikililer
İzin listesi zorlaması yalnızca çözümlenmiş ikili yollarını eşleştirir (basename eşleşmesi yok).security=allowlist durumunda, kabuk komutları yalnızca her bir boru hattı parçası izin listesinde veya bir güvenli ikili ise
otomatik olarak izinli sayılır. Zincirleme (;, &&, ||) ve yönlendirmeler,
izin listesi modunda reddedilir.
Yönlendirmeler (redirection) desteklenmez.
Örnekler
Ön plan:- Yapıştır (varsayılan olarak köşeli parantez içinde):
apply_patch (deneysel)
apply_patch, yapılandırılmış çok dosyalı düzenlemeler için exec’nin bir alt aracıdır.
Açıkça etkinleştirin:
- Yalnızca OpenAI/OpenAI Codex modelleri için kullanılabilir.
- Araç politikası hâlâ geçerlidir;
allow: ["exec"],apply_patch’a örtük olarak izin verir. - Yapılandırma
tools.exec.applyPatchaltında bulunur. tools.exec.applyPatch.workspaceOnlyvarsayılan olaraktrue(workspace ile sınırlı) değerine ayarlıdır.apply_patchkomutunun workspace dizini dışına yazmasını/silmesini bilinçli olarak istiyorsanız yalnızca o zamanfalseolarak ayarlayın.