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 openclaw iş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 modu always olduğunda allow-always kalı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

strictInlineEvalboolean

true 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 -c
  • node -e, node --eval, node -p
  • ruby -e
  • perl -e, perl -E
  • php -r
  • lua -e
  • osascript -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.json varsayı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=off yalnı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, agentId veya sessionKey değ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

    • full güç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 /exec veremez.
    • /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ğini deny olarak ayarlayın veya araç politikası aracılığıyla exec aracını reddedin.

    İlgili