Tools
Exec aracı
Çalışma alanında kabuk komutları çalıştırın. process aracılığıyla ön plan + arka plan yürütmesini destekler.
process izinli değilse, exec eşzamanlı çalışır ve yieldMs/background değerlerini yok sayar.
Arka plan oturumları ajan başına kapsamlandırılır; process yalnızca aynı ajandan gelen oturumları görür.
Parametreler
commandstringrequiredÇalıştırılacak kabuk komutu.
workdirstringKomutun çalışma dizini.
envobjectDevralınan ortamın üzerine birleştirilen anahtar/değer ortam geçersiz kılmaları.
yieldMsnumberBu gecikmeden sonra komutu otomatik olarak arka plana alın (ms).
backgroundbooleanyieldMs beklemek yerine komutu hemen arka plana alın.
timeoutnumberBu çağrı için yapılandırılmış exec zaman aşımını geçersiz kılın. timeout: 0 değerini yalnızca komut exec süreci zaman aşımı olmadan çalışması gerektiğinde ayarlayın.
ptybooleanMevcut olduğunda sözde terminalde çalıştırın. Yalnızca TTY ile çalışan CLI'lar, kodlama ajanları ve terminal UI'ları için kullanın.
host'auto' | 'sandbox' | 'gateway' | 'node'Nerede yürütüleceği. auto, bir sandbox çalışma zamanı etkin olduğunda sandbox değerine, aksi halde gateway değerine çözümlenir.
security'deny' | 'allowlist' | 'full'gateway / node yürütmesi için uygulama modu.
ask'off' | 'on-miss' | 'always'gateway / node yürütmesi için onay istemi davranışı.
nodestringhost=node olduğunda Node kimliği/adı.
elevatedbooleanYükseltilmiş mod isteyin — sandbox'tan yapılandırılmış host yoluna çıkın. security=full yalnızca yükseltme full değerine çözümlendiğinde zorlanır.
Notlar:
hostvarsayılan olarakautodeğerini kullanır: oturum için sandbox çalışma zamanı etkin olduğunda sandbox, aksi halde gateway.hostyalnızcaauto,sandbox,gatewayveyanodedeğerlerini kabul eder. Bu bir hostname seçici değildir; hostname benzeri değerler komut çalışmadan önce reddedilir.autovarsayılan yönlendirme stratejisidir, joker karakter değildir.autoüzerinden çağrı başınahost=nodekullanılabilir; çağrı başınahost=gatewayyalnızca etkin bir sandbox çalışma zamanı yokken kullanılabilir.- Ek yapılandırma olmadan,
host=autoyine de "öylece çalışır": sandbox yoksagatewaydeğerine çözümlenir; canlı sandbox varsa sandbox'ta kalır. elevated, sandbox'tan yapılandırılmış host yoluna çıkar: varsayılan olarakgatewayveyatools.exec.host=nodeolduğunda (ya da oturum varsayılanıhost=nodeolduğunda)node. Yalnızca geçerli oturum/provider için yükseltilmiş erişim etkinleştirildiğinde kullanılabilir.gateway/nodeonayları~/.openclaw/exec-approvals.jsontarafından kontrol edilir.node, eşleştirilmiş bir node gerektirir (yardımcı uygulama veya başsız node host).- Birden fazla node mevcutsa, birini seçmek için
exec.nodeveyatools.exec.nodeayarlayın. exec host=node, node'lar için tek kabuk yürütme yoludur; eskinodes.runsarmalayıcısı kaldırılmıştır.timeout; ön plan, arka plan,yieldMs, gateway, sandbox ve nodesystem.runyürütmesine uygulanır. Atlanırsa OpenClawtools.exec.timeoutSeckullanır; açıktimeout: 0, bu çağrı için exec süreci zaman aşımını devre dışı bırakır.- Windows olmayan host'larda, exec ayarlandığında
SHELLkullanır;SHELLfishise fish ile uyumsuz betiklerden kaçınmak içinPATHüzerindenbash(veyash) tercih eder, ardından ikisi de yoksaSHELLdeğerine geri döner. - Windows host'larda, exec 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 dosya ele geçirmeyi veya enjekte edilmiş kodu önlemek içinenv.PATHve yükleyici geçersiz kılmalarını (LD_*/DYLD_*) reddeder. - OpenClaw, kabuk/profil kurallarının exec aracı bağlamını algılayabilmesi için oluşturulan komut ortamında (PTY ve sandbox yürütmesi dahil)
OPENCLAW_SHELL=execayarlar. openclaw channels login, etkileşimli bir kanal kimlik doğrulama akışı olduğu içinexeciçinden engellenir; bunu gateway host üzerindeki bir terminalde çalıştırın veya mevcut olduğunda sohbetten kanala özgü giriş aracını kullanın.- Önemli: sandbox kullanımı varsayılan olarak kapalıdır. Sandbox kapalıysa, örtük
host=autogatewaydeğerine çözümlenir. Açıkhost=sandbox, gateway host üzerinde sessizce çalışmak yerine yine kapalı şekilde başarısız olur. Sandbox kullanımını etkinleştirin veya onaylarlahost=gatewaykullanın. - Betik ön kontrol denetimleri (yaygın Python/Node kabuk sözdizimi hataları için) yalnızca etkin
workdirsınırı içindeki dosyaları inceler. Bir betik yoluworkdirdışına çözümlenirse, o dosya için ön kontrol atlanır. - Şimdi başlayan uzun süreli işler için işi bir kez başlatın ve etkinleştirildiğinde komut çıktı verdiğinde veya başarısız olduğunda otomatik
tamamlanma uyandırmasına güvenin.
Günlükler, durum, girdi veya müdahale için
processkullanın; sleep döngüleri, timeout döngüleri veya tekrarlanan yoklamalarla zamanlama taklit etmeyin. - Daha sonra veya bir zamanlamaya göre gerçekleşmesi gereken işler için
execsleep/gecikme kalıpları 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 kapılı bir exec bundan daha uzun çalıştığında tek bir "çalışıyor" bildirimi yayınlar (0 devre dışı bırakır).tools.exec.timeoutSec(varsayılan: 1800): saniye cinsinden varsayılan komut başına exec zaman aşımı. Çağrı başınatimeoutbunu geçersiz kılar; çağrı başınatimeout: 0exec süreci zaman aşımını devre dışı bırakır.tools.exec.host(varsayılan:auto; sandbox çalışma zamanı etkin olduğundasandbox, aksi haldegatewaydeğerine çözümlenir)tools.exec.security(varsayılan: sandbox içindeny, ayarlanmadığında gateway + node içinfull)tools.exec.ask(varsayılan:off)- Onaysız host exec, gateway + node için varsayılandır. Onay/allowlist davranışı istiyorsanız hem
tools.exec.*hem de host~/.openclaw/exec-approvals.jsondeğerlerini sıkılaştırın; bkz. Exec onayları. - 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 yapılandırılmış ilkeyi doğrudan izler; ek bir sezgisel komut gizleme ön filtresi veya betik ön kontrol reddetme katmanı yoktur.tools.exec.node(varsayılan: ayarlanmamış)tools.exec.strictInlineEval(varsayılan: false): true olduğunda,python -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-alwayszararsız yorumlayıcı/betik çağrılarını yine kalıcı hale getirebilir, ancak satır içi eval biçimleri her seferinde istem gösterir.tools.exec.pathPrepend: exec çalıştırmaları içinPATHbaşına eklenecek dizinler listesi (yalnızca gateway + sandbox).tools.exec.safeBins: açık allowlist girdileri olmadan çalışabilen, yalnızca stdin kullanan güvenli ikili dosyalar. Davranış ayrıntıları için bkz. Güvenli bin'ler.tools.exec.safeBinTrustedDirs:safeBinsyol denetimleri için güvenilen ek açık dizinler.PATHgirdileri asla otomatik olarak güvenilir kabul edilmez. Yerleşik varsayılanlar/binve/usr/bindeğerleridir.tools.exec.safeBinProfiles: güvenli bin başına isteğe bağlı özel argv ilkesi (minPositional,maxPositional,allowedValueFlags,deniedFlags).
Örnek:
{
tools: {
exec: {
pathPrepend: ["~/bin", "/opt/oss/bin"],
},
},
}
PATH işleme
host=gateway: login-shellPATHdeğerinizi exec ortamıyla birleştirir.env.PATHgeçersiz kılmaları host yürütmesi için reddedilir. Daemon'ın kendisi yine de en düşük düzeyde birPATHile çalışır:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: container içindesh -lc(login shell) çalıştırır, bu nedenle/etc/profilePATHdeğerini sıfırlayabilir. OpenClaw, profil kaynaklandıktan sonraenv.PATHdeğerini dahili bir env var aracılığıyla başa ekler (kabuk interpolasyonu yoktur);tools.exec.pathPrependburada da uygulanır.host=node: yalnızca ilettiğiniz engellenmemiş env geçersiz kılmaları node'a 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 hizmet ortamını (systemd/launchd) yapılandırın veya araçları standart konumlara kurun.
Ajan başına node bağlama (yapılandırmada ajan listesi dizinini kullanın):
openclaw config get agents.list
openclaw config set agents.list[0].tools.exec.node "node-id-or-name"
Control UI: Nodes sekmesi, aynı ayarlar için küçük bir "Exec node binding" paneli içerir.
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 argümansız /exec gönderin.
Örnek:
/exec host=auto security=allowlist ask=on-miss node=mac-1
Yetkilendirme modeli
/exec yalnızca yetkili gönderenler için dikkate alınır (kanal allowlist'leri/eşleştirme artı commands.useAccessGroups).
Yalnızca oturum durumunu günceller ve yapılandırma yazmaz. exec'i kalıcı olarak devre dışı bırakmak için araç
ilkesi üzerinden reddedin (tools.deny: ["exec"] veya ajan başına). Açıkça security=full ve ask=off ayarlamadığınız sürece host onayları yine uygulanır.
Exec onayları (yardımcı uygulama / node host)
Sandbox içindeki ajanlar, exec gateway veya node host üzerinde çalışmadan önce istek başına onay gerektirebilir.
İlke, allowlist ve UI akışı için bkz. Exec onayları.
Onaylar gerektiğinde, exec aracı hemen
status: "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ı yayınlar (Exec finished / Exec denied). Komut tools.exec.approvalRunningNoticeMs sonrasında hâlâ
çalışıyorsa tek bir Exec running bildirimi yayınlanır.
Yerel onay kartları/düğmeleri olan kanallarda, ajan önce bu yerel UI'a güvenmeli ve yalnızca araç
sonucu sohbet onaylarının kullanılamadığını veya manuel onayın tek yol olduğunu açıkça söylediğinde manuel bir /approve komutu eklemelidir.
Allowlist + güvenli bin'ler
Manuel allowlist uygulaması, çözümlenmiş ikili dosya yolu glob'ları ve yalın komut adı
glob'larıyla eşleşir. Yalın adlar yalnızca PATH üzerinden çağrılan komutlarla eşleşir, bu nedenle komut rg olduğunda rg
/opt/homebrew/bin/rg ile eşleşebilir, ancak ./rg veya /tmp/rg ile eşleşmez.
security=allowlist olduğunda, kabuk komutları yalnızca her pipeline
segmenti allowlist'te yer alıyorsa veya güvenli bin ise otomatik olarak izinli kabul edilir. Zincirleme (;, &&, ||) ve yeniden yönlendirmeler,
her üst düzey segment allowlist'i (güvenli bin'ler dahil) sağlamadığı sürece allowlist modunda reddedilir.
Yeniden yönlendirmeler desteklenmemeye devam eder.
Kalıcı allow-always güveni bu kuralı atlatmaz: zincirlenmiş bir komut yine her
üst düzey segmentin eşleşmesini gerektirir.
autoAllowSkills, exec onaylarında ayrı bir kolaylık yoludur. Manuel yol allowlist girdileriyle aynı değildir.
Katı açık güven için autoAllowSkills devre dışı bırakılmış kalsın.
İki denetimi farklı işler için kullanın:
tools.exec.safeBins: küçük, yalnızca stdin kullanan akış filtreleri.tools.exec.safeBinTrustedDirs: güvenli bin yürütülebilir yolları için açık ek güvenilen dizinler.tools.exec.safeBinProfiles: özel güvenli bin'ler için açık argv ilkesi.- allowlist: yürütülebilir yollar için açık güven.
safeBins öğesini genel bir izin listesi gibi ele almayın ve yorumlayıcı/çalışma zamanı ikili dosyaları (örneğin python3, node, ruby, bash) eklemeyin. Bunlara ihtiyacınız varsa, açık izin listesi girdileri kullanın ve onay istemlerini etkin tutun.
openclaw security audit, yorumlayıcı/çalışma zamanı safeBins girdilerinde açık profiller eksik olduğunda uyarır ve openclaw doctor --fix eksik özel safeBinProfiles girdilerini iskelet olarak oluşturabilir.
openclaw security audit ve openclaw doctor, jq gibi geniş davranışlı ikili dosyaları açıkça tekrar safeBins içine eklediğinizde de uyarır.
Yorumlayıcıları açıkça izin listesine alırsanız, satır içi kod değerlendirme biçimlerinin yine de yeni bir onay gerektirmesi için tools.exec.strictInlineEval öğesini etkinleştirin.
Tam ilke ayrıntıları ve örnekler için bkz. Exec onayları ve Güvenli ikili dosyalar ve izin listesi.
Örnekler
Ön plan:
{ "tool": "exec", "command": "ls -la" }
Arka plan + yoklama:
{"tool":"exec","command":"npm run build","yieldMs":1000}
{"tool":"process","action":"poll","sessionId":"<id>"}
Yoklama, bekleme döngüleri için değil, isteğe bağlı durum içindir. Otomatik tamamlanma uyandırması etkinse, komut çıktı ürettiğinde veya başarısız olduğunda oturumu uyandırabilir.
Tuş gönderme (tmux tarzı):
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["Enter"]}
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["C-c"]}
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["Up","Up","Enter"]}
Gönder (yalnızca CR gönder):
{ "tool": "process", "action": "submit", "sessionId": "<id>" }
Yapıştır (varsayılan olarak bracketed):
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }
apply_patch
apply_patch, yapılandırılmış çok dosyalı düzenlemeler için exec öğesinin bir alt aracıdır.
OpenAI ve OpenAI Codex modelleri için varsayılan olarak etkindir. Yapılandırmayı yalnızca
bunu devre dışı bırakmak veya belirli modellerle sınırlandırmak istediğinizde kullanın:
{
tools: {
exec: {
applyPatch: { workspaceOnly: true, allowModels: ["gpt-5.5"] },
},
},
}
Notlar:
- Yalnızca OpenAI/OpenAI Codex modelleri için kullanılabilir.
- Araç ilkesi yine de geçerlidir;
allow: ["write"]örtük olarakapply_patchöğesine izin verir. deny: ["write"],apply_patchöğesini reddetmez;apply_patchöğesini açıkça reddedin veya yama yazmalarının da engellenmesi gerekiyorsadeny: ["group:fs"]kullanın.- Yapılandırma
tools.exec.applyPatchaltında bulunur. tools.exec.applyPatch.enabledvarsayılan olaraktrueolur; OpenAI modelleri için aracı devre dışı bırakmak üzere bunufalseolarak ayarlayın.tools.exec.applyPatch.workspaceOnlyvarsayılan olaraktrueolur (çalışma alanı içinde). Bunu yalnızcaapply_patchöğesinin çalışma alanı dizini dışına yazmasını/silmesini kasıtlı olarak istiyorsanızfalseolarak ayarlayın.
İlgili
- Exec Onayları — kabuk komutları için onay kapıları
- Sandboxing — komutları korumalı ortamlarda çalıştırma
- Arka Plan Süreci — uzun süre çalışan exec ve process aracı
- Güvenlik — araç ilkesi ve yükseltilmiş erişim