Tools
Çalıştırma onayları
Exec onayları, sandbox içindeki bir ajanın gerçek bir host üzerinde (gateway veya node) komut çalıştırmasına izin vermek için kullanılan eşlikçi uygulama / node host güvenlik korkuluğudur. Bir güvenlik kilidi: komutlara yalnızca policy + allowlist + (isteğe bağlı) kullanıcı onayı birlikte izin verdiğinde izin verilir. Exec onayları, tool policy ve elevated gating’in üzerine eklenir (elevated, onayları atlayan full olarak ayarlanmadığı sürece).
Geçerli policy’yi inceleme
| Komut | Ne gösterir |
|---|---|
openclaw approvals get / --gateway / --node <id|name|ip> |
İstenen policy, host policy kaynakları ve geçerli sonucu. |
openclaw exec-policy show |
Yerel makine birleştirilmiş görünümü. |
openclaw exec-policy set / preset |
Yerel istenen policy’yi yerel host onayları dosyasıyla tek adımda eşitler. |
Yerel bir scope host=node istediğinde, exec-policy show bu scope’u yerel onay dosyasını doğruluğun kaynağı gibi göstermenin yerine runtime’da node tarafından yönetilen olarak raporlar.
Eşlikçi uygulama UI’ı kullanılamıyorsa, normalde prompt gösterecek herhangi bir istek ask fallback ile çözümlenir (varsayılan: deny).
Nerede uygulanır
Exec onayları, yürütme host’u üzerinde yerel olarak zorlanır:
- Gateway host’u → gateway makinesindeki
openclawişlemi. - Node host’u → node runner (macOS eşlikçi uygulaması veya headless node host).
Güven modeli
- Gateway kimliği doğrulanmış çağıranlar, o Gateway için güvenilir operatörlerdir.
- Eşleştirilmiş node’lar bu güvenilir operatör yeteneğini node host’a genişletir.
- Exec onayları kazara yürütme riskini azaltır, ancak kullanıcı başına bir auth sınırı değildir.
- Onaylanmış node-host çalıştırmaları kanonik yürütme bağlamını bağlar: kanonik cwd, tam argv, varsa env binding ve uygulanabildiğinde sabitlenmiş executable path.
- Shell script’leri ve doğrudan interpreter/runtime dosya çağrıları için OpenClaw ayrıca somut bir yerel dosya operand’ını bağlamaya çalışır. Bu bağlı dosya onaydan sonra ama yürütmeden önce değişirse, kaymış içerik yürütülmek yerine çalıştırma reddedilir.
- Dosya bağlama bilinçli olarak best-effort’tur, her interpreter/runtime loader path’inin eksiksiz bir semantik modeli değildir. Onay modu bağlamak için tam olarak bir somut yerel dosya belirleyemezse, tam kapsama varmış gibi davranmak yerine onay destekli çalıştırma üretmeyi reddeder.
macOS ayrımı
- node host service,
system.runçağrısını yerel IPC üzerinden macOS uygulamasına iletir. - macOS uygulaması onayları uygular ve komutu UI bağlamında yürütür.
Ayarlar ve depolama
Onaylar yürütme host’undaki yerel bir JSON dosyasında yaşar:
~/.openclaw/exec-approvals.json
Örnek şema:
{
"version": 1,
"socket": {
"path": "~/.openclaw/exec-approvals.sock",
"token": "base64url-token"
},
"defaults": {
"security": "deny",
"ask": "on-miss",
"askFallback": "deny",
"autoAllowSkills": false
},
"agents": {
"main": {
"security": "allowlist",
"ask": "on-miss",
"askFallback": "deny",
"autoAllowSkills": true,
"allowlist": [
{
"id": "B0C8C0B3-2C2D-4F8A-9A3C-5A4B3C2D1E0F",
"pattern": "~/Projects/**/bin/rg",
"source": "allow-always",
"commandText": "rg -n TODO",
"lastUsedAt": 1737150000000,
"lastUsedCommand": "rg -n TODO",
"lastResolvedPath": "/Users/user/Projects/.../bin/rg"
}
]
}
}
}
Policy düğmeleri
exec.security
security"deny" | "allowlist" | "full"deny- tüm host exec isteklerini engeller.allowlist- yalnızca allowlist’e alınmış komutlara izin verir.full- her şeye izin verir (elevated ile eşdeğer).
exec.ask
ask"off" | "on-miss" | "always"off- asla prompt gösterme.on-miss- yalnızca allowlist eşleşmediğinde prompt göster.always- her komutta prompt göster. Geçerli ask modualwaysolduğundaallow-alwayskalıcı güveni prompt’ları bastırmaz.
askFallback
askFallback"deny" | "allowlist" | "full"Prompt gerektiğinde ancak hiçbir UI erişilebilir olmadığında çözüm.
deny- engelle.allowlist- yalnızca allowlist eşleşirse izin ver.full- izin ver.
tools.exec.strictInlineEval
strictInlineEvalbooleantrue olduğunda, OpenClaw interpreter binary’sinin kendisi allowlist’e alınmış olsa bile inline code-eval formlarını yalnızca onayla çalışır kabul eder. Tek bir kararlı dosya operand’ına temiz biçimde eşlenmeyen interpreter loader’ları için defense-in-depth.
Strict mode’un yakaladığı örnekler:
python -cnode -e,node --eval,node -pruby -eperl -e,perl -Ephp -rlua -eosascript -e
Strict mode’da bu komutlar yine de açık onay gerektirir ve allow-always bunlar için otomatik olarak yeni allowlist girişleri kalıcılaştırmaz.
YOLO modu (onaysız)
Host exec’in onay prompt’ları olmadan çalışmasını istiyorsanız iki policy katmanını da açmanız gerekir - OpenClaw config içindeki istenen exec policy (tools.exec.*) ve ~/.openclaw/exec-approvals.json içindeki host-local onay policy’si.
YOLO, açıkça sıkılaştırmadığınız sürece varsayılan host davranışıdır:
| Katman | YOLO ayarı |
|---|---|
tools.exec.security |
gateway/node üzerinde full |
tools.exec.ask |
off |
Host askFallback |
full |
Kendi noninteractive permission mode’unu açığa çıkaran CLI destekli sağlayıcılar bu policy’yi izleyebilir. Claude CLI, OpenClaw’ın istenen exec policy’si YOLO olduğunda --permission-mode bypassPermissions ekler. Bu backend davranışını agents.defaults.cliBackends.claude-cli.args / resumeArgs altında açık Claude argümanlarıyla override edin - örneğin --permission-mode default, acceptEdits veya bypassPermissions.
Daha muhafazakar bir kurulum istiyorsanız katmanlardan herhangi birini tekrar allowlist / on-miss veya deny seviyesine sıkılaştırın.
Kalıcı gateway-host "asla prompt gösterme" kurulumu
İstenen config policy’sini ayarla
openclaw config set tools.exec.host gateway
openclaw config set tools.exec.security full
openclaw config set tools.exec.ask off
openclaw gateway restart
Host onayları dosyasını eşleştir
openclaw approvals set --stdin <<'EOF'
{
version: 1,
defaults: {
security: "full",
ask: "off",
askFallback: "full"
}
}
EOF
Yerel kısayol
openclaw exec-policy preset yolo
Bu yerel kısayol ikisini de günceller:
- Yerel
tools.exec.host/security/ask. - Yerel
~/.openclaw/exec-approvals.jsonvarsayılanları.
Bu bilinçli olarak yalnızca yereldir. Gateway-host veya node-host onaylarını uzaktan değiştirmek için openclaw approvals set --gateway veya openclaw approvals set --node <id|name|ip> kullanın.
Node host
Bir node host için aynı onaylar dosyasını bunun yerine o node üzerinde uygulayın:
openclaw approvals set --node <id|name|ip> --stdin <<'EOF'
{
version: 1,
defaults: {
security: "full",
ask: "off",
askFallback: "full"
}
}
EOF
Yalnızca oturum kısayolu
/exec security=full ask=offyalnızca geçerli oturumu değiştirir./elevated full, o oturum için exec onaylarını da atlayan bir break-glass kısayoludur.
Host onayları dosyası config’ten daha katı kalırsa daha katı host policy hâlâ kazanır.
Allowlist (ajan başına)
Allowlist’ler ajan başınadır. Birden fazla ajan varsa macOS uygulamasında hangi ajanı düzenlediğinizi değiştirin. Pattern’ler glob eşleşmeleridir.
Pattern’ler çözümlenmiş binary path glob’ları veya yalın komut adı glob’ları olabilir. 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. Belirli bir binary konumuna güvenmek istediğinizde path glob kullanın.
Eski agents.default girişleri yükleme sırasında agents.main konumuna geçirilir. echo ok && pwd gibi Shell zincirlerinde yine de her üst düzey segmentin allowlist kurallarını karşılaması gerekir.
Örnekler:
rg~/Projects/**/bin/peekaboo~/.local/bin/*/opt/homebrew/bin/rg
argPattern ile argümanları kısıtlama
Bir allowlist girişi bir binary ve belirli bir argüman şekliyle eşleşmeliyse argPattern ekleyin. OpenClaw, regular expression’ı executable token (argv[0]) hariç tutularak ayrıştırılmış komut argümanlarına karşı değerlendirir. Elle yazılmış girişlerde argümanlar tek bir boşlukla birleştirilir, bu nedenle tam eşleşme gerektiğinde pattern’i anchor’layın.
{
"version": 1,
"agents": {
"main": {
"allowlist": [
{
"pattern": "python3",
"argPattern": "^safe\\.py$"
}
]
}
}
}
Bu giriş python3 safe.py komutuna izin verir; python3 other.py bir allowlist miss olur. Aynı binary için yalnızca path içeren bir giriş de varsa, eşleşmeyen argümanlar yine de o yalnızca path içeren girişe fallback yapabilir. Amaç binary’yi bildirilen argümanlarla kısıtlamaksa yalnızca path içeren girişi atlayın.
Onay akışları tarafından kaydedilen girişler, tam argv eşleştirmesi için dahili bir separator formatı kullanabilir. Kodlanmış değeri elle düzenlemek yerine bu girişleri yeniden oluşturmak için UI’ı veya onay akışını tercih edin. OpenClaw bir komut segmenti için argv ayrıştıramazsa argPattern içeren girişler eşleşmez.
Her allowlist girişi şunları destekler:
| Alan | Anlam |
|---|---|
pattern |
Çözümlenmiş ikili dosya yolu glob’u veya yalın komut adı glob’u |
argPattern |
İsteğe bağlı argv regex’i; atlanan girdiler yalnızca yoldur |
id |
UI kimliği için kullanılan kararlı UUID |
source |
allow-always gibi girdi kaynağı |
commandText |
Bir onay akışı girdiyi oluşturduğunda yakalanan komut metni |
lastUsedAt |
Son kullanılma zaman damgası |
lastUsedCommand |
Eşleşen son komut |
lastResolvedPath |
Son çözümlenen ikili dosya yolu |
Skill CLI’larını otomatik izinli yapma
Skill CLI’larını otomatik izinli yapma etkinleştirildiğinde, bilinen skills tarafından başvurulan çalıştırılabilir dosyalar node’larda (macOS node’u veya başsız node ana makinesi) izin listesine alınmış kabul edilir. Bu, skill bin listesini almak için Gateway RPC üzerinden skills.bins kullanır. Katı manuel izin listeleri istiyorsanız bunu devre dışı bırakın.
Güvenli bin’ler ve onay yönlendirme
Güvenli bin’ler (yalnızca stdin hızlı yolu), yorumlayıcı bağlama ayrıntıları ve onay istemlerini Slack/Discord/Telegram’a nasıl yönlendireceğiniz (veya bunları yerel onay istemcileri olarak nasıl çalıştıracağınız) için bkz. Exec approvals - advanced.
Control UI düzenleme
Varsayılanları, ajan başına geçersiz kılmaları ve izin listelerini düzenlemek için Control UI → Nodes → Exec approvals kartını kullanın. Bir kapsam seçin (Varsayılanlar veya bir ajan), politikayı ayarlayın, izin listesi kalıpları ekleyip kaldırın, ardından Kaydet’e basın. UI, listeyi düzenli tutabilmeniz için kalıp başına son kullanım meta verilerini gösterir.
Hedef seçici Gateway’i (yerel onaylar) veya bir Node’u seçer. Node’lar system.execApprovals.get/set duyurusu yapmalıdır (macOS uygulaması veya başsız node ana makinesi). Bir node exec onaylarını henüz duyurmuyorsa yerel ~/.openclaw/exec-approvals.json dosyasını doğrudan düzenleyin.
CLI: openclaw approvals, gateway veya node düzenlemeyi destekler - bkz. Approvals CLI.
Onay akışı
Bir istem gerektiğinde gateway, operatör istemcilerine exec.approval.requested yayınlar. Control UI ve macOS uygulaması bunu exec.approval.resolve aracılığıyla çözer, ardından gateway onaylanan isteği node ana makinesine iletir.
host=node için onay istekleri kurallı bir systemRunPlan yükü içerir. Gateway, onaylanan system.run isteklerini iletirken bu planı yetkili komut/cwd/oturum bağlamı olarak kullanır.
Bu, asenkron onay gecikmesi için önemlidir:
- Node exec yolu, baştan tek bir kurallı plan hazırlar.
- Onay kaydı bu planı ve bağlama meta verilerini saklar.
- Onaylandıktan sonra, son iletilen
system.runçağrısı daha sonraki çağıran düzenlemelerine güvenmek yerine saklanan planı yeniden kullanır. - Çağıran, onay isteği oluşturulduktan sonra
command,rawCommand,cwd,agentIdveyasessionKeydeğerini değiştirirse gateway, iletilen çalıştırmayı onay uyuşmazlığı olarak reddeder.
Sistem olayları
Exec yaşam döngüsü sistem mesajları olarak gösterilir:
Exec running(yalnızca komut çalışıyor bildirimi eşiğini aşarsa).Exec finished.Exec denied.
Bunlar, node olayı bildirdikten sonra ajanın oturumuna gönderilir. Gateway ana makinesindeki exec onayları, komut tamamlandığında (ve isteğe bağlı olarak eşikten daha uzun süre çalıştığında) aynı yaşam döngüsü olaylarını yayar. Onay kapılı exec’ler, kolay korelasyon için bu mesajlarda onay kimliğini runId olarak yeniden kullanır.
Reddedilen onay davranışı
Bir asenkron exec onayı reddedildiğinde OpenClaw, ajanın oturumdaki aynı komutun daha önceki herhangi bir çalıştırmasından gelen çıktıyı yeniden kullanmasını engeller. Red nedeni, hiçbir komut çıktısının kullanılamadığına dair açık yönlendirmeyle birlikte iletilir; bu da ajanın yeni çıktı olduğunu iddia etmesini veya reddedilen komutu önceki başarılı bir çalıştırmadan kalan eski sonuçlarla tekrarlamasını durdurur.
Sonuçlar
fullgüçlüdür; mümkün olduğunda izin listelerini tercih edin.ask, hızlı onaylara hâlâ izin verirken sizi döngünün içinde tutar.- Ajan başına izin listeleri, bir ajanın onaylarının diğerlerine sızmasını önler.
- Onaylar yalnızca yetkili gönderenlerden gelen ana makine exec isteklerine uygulanır. Yetkisiz gönderenler
/execveremez. /exec security=full, yetkili operatörler için oturum düzeyinde bir kolaylıktır ve tasarım gereği onayları atlar. Ana makine exec’i katı biçimde engellemek için onay güvenliğinidenyolarak ayarlayın veya araç politikası aracılığıylaexecaracını reddedin.
İlgili
Güvenli bin’ler, yorumlayıcı bağlama ve sohbete onay yönlendirme.
Kabuk komutu yürütme aracı.
Onayları da atlayan acil durum yolu.
Sandbox modları ve çalışma alanı erişimi.
Güvenlik modeli ve sağlamlaştırma.
Her denetimin ne zaman kullanılacağı.
Skill destekli otomatik izin davranışı.