openclaw policy
openclaw policy предоставляется встроенным Plugin Policy. Policy — это
корпоративный слой соответствия поверх существующих настроек OpenClaw. Он не добавляет
вторую систему конфигурации. policy.jsonc определяет заданные требования,
OpenClaw наблюдает активную рабочую область как доказательство, а проверки состояния политики
сообщают о расхождениях через doctor --lint. Итоговый сигнал соответствия — чистый
запуск doctor --lint; политика добавляет findings в эту общую поверхность lint
вместо создания отдельного шлюза состояния.
Policy сейчас управляет настроенными каналами, MCP-серверами, поставщиками моделей,
состоянием сетевой защиты от SSRF, состоянием доступа ingress/каналов, состоянием экспозиции Gateway, состоянием рабочей области агента,
состоянием обработки данных, состоянием поставщика секретов/профиля auth в конфигурации OpenClaw и управляемыми
объявлениями инструментов. Например, IT или оператор рабочей области может зафиксировать, что Telegram
не является одобренным поставщиком канала, ограничить MCP-серверы и ссылки на модели
одобренными записями, требовать, чтобы доступ fetch/browser к частной сети оставался
отключенным, требовать, чтобы изоляция сессий личных сообщений и состояние ingress каналов
оставались в проверенных пределах, требовать, чтобы bind/auth/HTTP-экспозиция Gateway оставалась в проверенных
пределах, требовать, чтобы доступ агента к рабочей области и запреты инструментов оставались в проверенном
состоянии, требовать, чтобы SecretRefs конфигурации OpenClaw использовали управляемых поставщиков, требовать,
чтобы профили auth конфигурации содержали метаданные поставщика/режима, требовать, чтобы управляемые инструменты
содержали метаданные риска и чувствительности, требовать редактирования чувствительного логирования, запрещать
захват содержимого телеметрии, требовать обслуживание срока хранения сессий, запрещать индексирование памяти
транскриптов сессий, а затем использовать doctor --lint как общий
шлюз соответствия.
Используйте policy, когда рабочей области нужно устойчивое утверждение вроде «эти каналы
не должны быть включены» или «управляемые инструменты должны объявлять метаданные одобрения», а также
повторяемый способ доказать, что OpenClaw по-прежнему соответствует этому утверждению. Используйте
только обычную конфигурацию и документацию рабочей области, когда вам нужно лишь локальное поведение и
не нужны findings политики или вывод аттестации.
Быстрый старт
Включите встроенный Plugin Policy перед первым использованием:policy.jsonc отсутствует, чтобы
doctor мог сообщить об отсутствующем артефакте.
Policy задается вручную, а не генерируется из текущих настроек пользователя. Минимальная
policy для каналов, MCP-серверов, поставщиков моделей, сетевого состояния, доступа ingress/каналов, экспозиции Gateway,
состояния рабочей области агента, состояния настроенной sandbox runtime, состояния обработки данных
OpenClaw, состояния поставщика секретов/профиля auth конфигурации, состояния файла одобрений exec
и метаданных инструментов выглядит так:
channels.*,
mcp.servers.*, models.providers.*, выбранные ссылки на модели агентов, настройки сетевого SSRF,
область сессий личных сообщений, политику DM канала, групповую политику канала,
шлюзы упоминаний канала/группы, состояние bind/auth/Control UI/Tailscale/remote/HTTP Gateway,
состояние доступа рабочей области sandbox агента в конфигурации OpenClaw и запретов инструментов,
состояние конфигурации обработки данных, происхождение поставщика секретов
и SecretRef в конфигурации, метаданные профиля auth конфигурации, настроенное
глобальное/покомпонентное состояние инструментов агента и объявления TOOLS.md как доказательство, затем
сообщает о наблюдаемом состоянии, которое не соответствует требованиям. Если policy запрещает не-loopback
bind Gateway, опускайте gateway.bind только тогда, когда вы
готовы проверять runtime default; задайте gateway.bind=loopback для
строгого соответствия конфигурации. Для состояния агента только для чтения настройте режим sandbox
в применимых defaults или агенте и задайте workspaceAccess как none или
ro; опущенный или off режим sandbox не удовлетворяет policy read-only/no-write.
agents.workspace.denyTools поддерживает exec, process, write,
edit и apply_patch; конфигурация OpenClaw group:fs покрывает инструменты изменения файлов,
а group:runtime покрывает shell/process-инструменты. Policy состояния инструментов наблюдает
tools.profile, tools.allow, tools.alsoAllow, tools.deny,
tools.fs.workspaceOnly, tools.exec.security, tools.exec.ask,
tools.exec.host, tools.elevated.enabled и те же переопределения на уровне агента
agents.list[].tools.*. Policy одобрений exec читает именованный
продуктовый артефакт exec-approvals.json только при наличии правила execApprovals;
доказательство фиксирует defaults, состояние на уровне агента и шаблоны allowlist
без socket tokens или текста последней использованной команды. Policy не принуждает вызовы инструментов
во время runtime. Доказательства секретов фиксируют
состояние поставщика/источника и метаданные SecretRef, но никогда не сырые значения секретов. Policy
не читает и не аттестует хранилища учетных данных на уровне агента, такие как auth-profiles.json;
эти хранилища остаются во владении существующих потоков auth и учетных данных.
Доказательства обработки данных — это только состояние на уровне конфигурации: они проверяют настроенный
режим редактирования, переключатели захвата содержимого телеметрии, режим обслуживания сессий и
настройки индексирования памяти транскриптов сессий. Они не проверяют сырые логи,
экспорты телеметрии, содержимое транскриптов, файлы памяти и не доказывают, что персональные
данные или секреты отсутствуют.
Справочник правил policy
Каждое поле policy ниже необязательно. Проверка выполняется только тогда, когда соответствующее правило присутствует вpolicy.jsonc. Наблюдаемое состояние — это существующая конфигурация OpenClaw или
метаданные рабочей области; policy сообщает о расхождениях, но не переписывает runtime-поведение,
если путь исправления не доступен явно и не включен.
Файлы policy строгие: неподдерживаемые секции или ключи правил сообщаются как
policy/policy-jsonc-invalid, а не игнорируются.
Оверлеи policy сохраняют широкие правила верхнего уровня глобальными, затем позволяют именованным блокам scope
добавлять более строгие обычные секции policy для явных селекторов. Имя scope — это
только описательная группа; сопоставление использует значения селектора внутри scope.
Оверлей аддитивен: глобальные утверждения продолжают выполняться, а scoped-утверждение может создать
собственный finding для той же наблюдаемой конфигурации.
Scoped-оверлеи
Используйтеscopes.<scopeName>, когда одному набору агентов или каналов нужна более строгая
policy, чем базовый уровень верхнего уровня. Секции, scoped по агентам, используют agentIds, который
поддерживает tools.*, agents.workspace.*, sandbox.*, dataHandling.memory.*
и execApprovals.*. Ingress, scoped по каналам,
использует channelIds, который поддерживает ingress.channels.*. Неподдерживаемые
секции отклоняются, а не игнорируются. Если запись agentIds отсутствует
в agents.list[], OpenClaw оценивает scoped-правило относительно унаследованного
глобального/default-состояния для этого runtime agent id.
sandbox.containers.* применяется
к агенту, чей backend sandbox не может предоставить это поле, policy сообщает
policy/sandbox-container-posture-unobservable вместо того, чтобы считать утверждение
выполненным. Используйте отдельные scopes agentIds для групп агентов, которые используют разные
backends sandbox, и оставляйте неподдерживаемые правила контейнеров неустановленными или false для
групп, где эти поля нельзя наблюдать.
ingress.session.requireDmScope верхнего уровня остается глобальным, потому что
session.dmScope не является доказательством, атрибутируемым каналу.
| Селектор | Поддерживаемые разделы | Когда использовать |
|---|---|---|
agentIds | tools, agents.workspace, sandbox, dataHandling.memory и execApprovals | Одному или нескольким runtime-агентам нужны более строгие правила. |
channelIds | ingress.channels | Одному или нескольким каналам нужны более строгие правила входящего трафика. |
policy.jsonc, должна быть допустимой и принудительно применимой.
Каналы
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
channels.denyRules[].when.provider | Провайдер channels.* и состояние включения | Запретить настроенные каналы от провайдера, например telegram. |
channels.denyRules[].reason | Сообщение о находке и контекст подсказки по исправлению | Объяснить, почему провайдер запрещен. |
MCP-серверы
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
mcp.servers.allow | id mcp.servers.* | Требовать, чтобы каждый настроенный MCP-сервер был в списке разрешенных. |
mcp.servers.deny | id mcp.servers.* | Запретить конкретные id настроенных MCP-серверов. |
Провайдеры моделей
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
models.providers.allow | id models.providers.* и выбранные ссылки на модели | Требовать, чтобы настроенные провайдеры и выбранные ссылки на модели использовали одобренных провайдеров. |
models.providers.deny | id models.providers.* и выбранные ссылки на модели | Запретить настроенных провайдеров и выбранные ссылки на модели по id провайдера. |
Сеть
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
network.privateNetwork.allow | Лазейки обхода SSRF для частной сети | Установите false, чтобы требовать, чтобы доступ к частной сети оставался отключенным. |
Входящий трафик и доступ к каналам
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
ingress.session.requireDmScope | session.dmScope | Требовать проверенную область изоляции личных сообщений. |
ingress.channels.allowDmPolicies | channels.*.dmPolicy и устаревшие поля политики DM канала | Разрешать только проверенные политики каналов для личных сообщений. |
ingress.channels.denyOpenGroups | Политика входящего трафика канала, аккаунта и группы | Запретить открытый входящий трафик групп для настроенных каналов и аккаунтов. |
ingress.channels.requireMentionInGroups | Конфигурация шлюза упоминаний для канала, аккаунта, группы, guild и вложенных упоминаний | Требовать шлюзы упоминаний, когда входящий трафик групп открыт или ограничен упоминаниями. |
Gateway
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
gateway.exposure.allowNonLoopbackBind | gateway.bind | Установите false, чтобы требовать привязку Gateway к loopback. |
gateway.exposure.allowTailscaleFunnel | Положение Tailscale serve/funnel для Gateway | Установите false, чтобы запретить экспонирование Tailscale Funnel. |
gateway.auth.requireAuth | gateway.auth.mode | Установите true, чтобы отклонять отключенную аутентификацию Gateway. |
gateway.auth.requireExplicitRateLimit | gateway.auth.rateLimit | Установите true, чтобы требовать явную конфигурацию лимита скорости аутентификации. |
gateway.controlUi.allowInsecure | Небезопасные переключатели аутентификации/устройства/origin для Control UI | Установите false, чтобы запретить небезопасные переключатели экспонирования Control UI. |
gateway.remote.allow | Режим/конфигурация удаленного Gateway | Установите false, чтобы запретить режим удаленного Gateway. |
gateway.http.denyEndpoints | Конечные точки HTTP API Gateway | Запретить id конечных точек, такие как chatCompletions или responses. |
gateway.http.requireUrlAllowlists | Входные данные URL-fetch Gateway HTTP | Установите true, чтобы требовать списки разрешенных URL для входных данных URL-fetch. |
Рабочее пространство агента
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
agents.workspace.allowedAccess | agents.defaults.sandbox.workspaceAccess и agents.list[].sandbox.workspaceAccess | Разрешать только значения доступа к рабочему пространству песочницы, такие как none или ro. |
agents.workspace.denyTools | Глобальная и поагентная конфигурация запрета инструментов | Требовать запрета инструментов изменения рабочего пространства/runtime, таких как exec, process, write, edit или apply_patch. |
Положение песочницы
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
sandbox.requireMode | agents.defaults.sandbox.mode и поагентный режим | Разрешать только проверенные режимы песочницы, такие как all или non-main. |
sandbox.allowBackends | agents.defaults.sandbox.backend и поагентный backend | Разрешать только проверенные backend песочницы, такие как docker. |
sandbox.containers.denyHostNetwork | Сетевой режим песочницы/браузера на базе контейнера | Запретить сетевой режим хоста. |
sandbox.containers.denyContainerNamespaceJoin | Сетевой режим песочницы/браузера на базе контейнера | Запретить присоединение к пространству имен сети другого контейнера. |
sandbox.containers.requireReadOnlyMounts | Режим монтирования песочницы/браузера на базе контейнера | Требовать, чтобы точки монтирования были только для чтения. |
sandbox.containers.denyContainerRuntimeSocketMounts | Цели монтирования песочницы/браузера на базе контейнера | Запретить монтирование сокетов runtime контейнеров. |
sandbox.containers.denyUnconfinedProfiles | Положение профиля безопасности контейнера | Запретить неограниченные профили безопасности контейнера. |
sandbox.browser.requireCdpSourceRange | Диапазон источника CDP браузера песочницы | Требовать, чтобы экспонирование CDP браузера объявляло диапазон источника. |
sandbox.mode как неявное значение по умолчанию off, поэтому
sandbox.requireMode сообщает о новой или ненастроенной песочнице как находящейся вне
списка разрешенных, например ["all"].
Обработка данных
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
dataHandling.sensitiveLogging.requireRedaction | logging.redactSensitive | Установите true, чтобы отклонять logging.redactSensitive: "off". |
dataHandling.telemetry.denyContentCapture | diagnostics.otel.captureContent | Установите true, чтобы отклонять захват содержимого телеметрией. |
dataHandling.retention.requireSessionMaintenance | session.maintenance.mode | Установите true, чтобы требовать эффективный режим обслуживания сеансов enforce. |
dataHandling.memory.denySessionTranscriptIndexing | memory.qmd.sessions.enabled и agents.*.memorySearch.experimental.sessionMemory | Установите true, чтобы отклонять индексацию стенограмм сеансов в память. |
Секреты
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
secrets.requireManagedProviders | Config SecretRefs и объявления secrets.providers.* | Установите true, чтобы требовать, чтобы SecretRefs указывали на объявленных провайдеров. |
secrets.denySources | Источники провайдеров секретов и источники SecretRef | Запретить источники, такие как exec, file или другое настроенное имя источника. |
secrets.allowInsecureProviders | Флаги небезопасного положения провайдера секретов | Установите false, чтобы отклонять провайдеров, которые явно выбирают небезопасное положение. |
Подтверждения exec
Политика подтверждений exec наблюдает активный runtime-артефактexec-approvals.json.
По умолчанию это ~/.openclaw/exec-approvals.json; когда задан
OPENCLAW_STATE_DIR, Policy читает
$OPENCLAW_STATE_DIR/exec-approvals.json. Фактические правила положения, такие как
execApprovals.defaults.* или execApprovals.agents.*, требуют читаемых
доказательств из артефакта; отсутствующий или недопустимый артефакт сообщается как ненаблюдаемое доказательство,
а не становится best-effort прохождением проверки относительно синтетических runtime-значений по умолчанию. После того как
артефакт становится читаемым, пропущенные поля подтверждений наследуют runtime-значения по умолчанию: отсутствующее
defaults.security равно full, а отсутствующая безопасность агента наследует это
значение по умолчанию. Доказательства включают defaults, agents.* и
agents.*.allowlist[].pattern, а также необязательный argPattern, эффективное
положение autoAllowSkills и источник записи. Они не включают путь
сокета/токен, commandText, lastUsedCommand, разрешенные пути или метки времени.
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
execApprovals.requireFile | Путь активного runtime-артефакта exec-approvals.json | Установите true, чтобы требовать существования и разбора артефакта подтверждений. |
execApprovals.defaults.allowSecurity | defaults.security, по умолчанию full | Разрешать только утвержденные режимы безопасности подтверждений по умолчанию. |
execApprovals.agents.allowSecurity | agents.*.security, наследует значения по умолчанию | Разрешать только утвержденные эффективные режимы безопасности подтверждений для агента. |
execApprovals.agents.allowAutoAllowSkills | defaults.autoAllowSkills и agents.*.autoAllowSkills, наследуют runtime defaults | Установите false, чтобы требовать строгие ручные allowlist без неявного подтверждения CLI Skills. |
execApprovals.agents.allowlist.expected | Совокупность шаблона agents.*.allowlist[] и необязательных записей argPattern | Требовать, чтобы allowlist подтверждений совпадал с проверенным набором шаблонов. |
Профили аутентификации
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
auth.profiles.requireMetadata | Метаданные провайдера и режима auth.profiles.* | Требовать ключи метаданных, такие как provider и mode, в профилях аутентификации config. |
auth.profiles.allowModes | auth.profiles.*.mode | Разрешать только поддерживаемые режимы профиля аутентификации, такие как api_key, aws-sdk, oauth или token. |
Метаданные инструментов
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
tools.requireMetadata | Управляемые объявления TOOLS.md | Требовать, чтобы управляемые инструменты объявляли ключи метаданных, такие как risk, sensitivity или owner. |
Позиция инструментов
| Поле политики | Наблюдаемое состояние | Когда использовать |
|---|---|---|
tools.profiles.allow | tools.profile и agents.list[].tools.profile | Разрешать только ids профилей инструментов, такие как minimal, messaging или coding. |
tools.fs.requireWorkspaceOnly | tools.fs.workspaceOnly и переопределения tools.fs для агента | Установите true, чтобы требовать позицию filesystem-инструмента только в пределах workspace. |
tools.exec.allowSecurity | tools.exec.security и безопасность exec для агента | Разрешать только режимы безопасности exec, такие как deny или allowlist. |
tools.exec.requireAsk | tools.exec.ask и режим запроса exec для агента | Требовать позицию подтверждения, например always. |
tools.exec.allowHosts | tools.exec.host и маршрутизация exec host для агента | Разрешать только режимы маршрутизации exec host, такие как sandbox. |
tools.elevated.allow | tools.elevated.enabled и elevated-позиция для агента | Установите false, чтобы требовать, чтобы elevated-режим инструмента оставался отключенным. |
tools.alsoAllow.expected | tools.alsoAllow и tools.alsoAllow для агента | Требовать точные записи alsoAllow и сообщать об отсутствующих или неожиданных дополнительных разрешениях инструментов. |
tools.denyTools | tools.deny и agents.list[].tools.deny | Требовать, чтобы настроенные списки запрета инструментов включали ids или группы инструментов, такие как group:runtime и group:fs. |
policy check запускает только набор проверок политики и выводит доказательства,
findings и хэши аттестации. Те же findings также появляются в
openclaw doctor --lint, когда Policy plugin включен.
Сравните файл политики оператора с authored baseline-файлом политики:
policy compare сравнивает синтаксис файла политики с синтаксисом файла
политики. Он не проверяет runtime-состояние OpenClaw, доказательства, учетные
данные или секреты. Команда использует те же метаданные правил политики, которые
управляют scoped overlays: allowlist должны оставаться равными или более узкими,
denylist должны оставаться равными или более широкими, обязательные булевы
значения должны сохранять требуемое значение, упорядоченные строки должны
смещаться только к более ограничительному концу настроенного порядка, а точные
списки должны совпадать.
Файл baseline может быть политикой, authored организацией. Проверяемая политика
может использовать более строгие значения или добавлять дополнительные правила
политики. Проверяемое правило верхнего уровня также может удовлетворять scoped
baseline-правилу, когда оно столь же или более ограничительное, потому что
политика верхнего уровня применяется широко. Имена scope не обязаны совпадать;
scoped-сравнение привязано к значению селектора, такому как agentIds или
channelIds, и к проверяемому полю политики.
Пример чистого JSON-вывода compare сообщает только состояние сравнения файлов
политики:
policy check --json включает стабильные хэши, которые
оператор или supervisor может записать:
Настройка политики
Конфигурация политики находится вplugins.entries.policy.config.
| Настройка | Назначение |
|---|---|
enabled | Включить проверки политики даже до появления policy.jsonc. |
workspaceRepairs | Разрешить doctor --fix редактировать управляемые политикой настройки workspace. |
expectedHash | Необязательная hash-lock для утвержденного артефакта политики. |
expectedAttestationHash | Необязательная hash-lock для последней принятой чистой проверки политики. |
path | Расположение артефакта политики относительно workspace. |
plugins.entries.policy.config.enabled в false, чтобы отключить
проверки политики для workspace, оставив Plugin установленным.
Требования к метаданным инструментов authored в policy.jsonc с помощью
tools.requireMetadata, например ["risk", "sensitivity", "owner"].
Принятие состояния политики
Пример JSON-вывода:workspace.hash идентифицирует эту полезную нагрузку доказательств для проверенной области.
Хеш находок идентифицирует точный набор находок, возвращенный проверкой.
checkedAt фиксирует время выполнения оценки. Хеш аттестации идентифицирует
стабильное утверждение: хеш политики, хеш доказательств, хеш находок и то,
был ли результат чистым. Он намеренно не включает checkedAt, поэтому одно и то же
состояние политики создает одну и ту же аттестацию при повторных проверках. Вместе
они образуют аудиторский кортеж для этой проверки политики.
Если позже Gateway или супервизор использует политику, чтобы блокировать, одобрять или аннотировать
действие во время выполнения, он должен записывать хеш аттестации из последней чистой проверки политики.
checkedAt остается в выводе JSON для журналов аудита, но не является частью
стабильного хеша аттестации.
Используйте этот жизненный цикл при принятии состояния политики:
- Создайте или проверьте
policy.jsonc. - Запустите
openclaw policy check --json. - Если результат чистый, запишите
attestation.policy.hashкакexpectedHash. - Запишите
attestation.attestationHashкакexpectedAttestationHash. - Повторно запустите
openclaw doctor --lintв CI или релизных шлюзах.
expectedAttestationHash.
Включение или обновление правил agents.workspace добавляет доказательство agentWorkspace в
хеш рабочей области и хеш аттестации. Операторам следует проверить новое
доказательство и обновить принятые хеши аттестации после включения этих правил.
Включение или обновление правил состояния инструментов добавляет доказательство toolPosture тем же
образом.
openclaw policy watch многократно выполняет ту же проверку и сообщает, когда
текущие доказательства больше не соответствуют expectedAttestationHash:
--once в CI или скриптах, которым нужна только одна оценка дрейфа. Без
--once команда по умолчанию опрашивает каждые две секунды; используйте --interval-ms, чтобы
выбрать другой интервал.
Находки
Политика сейчас проверяет:| ID проверки | Находка |
|---|---|
policy/policy-jsonc-missing | Политика включена, но policy.jsonc отсутствует. |
policy/policy-jsonc-invalid | Политику не удается разобрать или она содержит некорректные записи правил. |
policy/policy-hash-mismatch | Политика не соответствует настроенному expectedHash. |
policy/attestation-hash-mismatch | Текущие доказательства политики больше не соответствуют принятой аттестации. |
policy/policy-conformance-invalid | Базовый или проверяемый файл политики содержит недопустимый синтаксис сравнения. |
policy/policy-conformance-missing | В проверяемом файле политики отсутствует правило, требуемое базовым файлом политики. |
policy/policy-conformance-weaker | В проверяемом файле политики значение слабее, чем в базовом файле политики. |
policy/channels-denied-provider | Включенный канал соответствует правилу запрета канала. |
policy/mcp-denied-server | Настроенный MCP-сервер запрещен политикой. |
policy/mcp-unapproved-server | Настроенный MCP-сервер находится вне списка разрешений. |
policy/models-denied-provider | Настроенный поставщик моделей или ссылка на модель использует запрещенного поставщика. |
policy/models-unapproved-provider | Настроенный поставщик моделей или ссылка на модель находится вне списка разрешений. |
policy/network-private-access-enabled | Обход SSRF для частной сети включен, хотя политика запрещает его. |
policy/ingress-dm-policy-unapproved | Политика личных сообщений канала находится вне списка разрешений политики. |
policy/ingress-dm-scope-unapproved | session.dmScope не соответствует области изоляции личных сообщений, требуемой политикой. |
policy/ingress-open-groups-denied | Политика группы канала имеет значение open, хотя политика запрещает входящий доступ для открытых групп. |
policy/ingress-group-mention-required | Запись канала или группы отключает шлюзы упоминаний, хотя политика требует их. |
policy/gateway-non-loopback-bind | Состояние привязки Gateway допускает доступ не через loopback, хотя политика запрещает его. |
policy/gateway-auth-disabled | Аутентификация Gateway отключена, хотя политика требует аутентификацию. |
policy/gateway-rate-limit-missing | Состояние ограничения частоты для аутентификации Gateway не задано явно, хотя политика требует этого. |
policy/gateway-control-ui-insecure | Включены переключатели небезопасного доступа к Gateway Control UI. |
policy/gateway-tailscale-funnel | Доступ через Gateway Tailscale Funnel включен, хотя политика запрещает его. |
policy/gateway-remote-enabled | Удаленный режим Gateway активен, хотя политика запрещает его. |
policy/gateway-http-endpoint-enabled | HTTP API endpoint Gateway включен, хотя он запрещен политикой. |
policy/gateway-http-url-fetch-unrestricted | Ввод URL-fetch Gateway HTTP не имеет требуемого списка разрешенных URL. |
policy/agents-workspace-access-denied | Режим песочницы агента или доступ к рабочей области находится вне списка разрешений политики. |
policy/agents-tool-not-denied | Агент или конфигурация по умолчанию не запрещает инструмент, требуемый политикой. |
policy/tools-profile-unapproved | Настроенный глобальный или агентский профиль инструментов находится вне списка разрешений. |
policy/tools-fs-workspace-only-required | Инструменты файловой системы не настроены на состояние путей только в рабочей области. |
policy/tools-exec-security-unapproved | Режим безопасности exec находится вне списка разрешений политики. |
policy/tools-exec-ask-unapproved | Режим запроса exec находится вне списка разрешений политики. |
policy/tools-exec-host-unapproved | Маршрутизация хоста exec находится вне списка разрешений политики. |
policy/tools-elevated-enabled | Повышенный режим инструмента включен, хотя политика запрещает его. |
policy/tools-also-allow-missing | В настроенном списке alsoAllow отсутствует запись, требуемая политикой. |
policy/tools-also-allow-unexpected | Настроенный список alsoAllow включает запись, не ожидаемую политикой. |
policy/tools-required-deny-missing | Глобальный или агентский список запрета инструментов не включает обязательный запрещенный инструмент. |
policy/sandbox-mode-unapproved | Режим песочницы находится вне списка разрешений политики. |
policy/sandbox-backend-unapproved | Бэкенд песочницы находится вне списка разрешений политики. |
policy/sandbox-container-posture-unobservable | Правило состояния контейнера включено для бэкенда, который не может его наблюдать. |
policy/sandbox-container-host-network-denied | Песочница или браузер на базе контейнера использует режим сети хоста. |
policy/sandbox-container-namespace-join-denied | Песочница или браузер на базе контейнера присоединяется к пространству имен другого контейнера. |
policy/sandbox-container-mount-mode-required | Монтирование песочницы или браузера на базе контейнера не является доступным только для чтения. |
policy/sandbox-container-runtime-socket-mount | Монтирование песочницы или браузера на базе контейнера открывает сокет среды выполнения контейнера. |
policy/sandbox-container-unconfined-profile | Профиль контейнерной песочницы является неограниченным, хотя политика запрещает это. |
policy/sandbox-browser-cdp-source-range-missing | Диапазон источника CDP браузера песочницы отсутствует, хотя политика требует его. |
policy/data-handling-redaction-disabled | Редактирование чувствительных данных в журналах отключено, хотя политика требует его. |
policy/data-handling-telemetry-content-capture | Захват содержимого телеметрии включен, хотя политика запрещает его. |
policy/data-handling-session-retention-not-enforced | Обслуживание срока хранения сеансов не применяется, хотя политика требует его. |
policy/data-handling-session-transcript-memory-enabled | Индексация памяти расшифровок сеансов включена, хотя политика запрещает ее. |
policy/secrets-unmanaged-provider | Config SecretRef ссылается на поставщика, не объявленного в secrets.providers. |
policy/secrets-denied-provider-source | Поставщик секретов конфигурации или SecretRef использует источник, запрещенный политикой. |
policy/secrets-insecure-provider | Поставщик секретов выбирает небезопасное состояние, хотя политика запрещает его. |
policy/auth-profile-invalid-metadata | В профиле аутентификации конфигурации отсутствуют корректные метаданные поставщика или режима. |
policy/auth-profile-unapproved-mode | Режим профиля аутентификации конфигурации находится вне списка разрешений политики. |
policy/exec-approvals-missing | Политика требует exec-approvals.json, но артефакт отсутствует. |
policy/exec-approvals-invalid | Настроенный артефакт утверждений exec не удается разобрать. |
policy/exec-approvals-default-security-unapproved | Значения утверждений exec по умолчанию используют режим безопасности вне списка разрешений политики. |
policy/exec-approvals-agent-security-unapproved | Эффективный режим безопасности утверждения exec для агента находится вне списка разрешений. |
policy/exec-approvals-auto-allow-skills-enabled | Агент утверждения exec неявно автоматически разрешает CLI Skills, хотя политика запрещает это. |
policy/exec-approvals-allowlist-missing | В списке разрешений утверждений отсутствует шаблон, требуемый политикой. |
policy/exec-approvals-allowlist-unexpected | Список разрешений утверждений включает шаблон, не ожидаемый политикой. |
policy/tools-missing-risk-level | В управляемом объявлении инструмента отсутствуют метаданные риска. |
policy/tools-unknown-risk-level | Управляемое объявление инструмента использует неизвестное значение риска. |
policy/tools-missing-sensitivity-token | В управляемом объявлении инструмента отсутствуют метаданные чувствительности. |
policy/tools-missing-owner | В управляемом объявлении инструмента отсутствуют метаданные владельца. |
policy/tools-unknown-sensitivity-token | Управляемое объявление инструмента использует неизвестное значение чувствительности. |
target, и requirement. target — это
наблюдаемый объект рабочей области, который не соответствует требованиям. requirement — это созданное
правило политики, из-за которого он стал находкой. Сегодня оба значения являются адресами, обычно
путями oc://, но имена полей описывают их роль в политике, а не
формат адреса.
Пример JSON-находки:
Исправление
doctor --lint и policy check доступны только для чтения.
doctor --fix изменяет управляемые политиками настройки рабочей области только тогда, когда
workspaceRepairs явно включен. Без этого явного согласия проверки политик
сообщают, что они бы исправили, и оставляют настройки без изменений.
В этой версии исправление может отключать каналы, которые включены в конфигурации OpenClaw,
но запрещены channels.denyRules. Включайте workspaceRepairs только после
проверки файла политики, потому что корректное правило запрета может отключить
настроенный канал:
Коды выхода
| Команда | 0 | 1 | 2 |
|---|---|---|---|
policy check | Нет находок на пороге. | Одна или несколько находок достигли порога. | Ошибка аргументов или выполнения. |
policy compare | Файл политики не менее строгий, чем базовый уровень. | Файл политики недействителен, отсутствует или слабее базовых правил. | Ошибка аргументов или выполнения. |
policy watch | Нет находок, и принятый хэш актуален. | Находки существуют или принятое свидетельство устарело. | Ошибка аргументов или выполнения. |