Exec aracı
Çalışma alanında kabuk 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ı aracı başına kapsamlıdır; process yalnızca aynı aracıdaki oturumları görür.
Parametreler
command(zorunlu)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üre dolunca sonlandırpty(bool): kullanılabiliyorsa pseudo-terminal içinde çalıştırır (yalnızca TTY CLI’ları, coding ajanları, terminal UI’leri)host(auto | sandbox | gateway | node): nerede çalıştırılacağısecurity(deny | allowlist | full):gateway/nodeiçin zorlama moduask(off | on-miss | always):gateway/nodeiçin onay istemlerinode(string):host=nodeiçin düğüm kimliği/adıelevated(bool): yükseltilmiş mod ister (sandbox’tan çıkıp yapılandırılmış ana makine yoluna geçer); yalnızcaelevated,fullolarak çözülürsesecurity=fullzorlanır
hostvarsayılan olarakautoolur: oturum için sandbox çalışma zamanı etkinken sandbox, aksi halde gateway.autovarsayılan yönlendirme stratejisidir, joker değildir. Çağrı başınahost=node,autoiçinden izinlidir; çağrı başınahost=gatewayise yalnızca etkin bir sandbox çalışma zamanı yoksa izinlidir.- Ek yapılandırma olmadan
host=autoyine de “öylece çalışır”: sandbox yoksagatewayolarak çözülür; canlı bir sandbox varsa sandbox içinde kalır. elevated, sandbox’tan çıkıp yapılandırılmış ana makine yoluna geçer: varsayılan olarakgateway, veyatools.exec.host=nodeolduğunda (ya da oturum varsayılanıhost=nodeise)node. Yalnızca geçerli oturum/sağlayıcı için yükseltilmiş erişim etkinse kullanılabilir.gateway/nodeonayları~/.openclaw/exec-approvals.jsontarafından denetlenir.node, eşlenmiş bir node gerektirir (eşlikçi uygulama veya başsız node ana makinesi).- Birden fazla node kullanılabiliyorsa 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.- Windows dışı ana makinelerde exec, ayarlıysa
SHELLkullanır;SHELLdeğerifishise fish ile uyumsuz betikleri önlemek içinPATHiçindenbash(veyash) tercih edilir, ikisi de yoksaSHELLdeğerine geri dönülür. - Windows ana makinelerde exec, önce PowerShell 7 (
pwsh) keşfini tercih eder (Program Files, ProgramW6432, sonra PATH), sonra Windows PowerShell 5.1’e geri döner. - Ana makine yürütmesi (
gateway/node), ikili ele geçirme 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-tool bağlamını algılayabilmesi için ortaya çıkan komut ortamına
OPENCLAW_SHELL=execayarlar (PTY ve sandbox yürütmesi dahil). - Önemli: sandbox varsayılan olarak kapalıdır. Sandbox kapalıysa örtük
host=autogatewayolarak çözülür. Açıkhost=sandboxise sessizce gateway ana makinesinde çalışmak yerine kapalı hatayla başarısız olur. Sandbox’ı 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ülürse ilgili 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 komut çıktı ürettiğinde veya başarısız olduğunda otomatik
tamamlama uyandırmasına güvenin.
Günlükler, durum, girdi veya müdahale için
processkullanın; uyku döngüleri, zaman aşımı döngüleri veya tekrarlı yoklama ile zamanlama taklit etmeyin. - Daha sonra veya zamanlanmış olarak gerçekleşmesi gereken işler için
execuyku/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 bu süreden uzun çalışırsa tek bir “running” bildirimi yayınlar (0 devre dışı bırakır).tools.exec.host(varsayılan:auto; sandbox çalışma zamanı etkinkensandbox, aksi haldegatewayolarak çözülür)tools.exec.security(varsayılan: sandbox içindeny, ayarlı değilse gateway + node içinfull)tools.exec.ask(varsayılan:off)- Onaysız ana makine exec, gateway + node için varsayılandır. Onaylar/allowlist davranışı istiyorsanız hem
tools.exec.*hem de ana makine~/.openclaw/exec-approvals.jsondeğerlerini sıkılaştırın; bkz. Exec onayları. - YOLO,
host=autodeğerinden değil, ana makine ilke varsayılanlarından (security=full,ask=off) gelir. Gateway veya node yönlendirmesini zorlamak istiyorsanıztools.exec.hostayarlayın veya/exec host=...kullanın. tools.exec.node(varsayılan: ayarlı değil)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ı değerlendirme biçimleri her zaman açık onay gerektirir.allow-alwayszararsız yorumlayıcı/betik çağrılarını yine de kalıcılaştırabilir, ancak satır içi değerlendirme biçimleri 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 kullanan güvenli ikililer. Davranış ayrıntıları için bkz. Safe bins.tools.exec.safeBinTrustedDirs:safeBinsyol denetimleri için güvenilen ek açık dizinler.PATHgirdilerine asla otomatik güvenilmez. Yerleşik varsayılanlar/binve/usr/binolur.tools.exec.safeBinProfiles: özel safe bin’ler için isteğe bağlı özel argv ilkesi (minPositional,maxPositional,allowedValueFlags,deniedFlags).
PATH işleme
host=gateway: oturum açma kabuğunuzunPATHdeğerini exec ortamıyla birleştirir.env.PATHgeçersiz kılmaları ana makine yürütmesinde reddedilir. Daemon’ın kendisi yine de 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(oturum açma kabuğu) çalıştırır, bu nedenle/etc/profilePATHdeğerini sıfırlayabilir. OpenClaw, dahili bir ortam değişkeni aracılığıyla (kabuk enterpolasyonu olmadan) profil kaynaklamasından sonraenv.PATHdeğerini başa ekler;tools.exec.pathPrependburada da uygulanır.host=node: geçirdiğiniz engellenmemiş env geçersiz kılmaları node’a gönderilir.env.PATHgeçersiz kılmaları ana makine yürütmesinde reddedilir ve node ana makineleri tarafından yok sayılır. Bir node’da ek PATH girdilerine ihtiyacınız varsa, node ana makinesi hizmet ortamını (systemd/launchd) yapılandırın veya araçları standart konumlara yükleyin.
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 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 kesin olarak devre dışı bırakmak için araç
ilkesi üzerinden reddedin (tools.deny: ["exec"] veya aracı başına). Açıkça
security=full ve ask=off ayarlamadığınız sürece ana makine onayları yine de uygulanır.
Exec onayları (eşlikçi uygulama / node ana makinesi)
Sandbox içindeki ajanlar, exec komutu gateway veya node ana makinesinde çalışmadan önce istek başına onay gerektirebilir. İlke, allowlist ve UI akışı için bkz. Exec onayları. Onay gerektiğinde exec aracıstatus: "approval-pending" ve bir onay kimliği ile hemen 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ınlanır.
Yerel onay kartları/düğmeleri olan kanallarda ajan önce bu
yerel UI’ye güvenmeli ve yalnızca araç
sonucu sohbet onaylarının kullanılamadığını veya tek yolun el ile onay olduğunu açıkça söylediğinde manuel /approve komutu eklemelidir.
Allowlist + safe bins
El ile allowlist zorlaması yalnızca çözülmüş ikili yollarını eşleştirir (basename eşleşmesi yoktur).security=allowlist
olduğunda kabuk komutları yalnızca her boru hattı parçası
allowlist’teyse veya bir safe bin ise otomatik izin alır. Zincirleme (;, &&, ||) ve yönlendirmeler,
allowlist modunda her üst düzey parça allowlist’i karşılamadıkça reddedilir (safe bin’ler dahil).
Yönlendirmeler desteklenmez.
Kalıcı allow-always güveni bu kuralı aşmaz: zincirlenmiş bir komut için yine her
üst düzey parçanın eşleşmesi gerekir.
autoAllowSkills, exec onaylarında ayrı bir kolaylık yoludur. El ile
yol allowlist girdileriyle aynı şey değildir. Sıkı açık güven için autoAllowSkills özelliğini kapalı tutun.
İki denetimi farklı işler için kullanın:
tools.exec.safeBins: küçük, yalnızca stdin akış filtreleri.tools.exec.safeBinTrustedDirs: safe-bin çalıştırılabilir yolları için açık ek güvenilen dizinler.tools.exec.safeBinProfiles: özel safe bin’ler için açık argv ilkesi.- allowlist: çalıştırılabilir yollara açık güven.
safeBins değerini genel amaçlı bir allowlist olarak değerlendirmeyin 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 açık tutun.
openclaw security audit, yorumlayıcı/çalışma zamanı safeBins girdilerinde açık profil eksikse uyarır ve openclaw doctor --fix, eksik özel safeBinProfiles girdilerini iskeletleyebilir.
openclaw security audit ve openclaw doctor, jq gibi geniş davranışlı ikilileri açıkça safeBins içine geri eklediğinizde de uyarır.
Yorumlayıcıları açıkça allowlist’e alırsanız, satır içi kod değerlendirme biçimlerinin yine yeni bir onay istemesini sağlamak için tools.exec.strictInlineEval etkinleştirin.
Tam ilke ayrıntıları ve örnekler için bkz. Exec onayları ve Safe bins versus allowlist.
Örnekler
Ön plan:apply_patch
apply_patch, exec aracının yapılandırılmış çok dosyalı düzenlemeler için bir alt aracıdır.
OpenAI ve OpenAI Codex modellerinde 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"],apply_patchiçin örtük izin verir. - Yapılandırma
tools.exec.applyPatchaltında bulunur. tools.exec.applyPatch.enabledvarsayılan olaraktrueolur; OpenAI modelleri için aracı devre dışı bırakmak üzere bunufalseyapın.tools.exec.applyPatch.workspaceOnlyvarsayılan olaraktrueolur (çalışma alanı içinde sınırlı).apply_patcharacının çalışma alanı dizini dışına yazmasını/silmesini özellikle istiyorsanız bunu ancak o zamanfalseyapın.
İlgili
- Exec Onayları — kabuk komutları için onay kapıları
- Sandboxing — komutları sandbox ortamlarında çalıştırma
- Background Process — uzun süreli exec ve process aracı
- Security — araç ilkesi ve yükseltilmiş erişim