Перейти к основному содержанию
Каждый агент в многоагентной конфигурации может переопределять глобальную политику песочницы и инструментов. На этой странице описаны настройки для отдельных агентов, правила приоритета и примеры.

Песочница

Бэкенды и режимы — полный справочник по песочнице.

Песочница, политика инструментов и повышенный режим

Отладка вопроса «почему это заблокировано?»

Повышенный режим

Повышенный exec для доверенных отправителей.
Аутентификация ограничена областью агента: у каждого агента есть собственное хранилище аутентификации agentDir в ~/.openclaw/agents/<agentId>/agent/auth-profiles.json. Никогда не переиспользуйте agentDir между агентами. Агенты могут читать профили аутентификации агента по умолчанию/главного агента, если у них нет локального профиля, но токены обновления OAuth не клонируются в хранилища вторичных агентов. Если вы копируете учетные данные вручную, копируйте только переносимые статические профили api_key или token.

Примеры конфигурации

{
  "agents": {
    "list": [
      {
        "id": "main",
        "default": true,
        "name": "Personal Assistant",
        "workspace": "~/.openclaw/workspace",
        "sandbox": { "mode": "off" }
      },
      {
        "id": "family",
        "name": "Family Bot",
        "workspace": "~/.openclaw/workspace-family",
        "sandbox": {
          "mode": "all",
          "scope": "agent"
        },
        "tools": {
          "allow": ["read", "message"],
          "deny": ["exec", "write", "edit", "apply_patch", "process", "browser"],
          "message": {
            "crossContext": {
              "allowWithinProvider": false,
              "allowAcrossProviders": false
            }
          }
        }
      }
    ]
  },
  "bindings": [
    {
      "agentId": "family",
      "match": {
        "provider": "whatsapp",
        "accountId": "*",
        "peer": {
          "kind": "group",
          "id": "120363424282127706@g.us"
        }
      }
    }
  ]
}
Результат:
  • агент main: работает на хосте, полный доступ к инструментам.
  • агент family: работает в Docker (один контейнер на агента), доступны только read и отправка сообщений в текущей беседе.
{
  "agents": {
    "list": [
      {
        "id": "personal",
        "workspace": "~/.openclaw/workspace-personal",
        "sandbox": { "mode": "off" }
      },
      {
        "id": "work",
        "workspace": "~/.openclaw/workspace-work",
        "sandbox": {
          "mode": "all",
          "scope": "shared",
          "workspaceRoot": "/tmp/work-sandboxes"
        },
        "tools": {
          "allow": ["read", "write", "apply_patch", "exec"],
          "deny": ["browser", "gateway", "discord"]
        }
      }
    ]
  }
}
{
  "tools": { "profile": "coding" },
  "agents": {
    "list": [
      {
        "id": "support",
        "tools": { "profile": "messaging", "allow": ["slack"] }
      }
    ]
  }
}
Результат:
  • агенты по умолчанию получают инструменты для программирования.
  • агент support работает только с сообщениями (+ инструмент Slack).
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "scope": "session"
      }
    },
    "list": [
      {
        "id": "main",
        "workspace": "~/.openclaw/workspace",
        "sandbox": {
          "mode": "off"
        }
      },
      {
        "id": "public",
        "workspace": "~/.openclaw/workspace-public",
        "sandbox": {
          "mode": "all",
          "scope": "agent"
        },
        "tools": {
          "allow": ["read"],
          "deny": ["exec", "write", "edit", "apply_patch"]
        }
      }
    ]
  }
}

Приоритет конфигурации

Когда существуют и глобальные (agents.defaults.*), и агентские (agents.list[].*) конфигурации:

Конфигурация песочницы

Настройки конкретного агента переопределяют глобальные:
agents.list[].sandbox.mode > agents.defaults.sandbox.mode
agents.list[].sandbox.scope > agents.defaults.sandbox.scope
agents.list[].sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRoot
agents.list[].sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccess
agents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*
agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*
agents.list[].sandbox.prune.* > agents.defaults.sandbox.prune.*
agents.list[].sandbox.{docker,browser,prune}.* переопределяет agents.defaults.sandbox.{docker,browser,prune}.* для этого агента (игнорируется, когда область песочницы разрешается в "shared").

Ограничения инструментов

