Sandboxing
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 ile denetlenir (agents.defaults.sandbox veya
agents.list[].sandbox). Sandboxing kapalıysa araçlar ana makinede çalışır.
Gateway ana makinede kalır; etkinleştirildiğinde 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.
Neler sandbox içine alınır
- Araç yürütmesi (
exec,read,write,edit,apply_patch,processvb.). - İsteğe bağlı sandbox browser (
agents.defaults.sandbox.browser).- Varsayılan olarak sandbox browser otomatik başlar (CDP’nin erişilebilir olmasını sağlar) ve browser aracı buna ihtiyaç duyduğunda devreye girer.
agents.defaults.sandbox.browser.autoStartveagents.defaults.sandbox.browser.autoStartTimeoutMsile yapılandırın. - Varsayılan olarak sandbox browser kapsayıcıları genel
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, 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 token URL üretir, bu URL yerel bir bootstrap sayfası sunar ve noVNC’yi parolayla URL fragment’ında açar (query/header günlüklerinde değil).
agents.defaults.sandbox.browser.allowHostControl, sandbox içindeki oturumların açıkça ana makine browser’ını hedeflemesine izin verir.- İsteğe bağlı izin listeleri
target: "custom"için geçit görevi görür:allowedControlUrls,allowedControlHosts,allowedControlPorts.
- Varsayılan olarak sandbox browser otomatik başlar (CDP’nin erişilebilir olmasını sağlar) ve browser aracı buna ihtiyaç duyduğunda devreye girer.
- Gateway sürecinin kendisi.
- Açıkça sandbox dışında çalışmasına izin verilen herhangi bir araç (ör.
tools.elevated).- Elevated exec sandboxing’i atlar ve yapılandırılmış kaçış yolunu kullanır (varsayılan olarak
gateway,exechedefinodeolduğundanode). - Sandboxing kapalıysa
tools.elevatedyürütmeyi değiştirmez (zaten ana makinededir). Bkz. Elevated Mode.
- Elevated exec sandboxing’i atlar ve yapılandırılmış kaçış yolunu kullanır (varsayılan olarak
Modlar
agents.defaults.sandbox.mode, sandboxing’in ne zaman kullanılacağını denetler:
"off": sandboxing yok."non-main": yalnızca main olmayan oturumları sandbox içine alır (normal sohbetlerin ana makinede olmasını istiyorsanız varsayılan)."all": her oturum bir sandbox içinde çalışır. Not:"non-main", ajan kimliğine değilsession.mainKeydeğerine (varsayılan"main") dayanır. Grup/kanal oturumları kendi anahtarlarını kullanır, bu nedenle main olmayan sayılır ve sandbox içine alınır.
Kapsam
agents.defaults.sandbox.scope, kaç kapsayıcı oluşturulacağını denetler:
"agent"(varsayılan): ajan başına bir kapsayıcı."session": oturum başına bir kapsayıcı."shared": tüm sandbox içindeki 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"(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.
Bir arka uç seçme
| Docker | SSH | OpenShell | |
|---|---|---|---|
| Nerede çalışır | 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 eklentisi 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ı |
| Browser sandbox | Desteklenir | Desteklenmez | Henüz desteklenmiyor |
| Bind mount’lar | docker.binds | Yok | Yok |
| En uygun olduğu durumlar | Yerel geliştirme, tam yalıtım | Yükü uzak bir makineye aktarma | İsteğe bağlı çift yönlü senkronizasyonla yönetilen uzak sandbox’lar |
SSH arka ucu
OpenClaw’ınexec, dosya araçları ve medya okumalarını
rastgele bir SSH ile erişilebilen 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şturmadan sonraki 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ığı doğrudan uzak çalışma alanında SSH üzerinden çalışır. - OpenClaw, uzaktaki değişiklikleri yerel çalışma alanına otomatik olarak geri senkronize etmez.
identityFile,certificateFile,knownHostsFile: mevcut yerel dosyaları kullanır ve bunları OpenSSH yapılandırmasından geçirir.identityData,certificateData,knownHostsData: satır içi dizeler veya SecretRef kullanır. OpenClaw bunları normal secrets çalışma zamanı anlık görüntüsü üzerinden çözer,0600izinleriyle geçici dosyalara yazar ve SSH oturumu bittiğinde siler.- Aynı öğe için hem
*Filehem*Dataayarlanmışsa, o SSH oturumu için*Datakazanır.
- Tohumlama adımından sonra OpenClaw dışında yapılan ana makine yerel düzenlemeleri, sandbox’ı yeniden oluşturana kadar uzakta görünmez.
openclaw sandbox recreate, kapsam başına uzak kökü siler ve sonraki kullanımda yerelden yeniden tohumlar.- Browser sandboxing, SSH arka ucunda desteklenmez.
sandbox.docker.*ayarları SSH arka ucunda geçerli değildir.
OpenShell arka ucu
OpenClaw’ın araçları OpenShell tarafından yönetilen uzak bir ortamda sandbox içine almasını 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 senkronize eder veexecsonrasında uzak çalışma alanını geri senkronize eder.remote: sandbox oluşturulduktan sonra OpenShell çalışma alanı kanonik olur. OpenClaw, uzak çalışma alanını bir kez yerel çalışma alanından tohumlar; sonra dosya araçları veexec, değişiklikleri geri senkronize etmeden doğrudan uzak sandbox üzerinde çalışır.
- OpenClaw, OpenShell’den
openshell sandbox ssh-config <name>ile sandbox’a özgü SSH yapılandırmasını 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. - Yaşam döngüsü yalnızca
mirrormodunda farklıdır:execöncesinde yerelden uzağa senkronizasyon, sonrasında geri senkronizasyon.
- sandbox browser henüz desteklenmiyor
sandbox.docker.binds, OpenShell arka ucunda desteklenmiyorsandbox.docker.*altındaki Docker’a özgü çalışma zamanı ayarları yalnızca Docker arka ucunda geçerlidir
Çalışma alanı modları
OpenShell’in iki çalışma alanı modeli vardır. Uygulamada 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 senkronize eder.execsonrasında OpenClaw uzak çalışma alanını yerel çalışma alanına geri senkronize eder.- Dosya araçları yine sandbox köprüsü üzerinden çalışır, ancak turlar arasında doğruluk kaynağı yerel çalışma alanı olarak kalır.
- OpenClaw dışında dosyaları yerel olarak düzenliyor ve bu değişikliklerin sandbox’ta otomatik görünmesini istiyorsanız
- OpenShell sandbox’ının olabildiğince Docker arka ucuna benzer davranmasını istiyorsanız
- Her
execturundan sonra ana makine çalışma alanının sandbox yazılarını yansıtmasını istiyorsanız
execöncesi ve sonrası ek senkronizasyon maliyeti
remote
OpenShell çalışma alanının kanonik olmasını istiyorsanız plugins.entries.openshell.config.mode: "remote" kullanın.
Davranış:
- Sandbox ilk kez oluşturulduğunda OpenClaw uzak çalışma alanını bir kez yerel çalışma alanından tohumlar.
- Bundan sonra
exec,read,write,editveapply_patchdoğrudan uzak OpenShell çalışma alanında çalışır. - OpenClaw, uzaktaki değişiklikleri
execsonrasında yerel çalışma alanına geri senkronize etmez. - İstem zamanındaki medya okumaları yine çalışır çünkü dosya ve medya araçları yerel ana makine yolunu varsaymak yerine sandbox köprüsünden 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ı tekrar yerel çalışma alanından tohumlanır.
scope: "agent"veyascope: "shared"ile bu uzak çalışma alanı aynı kapsamta paylaşılır.
- sandbox esas olarak uzak OpenShell tarafında yaşamalıysa
- tur başına daha düşük senkronizasyon ek yükü istiyorsanız
- ana makine yerel düzenlemelerinin sessizce uzaktaki sandbox durumunun üzerine 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, OpenShell çalışma zamanlarını Docker çalışma zamanlarıyla birlikte gösteriropenclaw sandbox recreate, mevcut çalışma zamanını siler ve OpenClaw’ın sonraki kullanımda yeniden oluşturmasına izin verir- budama mantığı da arka uç farkındadır
remote modunda yeniden oluşturma özellikle önemlidir:
- recreate, 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 modunda recreate esas olarak uzak yürütme ortamını sıfırlar;
çünkü zaten kanonik olan yerel çalışma alanıdır.
Çalışma alanı erişimi
agents.defaults.sandbox.workspaceAccess, sandbox’ın neleri görebileceğini denetler:
"none"(varsayılan): araçlar~/.openclaw/sandboxesaltında bir sandbox çalışma alanı görür."ro": ajan çalışma alanını/agentaltında salt okunur bağlar (write/edit/apply_patchdevre dışı kalır)."rw": ajan çalışma alanını/workspacealtında okuma/yazma olarak bağlar.
mirrormodu,execturları arasında yine yerel çalışma alanını kanonik kaynak olarak kullanırremotemodu, ilk tohumlamadan sonra uzak OpenShell çalışma alanını kanonik kaynak olarak kullanırworkspaceAccess: "ro"ve"none"yine aynı şekilde yazma davranışını sınırlar
media/inbound/*).
Skills notu: read aracı sandbox köküne bağlıdır. workspaceAccess: "none" ile
OpenClaw uygun Skills öğelerini sandbox çalışma alanına (.../skills) yansıtır
ki okunabilsinler. "rw" ile çalışma alanı skills dosyaları
/workspace/skills altında 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 ajan başına bind’lar birleştirilir (değiştirilmez). scope: "shared" altında ajan başına bind’lar yok sayılır.
agents.defaults.sandbox.browser.binds, ek ana makine dizinlerini yalnızca sandbox browser kapsayıcısına bağlar.
- Ayarlandığında (
[]dahil), browser kapsayıcısı içinagents.defaults.sandbox.docker.bindsdeğerinin yerini alır. - Atlandığında browser kapsayıcısı geriye dönük uyumluluk için
agents.defaults.sandbox.docker.bindsdeğerine geri döner.
- Bind’lar sandbox dosya sistemini atlar: ayarladığınız kipte (
:roveya:rw) ana makine yollarını açığa çıkarırlar. - 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 normalize eder, sonra engellenen yolları ve izin verilen kökleri yeniden kontrol etmeden önce bunu en derin mevcut üst öğe üzerinden tekrar çözer.
- Bu, son yaprak henüz mevcut olmasa bile symlink üst öğe kaçışlarının yine kapalı başarısız olacağı anlamına gelir. Örnek:
/workspace/run-link/new-file,run-linkoraya işaret ediyorsa yine/var/run/...olarak çözülür. - İzin verilen kaynak kökleri de aynı şekilde kanonikleştirilir; bu nedenle yalnızca symlink çözümlemesinden önce izin listesi içinde gibi görünen bir yol yine
outside allowed rootsolarak reddedilir. - Hassas bağlamalar (gizli değerler, SSH anahtarları, hizmet kimlik bilgileri) kesinlikle gerekmedikçe
:roolmalıdır. - Çalışma alanına yalnızca okuma erişimi gerekiyorsa
workspaceAccess: "ro"ile birleştirin; bind kipleri bağımsız kalır. - Bind’ların araç ilkesi ve elevated exec ile nasıl etkileştiği için bkz. Sandbox vs Tool Policy vs Elevated.
İmajlar + kurulum
Varsayılan Docker imajı:openclaw-sandbox:bookworm-slim
Bir kez oluşturun:
sandbox.docker.setupCommand ile yükleyin (ağ çıkışı + yazılabilir kök +
root kullanıcı gerektirir).
Daha işlevsel ve yaygın araçlara sahip bir sandbox imajı istiyorsanız (örneğin
curl, jq, nodejs, python3, git) şunu oluşturun:
agents.defaults.sandbox.docker.image değerini
openclaw-sandbox-common:bookworm-slim olarak ayarlayın.
Sandbox browser imajı:
agents.defaults.sandbox.docker.network ile geçersiz kılın.
Paketlenmiş sandbox browser imajı ayrıca kapsayıcılı iş yükleri için
ihtiyatlı Chromium başlangıç varsayılanları uygular. Mevcut 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 sertleştirme 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/browser özellikleri gerektiriyorsaOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0olarak ayarlayın. --disable-extensionsvarsayılan olarak etkindir ve eklentiye bağımlı akışlar içinOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0ile kapatılabilir.--renderer-process-limit=2,OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>ile denetlenir;0, Chromium’un varsayılanını korur.
browser.extraArgs kullanın.
Güvenlik varsayılanları:
network: "host"engellenir.network: "container:<id>"varsayılan olarak engellenir (namespace join atlatma riski).- Break-glass geçersiz kılma:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh, sandbox 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 env
başvurusu: Docker.
setupCommand (bir kerelik 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 ile yürütülür.
Yollar:
- Genel:
agents.defaults.sandbox.docker.setupCommand - Ajan başına:
agents.list[].sandbox.docker.setupCommand
- Varsayılan
docker.networkdeğeri"none"’dır (çıkış yok), bu yüzden paket kurulumları başarısız olur. docker.network: "container:<id>",dangerouslyAllowContainerNamespaceJoin: truegerektirir ve yalnızca break-glass içindir.readOnlyRoot: trueyazmaları engeller;readOnlyRoot: falseayarlayın veya özel bir imaj hazırlayın.- Paket kurulumları için
userroot olmalıdır (useralanını atlayın veyauser: "0:0"ayarlayın). - Sandbox
exec, ana makineprocess.envdeğerini devralmaz. Skill API anahtarları içinagents.defaults.sandbox.docker.env(veya özel bir imaj) kullanın.
Araç ilkesi + kaçış yolları
Araç izin/verme reddetme ilkeleri sandbox kurallarından önce yine uygulanır. Bir araç genel olarak veya ajan başına reddedilmişse sandboxing onu geri getirmez.tools.elevated, exec komutunu sandbox dışında çalıştıran açık bir kaçış yoludur (gateway varsayılan, exec hedefi node olduğunda node).
/exec yönergeleri yalnızca yetkili gönderenler için geçerlidir ve oturum başına kalıcıdır; exec işlevini kesin olarak kapatmak için
araç ilkesi reddini kullanın (bkz. Sandbox vs Tool Policy vs Elevated).
Hata ayıklama:
- Etkin sandbox 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. Sandbox vs Tool Policy vs Elevated. Sıkı tutun.
Çoklu ajan geçersiz kılmaları
Her ajan 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.
Asgari 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 — ajan başına geçersiz kılmalar ve öncelik
- Security