agents.defaults.sandbox или agents.list[].sandbox). Если песочница отключена, инструменты запускаются на хосте. Gateway остается на хосте; выполнение инструментов при включении запускается в изолированной песочнице.
Это не идеальная граница безопасности, но она существенно ограничивает доступ к файловой системе и процессам, когда модель делает что-то неудачное.
Что помещается в песочницу
- Выполнение инструментов (
exec,read,write,edit,apply_patch,processи т. д.). - Необязательный браузер в песочнице (
agents.defaults.sandbox.browser).
Sandboxed browser details
Sandboxed browser details
- По умолчанию браузер в песочнице запускается автоматически (гарантирует доступность CDP), когда он нужен инструменту браузера. Настраивается через
agents.defaults.sandbox.browser.autoStartиagents.defaults.sandbox.browser.autoStartTimeoutMs. - По умолчанию контейнеры браузера в песочнице используют выделенную сеть Docker (
openclaw-sandbox-browser) вместо глобальной сетиbridge. Настраивается черезagents.defaults.sandbox.browser.network. - Необязательный параметр
agents.defaults.sandbox.browser.cdpSourceRangeограничивает входящий CDP-доступ на границе контейнера с помощью CIDR-allowlist (например,172.21.0.1/32). - Доступ наблюдателя noVNC по умолчанию защищен паролем; OpenClaw выдает короткоживущий URL с токеном, который отдает локальную страницу начальной загрузки и открывает noVNC с паролем во фрагменте URL (не в query/header logs).
agents.defaults.sandbox.browser.allowHostControlпозволяет сессиям в песочнице явно обращаться к браузеру хоста.- Необязательные allowlist ограничивают
target: "custom":allowedControlUrls,allowedControlHosts,allowedControlPorts.
- Сам процесс Gateway.
- Любой инструмент, которому явно разрешено запускаться вне песочницы (например,
tools.elevated).- Elevated exec обходит песочницу и использует настроенный путь выхода (
gatewayпо умолчанию илиnode, когда цель exec —node). - Если песочница отключена,
tools.elevatedне меняет выполнение (оно уже на хосте). См. Elevated Mode.
- Elevated exec обходит песочницу и использует настроенный путь выхода (
Режимы
agents.defaults.sandbox.mode управляет тем, когда используется песочница:
- off
- non-main
- all
Без песочницы.
Область действия
agents.defaults.sandbox.scope управляет тем, сколько контейнеров создается:
"agent"(по умолчанию): один контейнер на агента."session": один контейнер на сессию."shared": один контейнер, общий для всех сессий в песочнице.
Бэкенд
agents.defaults.sandbox.backend управляет тем, какая среда выполнения предоставляет песочницу:
"docker"(по умолчанию, когда песочница включена): локальная среда выполнения песочницы на базе Docker."ssh": универсальная удаленная среда выполнения песочницы на базе SSH."openshell": среда выполнения песочницы на базе OpenShell.
agents.defaults.sandbox.ssh. Конфигурация, специфичная для OpenShell, находится в plugins.entries.openshell.config.
Выбор бэкенда
| Docker | SSH | OpenShell | |
|---|---|---|---|
| Где запускается | Локальный контейнер | Любой хост с доступом по SSH | Управляемая песочница OpenShell |
| Настройка | scripts/sandbox-setup.sh | SSH-ключ + целевой хост | Plugin OpenShell включен |
| Модель workspace | Bind-mount или копирование | Удаленно-каноническая (однократное заполнение) | mirror или remote |
| Контроль сети | docker.network (по умолчанию: none) | Зависит от удаленного хоста | Зависит от OpenShell |
| Песочница браузера | Поддерживается | Не поддерживается | Пока не поддерживается |
| Bind mounts | docker.binds | N/A | N/A |
| Лучше всего для | Локальной разработки, полной изоляции | Переноса нагрузки на удаленную машину | Управляемых удаленных песочниц с необязательной двусторонней синхронизацией |
Бэкенд Docker
Песочница по умолчанию отключена. Если вы включаете песочницу и не выбираете бэкенд, OpenClaw использует бэкенд Docker. Он выполняет инструменты и браузеры в песочнице локально через сокет демона Docker (/var/run/docker.sock). Изоляция контейнера песочницы определяется пространствами имен Docker.
Чтобы предоставить GPU хоста песочницам Docker, задайте agents.defaults.sandbox.docker.gpus или переопределение на уровне агента agents.list[].sandbox.docker.gpus. Значение передается флагу Docker --gpus как отдельный аргумент, например "all" или "device=GPU-uuid", и требует совместимой среды выполнения хоста, такой как NVIDIA Container Toolkit.
Бэкенд SSH
Используйтеbackend: "ssh", когда хотите, чтобы OpenClaw помещал exec, файловые инструменты и чтение медиа в песочницу на произвольной машине с доступом по SSH.
How it works
How it works
- OpenClaw создает удаленный корень для каждой области действия в
sandbox.ssh.workspaceRoot. - При первом использовании после создания или пересоздания OpenClaw один раз заполняет этот удаленный workspace из локального workspace.
- После этого
exec,read,write,edit,apply_patch, чтение медиа из prompt и подготовка входящих медиа выполняются напрямую с удаленным workspace через SSH. - OpenClaw не синхронизирует удаленные изменения обратно в локальный workspace автоматически.
Authentication material
Authentication material
identityFile,certificateFile,knownHostsFile: используют существующие локальные файлы и передают их через конфигурацию OpenSSH.identityData,certificateData,knownHostsData: используют встроенные строки или SecretRefs. OpenClaw разрешает их через обычный snapshot среды выполнения секретов, записывает во временные файлы с0600и удаляет их по завершении SSH-сессии.- Если для одного и того же элемента заданы и
*File, и*Data, для этой SSH-сессии побеждает*Data.
Remote-canonical consequences
Remote-canonical consequences
Это удаленно-каноническая модель. Удаленный SSH workspace становится реальным состоянием песочницы после начального заполнения.
- Локальные изменения на хосте, сделанные вне OpenClaw после шага заполнения, не видны удаленно до пересоздания песочницы.
openclaw sandbox recreateудаляет удаленный корень для каждой области действия и при следующем использовании снова заполняет его из локального workspace.- Песочница браузера не поддерживается на бэкенде SSH.
- Настройки
sandbox.docker.*не применяются к бэкенду SSH.
Бэкенд OpenShell
Используйтеbackend: "openshell", когда хотите, чтобы OpenClaw помещал инструменты в песочницу в удаленной среде, управляемой OpenShell. Полное руководство по настройке, справочник конфигурации и сравнение режимов workspace см. на отдельной странице OpenShell.
OpenShell повторно использует тот же основной SSH-транспорт и мост удаленной файловой системы, что и универсальный бэкенд SSH, и добавляет специфичный для OpenShell жизненный цикл (sandbox create/get/delete, sandbox ssh-config) плюс необязательный режим workspace mirror.
mirror(по умолчанию): локальный workspace остается каноническим. OpenClaw синхронизирует локальные файлы в OpenShell перед exec и синхронизирует удаленный workspace обратно после exec.remote: workspace OpenShell становится каноническим после создания песочницы. OpenClaw один раз заполняет удаленный workspace из локального workspace, затем файловые инструменты и exec выполняются напрямую с удаленной песочницей без синхронизации изменений обратно.
Сведения об удаленном транспорте
Сведения об удаленном транспорте
- OpenClaw запрашивает у OpenShell SSH-конфигурацию для конкретной песочницы через
openshell sandbox ssh-config <name>. - Ядро записывает эту SSH-конфигурацию во временный файл, открывает SSH-сеанс и повторно использует тот же удаленный мост файловой системы, который используется
backend: "ssh". - В режиме
mirrorотличается только жизненный цикл: синхронизация локального состояния с удаленным перед exec, затем обратная синхронизация после exec.
Текущие ограничения OpenShell
Текущие ограничения OpenShell
- браузер песочницы пока не поддерживается
sandbox.docker.bindsне поддерживается в бэкенде OpenShell- параметры времени выполнения, специфичные для Docker, в
sandbox.docker.*по-прежнему применяются только к бэкенду Docker
Режимы рабочей области
У OpenShell есть две модели рабочей области. На практике это самая важная часть.- mirror (локальная каноническая)
- remote (каноническая OpenShell)
Используйте
plugins.entries.openshell.config.mode: "mirror", если хотите, чтобы локальная рабочая область оставалась канонической.Поведение:- Перед
execOpenClaw синхронизирует локальную рабочую область с песочницей OpenShell. - После
execOpenClaw синхронизирует удаленную рабочую область обратно с локальной рабочей областью. - Файловые инструменты по-прежнему работают через мост песочницы, но локальная рабочая область остается источником истины между ходами.
- вы редактируете файлы локально вне OpenClaw и хотите, чтобы эти изменения автоматически появлялись в песочнице
- вы хотите, чтобы песочница OpenShell вела себя как можно ближе к бэкенду Docker
- вы хотите, чтобы рабочая область хоста отражала записи песочницы после каждого хода exec
mirror, если считаете песочницу временной средой выполнения. Выберите remote, если считаете песочницу настоящей рабочей областью.
Жизненный цикл OpenShell
Песочницы OpenShell по-прежнему управляются через обычный жизненный цикл песочницы:openclaw sandbox listпоказывает как среды выполнения OpenShell, так и среды выполнения Dockeropenclaw sandbox recreateудаляет текущую среду выполнения и позволяет OpenClaw создать ее заново при следующем использовании- логика очистки также учитывает бэкенд
remote повторное создание особенно важно:
- повторное создание удаляет каноническую удаленную рабочую область для этой области действия
- следующее использование заполняет свежую удаленную рабочую область из локальной рабочей области
mirror повторное создание в основном сбрасывает удаленную среду выполнения, потому что локальная рабочая область все равно остается канонической.
Доступ к рабочей области
agents.defaults.sandbox.workspaceAccess управляет тем, что песочница может видеть:
- none (по умолчанию)
- ro
- rw
Инструменты видят рабочую область песочницы в
~/.openclaw/sandboxes.- режим
mirrorпо-прежнему использует локальную рабочую область как канонический источник между ходами exec - режим
remoteиспользует удаленную рабочую область OpenShell как канонический источник после начального заполнения workspaceAccess: "ro"и"none"по-прежнему ограничивают поведение записи тем же образом
media/inbound/*).
Примечание о Skills: инструмент
read привязан к корню песочницы. С workspaceAccess: "none" OpenClaw зеркалирует подходящие skills в рабочую область песочницы (.../skills), чтобы их можно было читать. С "rw" skills рабочей области доступны для чтения из /workspace/skills, а подходящие управляемые, встроенные или plugin skills материализуются в сгенерированный путь только для чтения /workspace/.openclaw/sandbox-skills/skills.Пользовательские bind-монтирования
agents.defaults.sandbox.docker.binds монтирует дополнительные каталоги хоста в контейнер. Формат: host:container:mode (например, "/home/user/source:/source:rw").
Глобальные и агентные bind-монтирования объединяются (а не заменяются). При scope: "shared" агентные bind-монтирования игнорируются.
agents.defaults.sandbox.browser.binds монтирует дополнительные каталоги хоста только в контейнер браузера песочницы.
- Если задано (включая
[]), это заменяетagents.defaults.sandbox.docker.bindsдля контейнера браузера. - Если не указано, контейнер браузера откатывается к
agents.defaults.sandbox.docker.binds(обратно совместимо).
Образы и настройка
Образ Docker по умолчанию:openclaw-sandbox:bookworm-slim
Исходный checkout и установка npmВспомогательные скрипты
scripts/sandbox-setup.sh, scripts/sandbox-common-setup.sh и scripts/sandbox-browser-setup.sh доступны только при запуске из исходного checkout. Они не включены в пакет npm.Если вы установили OpenClaw через npm install -g openclaw, используйте приведенные ниже встроенные команды docker build.Соберите образ по умолчанию
Из исходного checkout:Из установки npm (исходный checkout не нужен):Образ по умолчанию не включает Node. Если Skill требуется Node (или другие среды выполнения), либо встроите собственный образ, либо установите через
sandbox.docker.setupCommand (требуется исходящий сетевой доступ + записываемый корень + пользователь root).OpenClaw не подставляет незаметно обычный debian:bookworm-slim, когда openclaw-sandbox:bookworm-slim отсутствует. Запуски песочницы, нацеленные на образ по умолчанию, быстро завершаются ошибкой с инструкцией по сборке, пока вы его не соберете, потому что встроенный образ содержит python3 для вспомогательных средств записи/редактирования в песочнице.Необязательно: соберите общий образ
Для более функционального образа песочницы с распространенными инструментами (например, Из установки npm сначала соберите образ по умолчанию (см. выше), затем соберите общий образ поверх него, используя
curl, jq, Node 24, pnpm, python3 и git):Из исходного checkout:scripts/docker/sandbox/Dockerfile.common из репозитория.Затем задайте agents.defaults.sandbox.docker.image значение openclaw-sandbox-common:bookworm-slim.Необязательно: соберите образ браузера песочницы
Из исходного checkout:Из установки npm соберите образ с использованием
scripts/docker/sandbox/Dockerfile.browser из репозитория.agents.defaults.sandbox.docker.network.
Значения Chromium по умолчанию для браузера песочницы
Значения Chromium по умолчанию для браузера песочницы
Встроенный образ браузера песочницы также применяет консервативные стартовые параметры Chromium для контейнеризированных рабочих нагрузок. Текущие значения контейнера по умолчанию включают:
--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=2--no-sandbox, когда включенnoSandbox.- Три флага усиления графической безопасности (
--disable-3d-apis,--disable-software-rasterizer,--disable-gpu) необязательны и полезны, когда контейнеры не имеют поддержки GPU. ЗадайтеOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0, если вашей рабочей нагрузке требуется WebGL или другие возможности 3D/браузера. --disable-extensionsвключен по умолчанию и может быть отключен с помощьюOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0для потоков, зависящих от расширений.--renderer-process-limit=2управляется черезOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>, где0сохраняет значение Chromium по умолчанию.
browser.extraArgs, чтобы добавить дополнительные стартовые флаги.Сетевые настройки безопасности по умолчанию
Сетевые настройки безопасности по умолчанию
network: "host"заблокирован.network: "container:<id>"заблокирован по умолчанию (риск обхода через присоединение к пространству имен).- Аварийное переопределение:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh может подготовить конфигурацию песочницы. Задайте OPENCLAW_SANDBOX=1 (или true/yes/on), чтобы включить этот путь. Расположение сокета можно переопределить через OPENCLAW_DOCKER_SOCKET. Полная настройка и справочник переменных окружения: Docker.
setupCommand (однократная настройка контейнера)
setupCommand запускается один раз после создания контейнера песочницы (не при каждом запуске). Он выполняется внутри контейнера через sh -lc.
Пути:
- Глобально:
agents.defaults.sandbox.docker.setupCommand - Для отдельного агента:
agents.list[].sandbox.docker.setupCommand
Распространенные ошибки
Распространенные ошибки
- Значение
docker.networkпо умолчанию —"none"(без исходящего доступа), поэтому установка пакетов завершится ошибкой. docker.network: "container:<id>"требуетdangerouslyAllowContainerNamespaceJoin: trueи предназначен только для аварийных случаев.readOnlyRoot: trueзапрещает запись; задайтеreadOnlyRoot: falseили соберите собственный образ.- Для установки пакетов
userдолжен быть root (не указывайтеuserили задайтеuser: "0:0"). - Выполнение в песочнице не наследует
process.envхоста. Используйтеagents.defaults.sandbox.docker.env(или собственный образ) для API-ключей Skills. - Значения в
agents.defaults.sandbox.docker.envпередаются как явные переменные окружения контейнера Docker. Любой, у кого есть доступ к демону Docker, может просмотреть их с помощью команд метаданных Docker, таких какdocker inspect. Используйте собственный образ, смонтированный файл секрета или другой путь доставки секретов, если такое раскрытие метаданных неприемлемо.
Политика инструментов и аварийные обходы
Политики разрешения/запрета инструментов по-прежнему применяются до правил песочницы. Если инструмент запрещен глобально или для отдельного агента, песочница не вернет его обратно.tools.elevated — явный аварийный обход, который запускает exec вне песочницы (gateway по умолчанию или node, когда цель exec — node). Директивы /exec применяются только для авторизованных отправителей и сохраняются на уровне сессии; чтобы жестко отключить exec, используйте запрет в политике инструментов (см. Песочница, политика инструментов и Elevated).
Отладка:
- Используйте
openclaw sandbox explain, чтобы проверить эффективный режим песочницы, политику инструментов и ключи конфигурации для исправления. - См. Песочница, политика инструментов и Elevated для ментальной модели «почему это заблокировано?».
Переопределения для нескольких агентов
Каждый агент может переопределять песочницу и инструменты:agents.list[].sandbox и agents.list[].tools (плюс agents.list[].tools.sandbox.tools для политики инструментов песочницы). См. Песочница и инструменты для нескольких агентов, чтобы узнать порядок приоритета.
Минимальный пример включения
Связанные материалы
- Песочница и инструменты для нескольких агентов — переопределения для отдельных агентов и порядок приоритета
- OpenShell — настройка управляемого бэкенда песочницы, режимы рабочей области и справочник конфигурации
- Конфигурация песочницы
- Песочница, политика инструментов и Elevated — отладка «почему это заблокировано?»
- Безопасность