Порядок фильтрации:
1

Профиль инструментов

tools.profile или agents.list[].tools.profile.
2

Профиль инструментов провайдера

tools.byProvider[provider].profile или agents.list[].tools.byProvider[provider].profile.
3

Глобальная политика инструментов

tools.allow / tools.deny.
4

Политика инструментов провайдера

tools.byProvider[provider].allow/deny.
5

Политика инструментов конкретного агента

agents.list[].tools.allow/deny.
6

Политика провайдера агента

agents.list[].tools.byProvider[provider].allow/deny.
7

Политика инструментов песочницы

tools.sandbox.tools или agents.list[].tools.sandbox.tools.
8

Политика инструментов субагента

tools.subagents.tools, если применимо.
  • Каждый уровень может дополнительно ограничивать инструменты, но не может снова разрешить инструменты, запрещенные на предыдущих уровнях.
  • Если задано agents.list[].tools.sandbox.tools, оно заменяет tools.sandbox.tools для этого агента.
  • Если задано agents.list[].tools.profile, оно переопределяет tools.profile для этого агента.
  • Ключи инструментов провайдера принимают либо provider (например, google-antigravity), либо provider/model (например, openai/gpt-5.4).
Если любой явный список разрешений в этой цепочке оставляет запуск без доступных для вызова инструментов, OpenClaw останавливается до отправки промпта модели. Это сделано намеренно: агент, настроенный с отсутствующим инструментом, например agents.list[].tools.allow: ["query_db"], должен явно завершаться ошибкой, пока не будет включен Plugin, регистрирующий query_db, а не продолжать работу как агент только с текстом.
Политики инструментов поддерживают сокращения group:*, которые раскрываются в несколько инструментов. Полный список см. в разделе Группы инструментов. Переопределения повышенного режима для отдельных агентов (agents.list[].tools.elevated) могут дополнительно ограничивать повышенный exec для конкретных агентов. Подробнее см. в разделе Повышенный режим.

Миграция с одного агента

{
  "agents": {
    "defaults": {
      "workspace": "~/.openclaw/workspace",
      "sandbox": {
        "mode": "non-main"
      }
    }
  },
  "tools": {
    "sandbox": {
      "tools": {
        "allow": ["read", "write", "apply_patch", "exec"],
        "deny": []
      }
    }
  }
}
Устаревшие конфигурации agent.* мигрируются через openclaw doctor; в дальнейшем предпочитайте agents.defaults + agents.list.

Примеры ограничений инструментов

{
  "tools": {
    "allow": ["read"],
    "deny": ["exec", "write", "edit", "apply_patch", "process"]
  }
}

Распространенная ошибка: “non-main”

agents.defaults.sandbox.mode: "non-main" основан на session.mainKey (по умолчанию "main"), а не на идентификаторе агента. Сеансы групп/каналов всегда получают собственные ключи, поэтому они считаются неосновными и будут запускаться в песочнице. Если вы хотите, чтобы агент никогда не запускался в песочнице, задайте agents.list[].sandbox.mode: "off".

Тестирование

После настройки мультиагентной песочницы и инструментов:
1

Проверьте разрешение агента

openclaw agents list --bindings
2

Проверьте контейнеры песочницы

docker ps --filter "name=openclaw-sbx-"
3

Проверьте ограничения инструментов

  • Отправьте сообщение, требующее ограниченных инструментов.
  • Убедитесь, что агент не может использовать запрещенные инструменты.
4

Отслеживайте журналы

tail -f "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/logs/gateway.log" | grep -E "routing|sandbox|tools"

Устранение неполадок

  • Проверьте, есть ли глобальный agents.defaults.sandbox.mode, который переопределяет это значение.
  • Конфигурация конкретного агента имеет приоритет, поэтому задайте agents.list[].sandbox.mode: "all".
  • Проверьте порядок фильтрации инструментов: глобальный → агент → песочница → субагент.
  • Каждый уровень может только дополнительно ограничивать, а не возвращать доступ.
  • Проверьте по журналам: [tools] filtering tools for agent:${agentId}.
  • Задайте scope: "agent" в конфигурации песочницы конкретного агента.
  • Значение по умолчанию — "session", при котором создается один контейнер на сеанс.

Связанные материалы