Sandbox kullanımı
OpenClaw, etki alanını azaltmak için araçları sandbox arka uçları içinde çalıştırabilir. Bu isteğe bağlıdır ve yapılandırma tarafından denetlenir (agents.defaults.sandbox veya
agents.list[].sandbox). Sandbox kullanımı kapalıysa araçlar ana makinede çalışır.
Gateway ana makinede kalır; etkin olduğunda araç yürütmesi yalıtılmış bir sandbox
içinde çalışır.
Bu kusursuz bir güvenlik sınırı değildir, ancak model aptalca bir şey yaptığında
dosya sistemi ve süreç erişimini anlamlı ölçüde sınırlar.
Neyin sandbox içine alındığı
- Araç yürütmesi (
exec,read,write,edit,apply_patch,processvb.). - İsteğe bağlı sandbox’lı tarayıcı (
agents.defaults.sandbox.browser).- Varsayılan olarak, browser aracı ihtiyaç duyduğunda sandbox tarayıcı otomatik başlar (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ı kapsayıcıları genel
bridgeağı yerine ayrılmış 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, kapsayıcı 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 parola korumalıdır; OpenClaw kısa ömürlü bir belirteç URL’si üretir, bu URL yerel bir önyükleme sayfası sunar ve noVNC’yi URL parçasındaki parolayla açar (sorgu/header günlüklerinde değil).
agents.defaults.sandbox.browser.allowHostControl, sandbox’lı oturumların ana makine tarayıcısını açıkça hedeflemesine izin verir.- İsteğe bağlı izin listeleri
target: "custom"kullanımını denetler:allowedControlUrls,allowedControlHosts,allowedControlPorts.
- Varsayılan olarak, browser aracı ihtiyaç duyduğunda sandbox tarayıcı otomatik başlar (CDP’nin erişilebilir olmasını sağlar).
- Gateway sürecinin kendisi.
- Açıkça sandbox dışında çalışmasına izin verilen tüm araçlar (ör.
tools.elevated).- Yükseltilmiş exec, sandbox kullanımını atlar ve yapılandırılmış kaçış yolunu kullanır (
gatewayvarsayılan, exec hedefinodeolduğundanode). - Sandbox kullanımı kapalıysa
tools.elevatedyürütmeyi değiştirmez (zaten ana makinededir). Bkz. Yükseltilmiş Mod.
- Yükseltilmiş exec, sandbox kullanımını atlar ve yapılandırılmış kaçış yolunu kullanır (
Modlar
agents.defaults.sandbox.mode, sandbox kullanımının ne zaman kullanılacağını denetler:
"off": sandbox kullanımı yok."non-main": yalnızca ana olmayan oturumları sandbox içine alır (normal sohbetleri ana makinede istiyorsanız varsayılan)."all": her oturum bir sandbox içinde çalışır. Not:"non-main", aracı kimliğine değilsession.mainKeydeğerine (varsayılan"main") dayanır. Grup/kanal oturumları kendi anahtarlarını kullanır, bu nedenle ana olmayan sayılırlar ve sandbox içine alınırlar.
Kapsam
agents.defaults.sandbox.scope, kaç kapsayıcı oluşturulacağını denetler:
"agent"(varsayılan): aracı başına bir kapsayıcı."session": oturum başına bir kapsayıcı."shared": tüm sandbox’lı oturumlar tarafından paylaşılan bir kapsayıcı.
Arka uç
agents.defaults.sandbox.backend, sandbox’ı hangi çalışma zamanının sağlayacağını denetler:
"docker"(sandbox kullanımı etkin olduğunda varsayılan): yerel Docker destekli sandbox çalışma zamanı."ssh": genel SSH destekli uzak sandbox çalışma zamanı."openshell": OpenShell destekli sandbox çalışma zamanı.
agents.defaults.sandbox.ssh altında bulunur.
OpenShell’e özgü yapılandırma plugins.entries.openshell.config altında bulunur.
Arka uç seçme
| Docker | SSH | OpenShell | |
|---|---|---|---|
| Çalıştığı yer | Yerel kapsayıcı | SSH ile erişilebilen herhangi bir ana makine | OpenShell tarafından yönetilen sandbox |
| Kurulum | scripts/sandbox-setup.sh | SSH anahtarı + hedef ana makine | OpenShell Plugin’i etkin |
| Çalışma alanı modeli | Bind-mount veya kopya | Uzak-kanonik (bir kez tohumlanır) | mirror veya remote |
| Ağ denetimi | docker.network (varsayılan: yok) | Uzak ana makineye bağlı | OpenShell’e bağlı |
| Tarayıcı sandbox’ı | Desteklenir | Desteklenmez | Henüz desteklenmez |
| Bind mount’lar | docker.binds | Yok | Yok |
| En uygun kullanım | Yerel geliştirme, tam yalıtım | Uzak bir makineye aktarma | İsteğe bağlı çift yönlü eşzamanlama ile yönetilen uzak sandbox’lar |
Docker arka ucu
Sandbox kullanımı varsayılan olarak kapalıdır. Sandbox kullanımını etkinleştirir ve bir arka uç seçmezseniz, OpenClaw Docker arka ucunu kullanır. Araçları ve sandbox tarayıcılarını Docker daemon soketi (/var/run/docker.sock) aracılığıyla yerel olarak yürütür. Sandbox kapsayıcı
yalıtımı Docker ad alanları tarafından belirlenir.
Docker-out-of-Docker (DooD) Kısıtları:
OpenClaw Gateway’i bir Docker kapsayıcısı olarak dağıtırsanız, ana makinenin Docker soketini kullanarak eş düzey sandbox kapsayıcılarını düzenler (DooD). Bu durum belirli bir yol eşleme kısıtı getirir:
- Yapılandırma Ana Makine Yolları Gerektirir:
openclaw.jsoniçindekiworkspaceyapılandırması, iç Gateway kapsayıcı yolunu değil Ana makinenin mutlak yolunu içermelidir (ör./home/user/.openclaw/workspaces). OpenClaw, Docker daemon’dan bir sandbox başlatmasını istediğinde, daemon yolları Gateway ad alanına göre değil Ana Makine OS ad alanına göre değerlendirir. - FS Köprüsü Eşliği (Aynı Volume Eşlemesi): OpenClaw Gateway yerel süreci de heartbeat ve köprü dosyalarını
workspacedizinine yazar. Gateway kendi kapsayıcılı ortamının içinden tam aynı dizgeyi (ana makine yolunu) değerlendirdiğinden, Gateway dağıtımı ana makine ad alanını yerel olarak bağlayan aynı volume eşlemesini içermelidir (-v /home/user/.openclaw:/home/user/.openclaw).
EACCES izin hatası verir.
SSH arka ucu
OpenClaw’ınexec, dosya araçlarını ve medya okumalarını
SSH ile erişilebilen herhangi bir makinede sandbox içine almasını istiyorsanız backend: "ssh" kullanın.
- 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, istem medya okumaları ve gelen medya hazırlığı SSH üzerinden doğrudan uzak çalışma alanına karşı çalışır. - OpenClaw uzak değişiklikleri otomatik olarak yerel çalışma alanına geri eşzamanlamaz.
identityFile,certificateFile,knownHostsFile: mevcut yerel dosyaları kullanır ve OpenSSH yapılandırması üzerinden geçirir.identityData,certificateData,knownHostsData: satır içi dizgiler veya SecretRefs kullanır. OpenClaw bunları normal secrets çalışma zamanı anlık görüntüsü üzerinden çözümler,0600izinleriyle geçici dosyalara yazar ve SSH oturumu bittiğinde siler.- Aynı öğe için hem
*Filehem*Dataayarlanmışsa, bu SSH oturumu için*Datakazanır.
- Tohumlama adımından sonra OpenClaw dışında ana makinede yapılan yerel düzenlemeler, sandbox’ı yeniden oluşturana kadar uzakta görünmez.
openclaw sandbox recreate, kapsam başına uzak kökü siler ve bir sonraki kullanımda yeniden yerelden tohumlar.- Tarayıcı sandbox kullanımı SSH arka ucunda desteklenmez.
sandbox.docker.*ayarları SSH arka ucuna uygulanmaz.
OpenShell arka ucu
Araçları OpenShell tarafından yönetilen uzak bir ortamda sandbox içine almak istiyorsanızbackend: "openshell" kullanın. Tam kurulum kılavuzu, yapılandırma
başvurusu ve çalışma alanı modu karşılaştırması için ayrılmış
OpenShell sayfasına bakın.
OpenShell, genel SSH arka ucuyla aynı çekirdek SSH taşımasını ve uzak dosya sistemi köprüsünü yeniden kullanır
ve buna OpenShell’e özgü yaşam döngüsünü
(sandbox create/get/delete, sandbox ssh-config) ve 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 eşzamanlar ve exec sonrasında uzak çalışma alanını geri eşzamanlar.remote: sandbox oluşturulduktan sonra OpenShell çalışma alanı kanonik olur. OpenClaw uzak çalışma alanını yerel çalışma alanından bir kez tohumlar, sonra dosya araçları ve exec değişiklikleri geri eşzamanlamadan doğrudan uzak sandbox üzerinde çalışır.
- OpenClaw,
openshell sandbox ssh-config <name>aracılığıyla OpenShell’den sandbox’a özgü SSH yapılandırması ister. - Çekirdek, 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 yaşam döngüsü farklıdır: exec öncesi yerelden uzağa eşzamanla, sonra exec sonrası geri eşzamanla.
- sandbox tarayıcı henüz desteklenmez
sandbox.docker.binds, OpenShell arka ucunda desteklenmezsandbox.docker.*altındaki Docker’a özgü çalışma zamanı düğmeleri yalnızca Docker arka ucuna uygulanır
Çalışma alanı modları
OpenShell’in iki çalışma alanı modeli vardır. Pratikte en önemli kısım budur.mirror
Yerel çalışma alanının kanonik kalmasını istiyorsanız plugins.entries.openshell.config.mode: "mirror" kullanın.
Davranış:
execöncesinde OpenClaw yerel çalışma alanını OpenShell sandbox’ına eşzamanlar.execsonrasında OpenClaw uzak çalışma alanını tekrar yerel çalışma alanına eşzamanlar.- Dosya araçları hâlâ sandbox köprüsü üzerinden çalışır, ancak dönüşler arasında doğruluk kaynağı yerel çalışma alanı olarak kalır.
- OpenClaw dışında dosyaları yerelde düzenliyor ve bu değişikliklerin sandbox’ta otomatik olarak görünmesini istiyorsanız
- OpenShell sandbox’ının mümkün olduğunca Docker arka ucu gibi davranmasını istiyorsanız
- her exec dönüşünden sonra ana makine çalışma alanının sandbox yazmalarını yansıtmasını istiyorsanız
- exec öncesi ve sonrasında ek eşzamanlama maliyeti
remote
OpenShell çalışma alanının kanonik olmasını istiyorsanız plugins.entries.openshell.config.mode: "remote" kullanın.
Davranış:
- Sandbox ilk oluşturulduğunda, OpenClaw uzak çalışma alanını yerel çalışma alanından bir kez tohumlar.
- Bundan sonra
exec,read,write,editveapply_patchdoğrudan uzak OpenShell çalışma alanına karşı çalışır. - OpenClaw,
execsonrasında uzak değişiklikleri yerel çalışma alanına geri eşzamanlamaz. - İstem zamanındaki medya okumaları yine çalışır; çünkü dosya ve medya araçları yerel ana makine yolunu varsaymak yerine sandbox köprüsü üzerinden okur.
- Taşıma,
openshell sandbox ssh-configtarafından döndürülen OpenShell sandbox’ına SSH ile yapılır.
- Tohumlama adımından sonra OpenClaw dışında ana makinede dosya düzenlerseniz, uzak sandbox bu değişiklikleri otomatik olarak görmez.
- Sandbox yeniden oluşturulursa, uzak çalışma alanı yerel çalışma alanından yeniden tohumlanır.
scope: "agent"veyascope: "shared"ile, bu uzak çalışma alanı aynı kapsamda paylaşılır.
- sandbox’ın ağırlıklı olarak uzak OpenShell tarafında yaşaması gerekiyorsa
- dönüş başına daha düşük eşzamanlama ek yükü istiyorsanız
- ana makinedeki yerel düzenlemelerin uzak sandbox durumunun üzerine sessizce yazmasını istemiyorsanız
mirror seçin.
Sandbox’ı gerçek çalışma alanı olarak düşünüyorsanız remote seçin.
OpenShell yaşam döngüsü
OpenShell sandbox’ları yine normal sandbox 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 recreate, geçerli çalışma zamanını siler ve OpenClaw’ın bir sonraki kullanımda onu yeniden oluşturmasına izin verir- budama mantığı da arka uç farkındalıklıdır
remote modu için yeniden oluşturma özellikle önemlidir:
- yeniden oluşturma, o kapsamdaki kanonik uzak çalışma alanını siler
- bir sonraki kullanım, yerel çalışma alanından yeni bir uzak çalışma alanı tohumlar
mirror modu için yeniden oluşturma, esas olarak uzak yürütme ortamını sıfırlar
çünkü yerel çalışma alanı zaten kanonik kalır.
Çalışma alanı erişimi
agents.defaults.sandbox.workspaceAccess, sandbox’ın neyi görebileceğini denetler:
"none"(varsayılan): araçlar~/.openclaw/sandboxesaltında bir sandbox çalışma alanı görür."ro": aracı çalışma alanını/agentkonumuna salt okunur olarak bağlar (write/edit/apply_patchdevre dışı kalır)."rw": aracı çalışma alanını/workspacekonumuna okuma/yazma olarak bağlar.
mirrormodu,execdönüşleri 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"yine yazma davranışını aynı şekilde kısıtlar
media/inbound/*).
Skills notu: read aracı sandbox köklüdür. workspaceAccess: "none" ile
OpenClaw, okunabilmeleri için uygun skill’leri sandbox çalışma alanına (.../skills)
yansıtır. "rw" ile çalışma alanı skill’leri
/workspace/skills altından okunabilir.
Özel bind mount’lar
agents.defaults.sandbox.docker.binds, ek ana makine dizinlerini kapsayıcıya bağlar.
Biçim: host:container:mode (ör. "/home/user/source:/source:rw").
Genel ve aracı başına bind’ler birleştirilir (değiştirilmez). scope: "shared" altında, aracı başına bind’ler yok sayılır.
agents.defaults.sandbox.browser.binds, ek ana makine dizinlerini yalnızca sandbox tarayıcı kapsayıcısına bağlar.
- Ayarlandığında (
[]dahil), tarayıcı kapsayıcısı içinagents.defaults.sandbox.docker.bindsdeğerini değiştirir. - Atlandığında, tarayıcı kapsayıcısı geriye dönük uyumluluk için
agents.defaults.sandbox.docker.bindsdeğerine geri döner.
- Bind’ler sandbox dosya sistemini atlar: ayarladığınız modla (
:roveya:rw) ana makine yollarını görünür kılarlar. - OpenClaw tehlikeli bind kaynaklarını engeller (örneğin:
docker.sock,/etc,/proc,/sys,/devve bunları açığa çıkaracak üst bağlamalar). - OpenClaw ayrıca
~/.aws,~/.cargo,~/.config,~/.docker,~/.gnupg,~/.netrc,~/.npmve~/.sshgibi yaygın ana dizin kimlik bilgisi köklerini de engeller. - Bind doğrulaması yalnızca dize eşleştirmesi değildir. OpenClaw kaynak yolu normalleştirir, sonra engellenen yolları ve izin verilen kökleri yeniden denetlemeden önce onu mevcut en derin üst öğe üzerinden tekrar çözümler.
- Bu, son yaprak henüz mevcut olmasa bile sembolik bağlantı üst öğesi kaçışlarının yine güvenli şekilde kapalı kalacağı anlamına gelir. Örnek:
run-linkoraya işaret ediyorsa/workspace/run-link/new-fileyine/var/run/...olarak çözülür. - İzin verilen kaynak kökleri de aynı şekilde kanonikleştirilir, bu nedenle sembolik bağlantı çözümlemesinden önce yalnızca izin listesi içinde görünüyormuş gibi duran bir yol yine
outside allowed rootsolarak reddedilir. - Hassas bağlamalar (gizli bilgiler, SSH anahtarları, hizmet kimlik bilgileri), kesinlikle gerekmedikçe
:roolmalıdır. - Çalışma alanına yalnızca okuma erişimi gerekiyorsa bunu
workspaceAccess: "ro"ile birleştirin; bind modları bağımsız kalır. - Bind’lerin araç ilkesi ve yükseltilmiş exec ile nasıl etkileştiği için bkz. Sandbox vs Tool Policy vs Elevated.
Görseller + kurulum
Varsayılan Docker görseli:openclaw-sandbox:bookworm-slim
Bir kez derleyin:
sandbox.docker.setupCommand üzerinden kurun (ağ çıkışı + yazılabilir kök +
root kullanıcı gerektirir).
Yaygın araçlarla daha işlevsel bir sandbox görseli istiyorsanız (örneğin
curl, jq, nodejs, python3, git), şunu derleyin:
agents.defaults.sandbox.docker.image değerini
openclaw-sandbox-common:bookworm-slim olarak ayarlayın.
Sandbox’lı tarayıcı görseli:
agents.defaults.sandbox.docker.network ile geçersiz kılın.
Paketlenmiş sandbox tarayıcı görseli ayrıca kapsayıcılı iş yükleri için ihtiyatlı Chromium başlangıç varsayılanları uygular. Geçerli kapsayıcı 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=2noSandboxetkin olduğunda--no-sandboxve--disable-setuid-sandbox.- Üç grafik sağlamlaştırma bayrağı (
--disable-3d-apis,--disable-software-rasterizer,--disable-gpu) isteğe bağlıdır ve kapsayıcılarda GPU desteği olmadığında kullanışlıdır. İş yükünüz WebGL veya başka 3D/tarayıcı özellikleri gerektiriyorsaOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0ayarlayın. --disable-extensionsvarsayılan olarak etkindir ve uzantıya 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>ile denetlenir; burada0, Chromium’un varsayılanını korur.
browser.extraArgs kullanın.
Güvenlik varsayılanları:
network: "host"engellenir.network: "container:<id>"varsayılan olarak engellenir (ad alanına katılma atlatma riski).- Acil durum geçersiz kılma:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh, sandbox yapılandırmasını önyükleyebilir.
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
başvurusu: Docker.
setupCommand (tek seferlik kapsayıcı kurulumu)
setupCommand, sandbox kapsayıcısı oluşturulduktan sonra bir kez çalışır (her çalıştırmada değil).
Kapsayıcı içinde sh -lc üzerinden yürütülür.
Yollar:
- Genel:
agents.defaults.sandbox.docker.setupCommand - Aracı başına:
agents.list[].sandbox.docker.setupCommand
- Varsayılan
docker.network,"none"değeridir (çıkış yok), bu nedenle paket kurulumları başarısız olur. docker.network: "container:<id>",dangerouslyAllowContainerNamespaceJoin: truegerektirir ve yalnızca acil durum kullanımı içindir.readOnlyRoot: true, yazmaları engeller;readOnlyRoot: falseayarlayın veya özel bir görsel oluşturun.- Paket kurulumları için
userroot olmalıdır (userdeğerini atlayın veyauser: "0:0"ayarlayın). - Sandbox
exec, ana makineninprocess.envdeğerini devralmaz. Skill API anahtarları içinagents.defaults.sandbox.docker.env(veya özel bir görsel) kullanın.
Araç ilkesi + kaçış yolları
Araç izin/verme-denetimi ilkeleri, sandbox kurallarından önce yine uygulanır. Bir araç genel olarak veya aracı başına reddedilmişse, sandbox kullanımı onu geri getirmez.tools.elevated, sandbox dışında exec çalıştıran açık bir kaçış yoludur (gateway varsayılan, exec hedefi node olduğunda node).
/exec yönergeleri yalnızca yetkili gönderenlere uygulanır ve oturum başına kalıcıdır; exec özelliğini kesin olarak devre dışı bırakmak için
araç ilkesi reddetme kullanın (bkz. Sandbox vs Tool Policy vs Elevated).
Hata ayıklama:
- Etkin sandbox modunu, araç ilkesini ve düzeltme amaçlı yapılandırma anahtarlarını incelemek için
openclaw sandbox explainkullanın. - “Bu neden engellendi?” zihinsel modeli için bkz. Sandbox vs Tool Policy vs Elevated. Sıkı tutun.
Çok aracılı geçersiz kılmalar
Her aracı sandbox + araçları geçersiz kılabilir:agents.list[].sandbox ve agents.list[].tools (ayrıca sandbox araç ilkesi için agents.list[].tools.sandbox.tools).
Öncelik için bkz. Multi-Agent Sandbox & Tools.
En küçük etkinleştirme örneği
İlgili belgeler
- OpenShell — yönetilen sandbox arka uç kurulumu, çalışma alanı modları ve yapılandırma başvurusu
- Sandbox Configuration
- Sandbox vs Tool Policy vs Elevated — “bu neden engellendi?” hata ayıklaması
- Multi-Agent Sandbox & Tools — aracı başına geçersiz kılmalar ve öncelik
- Security