OpenClaw, etki alanını daraltmak için araçları sandbox backend’leri içinde çalıştırabilir. Bu isteğe bağlıdır ve yapılandırmayla (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agents.defaults.sandbox veya agents.list[].sandbox) kontrol edilir. Sandbox kapalıysa araçlar host üzerinde çalışır. Gateway host üzerinde kalır; araç yürütme etkinleştirildiğinde yalıtılmış bir sandbox içinde çalışır.
Bu kusursuz bir güvenlik sınırı değildir, ancak model saçma bir şey yaptığında dosya sistemi ve süreç erişimini ciddi ölçüde sınırlar.
Sandbox’a alınanlar
- Araç yürütme (
exec,read,write,edit,apply_patch,processvb.). - İsteğe bağlı sandbox tarayıcısı (
agents.defaults.sandbox.browser).
Sandbox tarayıcısı ayrıntıları
Sandbox tarayıcısı ayrıntıları
- Varsayılan olarak sandbox tarayıcısı, tarayıcı aracı ihtiyaç duyduğunda otomatik başlatılır (CDP’nin erişilebilir olmasını sağlar).
agents.defaults.sandbox.browser.autoStartveagents.defaults.sandbox.browser.autoStartTimeoutMsile yapılandırın. - Varsayılan olarak sandbox tarayıcısı container’ları, global
bridgeağı yerine özel bir Docker ağı (openclaw-sandbox-browser) kullanır.agents.defaults.sandbox.browser.networkile yapılandırın. - İsteğe bağlı
agents.defaults.sandbox.browser.cdpSourceRange, container kenarındaki CDP girişini bir CIDR izin listesiyle sınırlar (örneğin172.21.0.1/32). - noVNC gözlemci erişimi varsayılan olarak parolayla korunur; OpenClaw, yerel bir bootstrap sayfası sunan ve noVNC’yi parolayla URL parçasında (sorgu/header günlüklerinde değil) açan kısa ömürlü bir token URL’si üretir.
agents.defaults.sandbox.browser.allowHostControl, sandbox’a alınmış oturumların host tarayıcısını açıkça hedeflemesine izin verir.- İsteğe bağlı izin listeleri
target: "custom"için geçit görevi görür:allowedControlUrls,allowedControlHosts,allowedControlPorts.
- Gateway sürecinin kendisi.
- Sandbox dışında çalışmasına açıkça izin verilen herhangi bir araç (örn.
tools.elevated).- Yükseltilmiş exec, sandbox’ı atlar ve yapılandırılmış kaçış yolunu kullanır (varsayılan olarak
gatewayveya exec hedefinodeolduğundanode). - Sandbox kapalıysa
tools.elevatedyürütmeyi değiştirmez (zaten host üzerindedir). Bkz. Yükseltilmiş Mod.
- Yükseltilmiş exec, sandbox’ı atlar ve yapılandırılmış kaçış yolunu kullanır (varsayılan olarak
Modlar
agents.defaults.sandbox.mode, sandbox’ın ne zaman kullanılacağını kontrol eder:
- off
- non-main
- all
Sandbox yok.
Kapsam
agents.defaults.sandbox.scope, kaç container oluşturulacağını kontrol eder:
"agent"(varsayılan): agent başına bir container."session": oturum başına bir container."shared": sandbox’a alınmış tüm oturumlar tarafından paylaşılan bir container.
Backend
agents.defaults.sandbox.backend, sandbox’ı hangi runtime’ın sağlayacağını kontrol eder:
"docker"(sandbox etkinleştirildiğinde varsayılan): yerel Docker destekli sandbox runtime’ı."ssh": genel SSH destekli uzak sandbox runtime’ı."openshell": OpenShell destekli sandbox runtime’ı.
agents.defaults.sandbox.ssh altında bulunur. OpenShell’e özgü yapılandırma plugins.entries.openshell.config altında bulunur.
Backend seçme
| Docker | SSH | OpenShell | |
|---|---|---|---|
| Nerede çalışır | Yerel container | SSH ile erişilebilir herhangi bir host | OpenShell tarafından yönetilen sandbox |
| Kurulum | scripts/sandbox-setup.sh | SSH anahtarı + hedef host | OpenShell Plugin etkin |
| Çalışma alanı modeli | Bind-mount veya kopya | Uzak-kanonik (bir kez tohumla) | mirror veya remote |
| Ağ kontrolü | docker.network (varsayılan: yok) | Uzak host’a bağlı | OpenShell’e bağlı |
| Tarayıcı sandbox’ı | Desteklenir | Desteklenmez | Henüz desteklenmiyor |
| Bind mount’lar | docker.binds | N/A | N/A |
| En uygun olduğu yer | Yerel geliştirme, tam yalıtım | Uzak bir makineye aktarma | İsteğe bağlı iki yönlü senkronizasyonla yönetilen uzak sandbox’lar |
Docker backend’i
Sandbox varsayılan olarak kapalıdır. Sandbox’ı etkinleştirir ve bir backend seçmezseniz OpenClaw Docker backend’ini kullanır. Araçları ve sandbox tarayıcılarını Docker daemon socket’i (/var/run/docker.sock) üzerinden yerel olarak yürütür. Sandbox container yalıtımı Docker namespace’leri tarafından belirlenir.
Host GPU’larını Docker sandbox’larına göstermek için agents.defaults.sandbox.docker.gpus değerini veya agent başına agents.list[].sandbox.docker.gpus geçersiz kılmasını ayarlayın. Değer, Docker’ın --gpus bayrağına ayrı bir argüman olarak geçirilir; örneğin "all" veya "device=GPU-uuid" ve NVIDIA Container Toolkit gibi uyumlu bir host runtime’ı gerektirir.
SSH backend’i
OpenClaw’ınexec, dosya araçları ve medya okumalarını rastgele bir SSH erişilebilir makinede sandbox’a almasını istediğinizde backend: "ssh" kullanın.
Nasıl çalışır
Nasıl çalışır
- OpenClaw,
sandbox.ssh.workspaceRootaltında kapsam başına bir uzak kök oluşturur. - Oluşturma veya yeniden oluşturma sonrasındaki ilk kullanımda OpenClaw, bu uzak çalışma alanını yerel çalışma alanından bir kez tohumlar.
- Bundan sonra
exec,read,write,edit,apply_patch, prompt medya okumaları ve gelen medya hazırlama doğrudan SSH üzerinden uzak çalışma alanına karşı çalışır. - OpenClaw uzak değişiklikleri yerel çalışma alanına otomatik olarak geri senkronize etmez.
Kimlik doğrulama materyali
Kimlik doğrulama materyali
identityFile,certificateFile,knownHostsFile: mevcut yerel dosyaları kullanır ve bunları OpenSSH yapılandırması üzerinden geçirir.identityData,certificateData,knownHostsData: inline string’ler veya SecretRefs kullanır. OpenClaw bunları normal secrets runtime snapshot’ı üzerinden çözer,0600ile geçici dosyalara yazar ve SSH oturumu sona erdiğinde siler.- Aynı öğe için hem
*Filehem de*Dataayarlanmışsa, o SSH oturumu için*Datakazanır.
Uzak-kanonik sonuçlar
Uzak-kanonik sonuçlar
Bu bir uzak-kanonik modeldir. İlk tohumlamadan sonra uzak SSH çalışma alanı gerçek sandbox durumu olur.
- Tohum adımından sonra OpenClaw dışında yapılan host-yerel düzenlemeler, sandbox’ı yeniden oluşturana kadar uzaktan görünmez.
openclaw sandbox recreate, kapsam başına uzak kökü siler ve sonraki kullanımda yeniden yerelden tohumlar.- Tarayıcı sandbox’ı SSH backend’inde desteklenmez.
sandbox.docker.*ayarları SSH backend’i için geçerli değildir.
OpenShell backend’i
OpenClaw’ın araçları OpenShell tarafından yönetilen uzak bir ortamda sandbox’a almasını istediğinizdebackend: "openshell" kullanın. Tam kurulum rehberi, yapılandırma referansı ve çalışma alanı modu karşılaştırması için özel OpenShell sayfasına bakın.
OpenShell, genel SSH backend’iyle aynı çekirdek SSH aktarımını ve uzak dosya sistemi köprüsünü yeniden kullanır ve OpenShell’e özgü lifecycle (sandbox create/get/delete, sandbox ssh-config) ile isteğe bağlı mirror çalışma alanı modunu ekler.
mirror(varsayılan): yerel çalışma alanı kanonik kalır. OpenClaw, exec öncesinde yerel dosyaları OpenShell’e senkronize eder ve exec sonrasında uzak çalışma alanını geri senkronize eder.remote: sandbox oluşturulduktan sonra OpenShell çalışma alanı kanoniktir. OpenClaw uzak çalışma alanını yerel çalışma alanından bir kez tohumlar, ardından dosya araçları ve exec, değişiklikleri geri senkronize etmeden doğrudan uzak sandbox’a karşı çalışır.
Uzak aktarım ayrıntıları
Uzak aktarım ayrıntıları
- OpenClaw,
openshell sandbox ssh-config <name>üzerinden OpenShell’den sandbox’a özgü SSH yapılandırması ister. - Core bu SSH yapılandırmasını geçici bir dosyaya yazar, SSH oturumunu açar ve
backend: "ssh"tarafından kullanılan aynı uzak dosya sistemi köprüsünü yeniden kullanır. - Yalnızca
mirrormodunda lifecycle farklıdır: exec öncesinde yerelden uzağa senkronize et, ardından exec sonrasında geri senkronize et.
Mevcut OpenShell sınırlamaları
Mevcut OpenShell sınırlamaları
- sandbox tarayıcısı henüz desteklenmiyor
sandbox.docker.binds, OpenShell backend’inde desteklenmiyorsandbox.docker.*altındaki Docker’a özgü runtime ayarları yalnızca Docker backend’i için geçerli olmaya devam eder
Çalışma alanı modları
OpenShell’in iki çalışma alanı modeli vardır. Pratikte en önemli kısım budur.- mirror (yerel kanonik)
- remote (OpenShell canonical)
Yerel çalışma alanının kanonik kalmasını istediğinizde
plugins.entries.openshell.config.mode: "mirror" kullanın.Davranış:execöncesinde OpenClaw yerel çalışma alanını OpenShell korumalı alanına senkronize eder.execsonrasında OpenClaw uzak çalışma alanını yerel çalışma alanına geri senkronize eder.- Dosya araçları yine korumalı alan köprüsü üzerinden çalışır, ancak yerel çalışma alanı turlar arasında doğruluk kaynağı olarak kalır.
- dosyaları OpenClaw dışında yerel olarak düzenlediğinizde ve bu değişikliklerin korumalı alanda otomatik olarak görünmesini istediğinizde
- OpenShell korumalı alanının mümkün olduğunca Docker arka ucu gibi davranmasını istediğinizde
- ana makine çalışma alanının her exec turundan sonra korumalı alan yazmalarını yansıtmasını istediğinizde
mirror seçin. Korumalı alanı gerçek çalışma alanı olarak düşünüyorsanız remote seçin.
OpenShell yaşam döngüsü
OpenShell korumalı alanları yine normal korumalı alan yaşam döngüsü üzerinden yönetilir:openclaw sandbox list, Docker çalışma zamanlarının yanı sıra OpenShell çalışma zamanlarını da gösteriropenclaw sandbox recreategeçerli çalışma zamanını siler ve OpenClaw’ın sonraki kullanımda bunu yeniden oluşturmasına izin verir- temizleme mantığı da arka uç farkındadır
remote modu için yeniden oluşturma özellikle önemlidir:
- yeniden oluşturma, o kapsam için kanonik uzak çalışma alanını siler
- sonraki kullanım, yerel çalışma alanından yeni bir uzak çalışma alanı tohumlar
mirror modu için yeniden oluşturma, yerel çalışma alanı zaten kanonik kaldığından esas olarak uzak yürütme ortamını sıfırlar.
Çalışma alanı erişimi
agents.defaults.sandbox.workspaceAccess, korumalı alanın neyi görebileceğini denetler:
- none (default)
- ro
- rw
Araçlar
~/.openclaw/sandboxes altında bir korumalı alan çalışma alanı görür.mirrormodu, exec turları arasında yerel çalışma alanını yine kanonik kaynak olarak kullanırremotemodu, ilk tohumlamadan sonra uzak OpenShell çalışma alanını kanonik kaynak olarak kullanırworkspaceAccess: "ro"ve"none"yazma davranışını aynı şekilde kısıtlamaya devam eder
media/inbound/*) kopyalanır.
Skills notu:
read aracı korumalı alan köklüdür. workspaceAccess: "none" ile OpenClaw, okunabilmeleri için uygun Skills öğelerini korumalı alan çalışma alanına (.../skills) yansıtır. "rw" ile çalışma alanı Skills öğeleri /workspace/skills konumundan okunabilir.Özel bağlama noktaları
agents.defaults.sandbox.docker.binds, ek ana makine dizinlerini konteynere bağlar. Biçim: host:container:mode (ör. "/home/user/source:/source:rw").
Global ve ajan başına bağlamalar birleştirilir (değiştirilmez). scope: "shared" altında, ajan başına bağlamalar yok sayılır.
agents.defaults.sandbox.browser.binds, ek ana makine dizinlerini yalnızca korumalı alan tarayıcı konteynerine bağlar.
- Ayarlandığında (
[]dahil), tarayıcı konteyneri içinagents.defaults.sandbox.docker.bindsdeğerinin yerine geçer. - Atlandığında, tarayıcı konteyneri
agents.defaults.sandbox.docker.bindsdeğerine geri döner (geriye dönük uyumlu).
İmajlar ve kurulum
Varsayılan Docker imajı:openclaw-sandbox:bookworm-slim
Kaynak checkout ile npm install karşılaştırması
scripts/sandbox-setup.sh, scripts/sandbox-common-setup.sh ve scripts/sandbox-browser-setup.sh yardımcı betikleri yalnızca bir kaynak checkout üzerinden çalıştırırken kullanılabilir. npm paketine dahil değildirler.OpenClaw’ı npm install -g openclaw ile kurduysanız, bunun yerine aşağıda gösterilen satır içi docker build komutlarını kullanın.Varsayılan imajı oluştur
Bir kaynak checkout üzerinden:Bir npm kurulumundan (kaynak checkout gerekmez):Varsayılan imaj Node içermez. Bir skill Node (veya diğer çalışma zamanları) gerektiriyorsa, özel bir imaja gömün ya da
sandbox.docker.setupCommand üzerinden kurun (ağ çıkışı + yazılabilir kök + root kullanıcı gerektirir).openclaw-sandbox:bookworm-slim eksik olduğunda OpenClaw sessizce düz debian:bookworm-slim ile değiştirmez. Varsayılan imajı hedefleyen korumalı alan çalıştırmaları, siz imajı oluşturana kadar bir oluşturma talimatıyla hızlıca başarısız olur; çünkü paketli imaj, korumalı alan yazma/düzenleme yardımcıları için python3 taşır.İsteğe bağlı: ortak imajı oluştur
Yaygın araçlarla daha işlevsel bir korumalı alan imajı için (örneğin Bir npm kurulumundan, önce varsayılan imajı oluşturun (yukarıya bakın), ardından depodaki
curl, jq, nodejs, python3, git):Bir kaynak checkout üzerinden:scripts/docker/sandbox/Dockerfile.common dosyasını kullanarak ortak imajı bunun üzerinde oluşturun.Ardından agents.defaults.sandbox.docker.image değerini openclaw-sandbox-common:bookworm-slim olarak ayarlayın.İsteğe bağlı: korumalı alan tarayıcı imajını oluştur
Bir kaynak checkout üzerinden:Bir npm kurulumundan, depodaki
scripts/docker/sandbox/Dockerfile.browser dosyasını kullanarak oluşturun.agents.defaults.sandbox.docker.network ile geçersiz kılın.
Korumalı alan tarayıcı Chromium varsayılanları
Korumalı alan tarayıcı Chromium varsayılanları
Paketli korumalı alan tarayıcı imajı, konteynerleştirilmiş iş yükleri için muhafazakar Chromium başlatma varsayılanları da uygular. Geçerli konteyner varsayılanları şunları içerir:
--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-dev-shm-usage--disable-background-networking--disable-extensions--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--disable-software-rasterizer--no-zygote--metrics-recording-only--renderer-process-limit=2noSandboxetkinleştirildiğinde--no-sandbox.- Üç grafik sertleştirme bayrağı (
--disable-3d-apis,--disable-software-rasterizer,--disable-gpu) isteğe bağlıdır ve konteynerlerde GPU desteği olmadığında kullanışlıdır. İş yükünüz WebGL veya diğer 3B/tarayıcı özellikleri gerektiriyorsaOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0ayarlayın. --disable-extensionsvarsayılan olarak etkindir ve eklentiye bağımlı akışlar içinOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0ile devre dışı bırakılabilir.--renderer-process-limit=2,OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>tarafından denetlenir; burada0, Chromium varsayılanını korur.
browser.extraArgs kullanın.Ağ güvenliği varsayılanları
Ağ güvenliği varsayılanları
network: "host"engellenir.network: "container:<id>"varsayılan olarak engellenir (namespace katılma atlatma riski).- Acil durum geçersiz kılması:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh korumalı alan yapılandırmasını başlatabilir. Bu yolu etkinleştirmek için OPENCLAW_SANDBOX=1 (veya true/yes/on) ayarlayın. Soket konumunu OPENCLAW_DOCKER_SOCKET ile geçersiz kılabilirsiniz. Tam kurulum ve ortam referansı: Docker.
setupCommand (tek seferlik konteyner kurulumu)
setupCommand, korumalı alan konteyneri oluşturulduktan sonra bir kez çalışır (her çalıştırmada değil). Konteyner içinde sh -lc üzerinden yürütülür.
Yollar:
- Global:
agents.defaults.sandbox.docker.setupCommand - Ajan başına:
agents.list[].sandbox.docker.setupCommand
Common pitfalls
Common pitfalls
- Varsayılan
docker.network"none"değeridir (dışa erişim yoktur), bu yüzden paket kurulumları başarısız olur. docker.network: "container:<id>",dangerouslyAllowContainerNamespaceJoin: truegerektirir ve yalnızca acil durumlarda kullanılmalıdır.readOnlyRoot: trueyazmaları engeller;readOnlyRoot: falseayarlayın veya özel bir imaj hazırlayın.- Paket kurulumları için
userroot olmalıdır (userdeğerini atlayın veyauser: "0:0"ayarlayın). - Korumalı alan
exec, ana makineninprocess.envdeğerini devralmaz. Skill API anahtarları içinagents.defaults.sandbox.docker.env(veya özel bir imaj) kullanın.
Araç ilkesi ve kaçış mekanizmaları
Araç izin/verme ilkeleri, korumalı alan kurallarından önce uygulanmaya devam eder. Bir araç genel olarak veya ajan bazında reddedilmişse, korumalı alan onu geri getirmez.tools.elevated, exec komutunu korumalı alanın dışında çalıştıran açık bir kaçış mekanizmasıdır (varsayılan olarak gateway, exec hedefi node olduğunda ise node). /exec yönergeleri yalnızca yetkili gönderenler için geçerlidir ve oturum bazında kalıcıdır; exec komutunu kesin olarak devre dışı bırakmak için araç ilkesi reddini kullanın (bkz. Korumalı alan vs Araç İlkesi vs Yükseltilmiş).
Hata ayıklama:
- Etkin korumalı alan modunu, araç ilkesini ve düzeltme yapılandırma anahtarlarını incelemek için
openclaw sandbox explainkullanın. - “Bu neden engellendi?” zihinsel modeli için bkz. Korumalı alan vs Araç İlkesi vs Yükseltilmiş.
Çok ajanlı geçersiz kılmalar
Her ajan korumalı alanı ve araçları geçersiz kılabilir:agents.list[].sandbox ve agents.list[].tools (ayrıca korumalı alan araç ilkesi için agents.list[].tools.sandbox.tools). Öncelik sırası için bkz. Çok Ajanlı Korumalı Alan ve Araçlar.
En küçük etkinleştirme örneği
İlgili
- Çok Ajanlı Korumalı Alan ve Araçlar — ajan bazlı geçersiz kılmalar ve öncelik sırası
- OpenShell — yönetilen korumalı alan arka uç kurulumu, çalışma alanı modları ve yapılandırma başvurusu
- Korumalı alan yapılandırması
- Korumalı alan vs Araç İlkesi vs Yükseltilmiş — “bu neden engellendi?” hata ayıklaması
- Güvenlik