CLI commands
Beleid
openclaw policy
openclaw policy wordt geleverd door de gebundelde Policy-plugin. Policy is een
enterprise-conformiteitslaag boven op bestaande OpenClaw-instellingen. Het voegt
geen tweede configuratiesysteem toe. policy.jsonc definieert opgestelde vereisten,
OpenClaw observeert de actieve workspace als bewijs, en beleidshealthchecks
rapporteren drift via doctor --lint. Het uiteindelijke conformiteitssignaal is een schone
doctor --lint-run; policy draagt bevindingen bij aan dat gedeelde lint-oppervlak
in plaats van een afzonderlijke health-gate te maken.
Policy beheert momenteel geconfigureerde kanalen, MCP-servers, modelproviders,
netwerk-SSRF-houding, ingress-/kanaaltoegangshouding, Gateway-blootstellingshouding, agent-workspacehouding,
data-afhandelingshouding, OpenClaw-configuratiehouding voor secretprovider/auth-profiel, en beheerde tool-
declaraties. IT of een workspace-operator kan bijvoorbeeld vastleggen dat Telegram
geen goedgekeurde kanaalprovider is, MCP-servers en modelrefs beperken tot
goedgekeurde vermeldingen, vereisen dat fetch-/browsertoegang tot privénetwerken
uitgeschakeld blijft, vereisen dat directe-berichtsessie-isolatie en kanaalingresshouding
binnen beoordeelde grenzen blijven, vereisen dat Gateway-bind/auth/HTTP-blootstelling binnen beoordeelde
grenzen blijft, vereisen dat agent-workspacetoegang en tool-denies in een beoordeelde
houding blijven, vereisen dat OpenClaw-configuratie-SecretRefs beheerde providers gebruiken, vereisen dat
configuratie-auth-profielen provider-/modusmetadata bevatten, vereisen dat beheerde tools
risico- en gevoeligheidsmetadata bevatten, vereisen dat gevoelige logging wordt geredigeerd, vastlegging van
telemetrie-inhoud weigeren, onderhoud van sessieretentie vereisen, geheugenindexering van sessie-
transcripten weigeren, en daarna doctor --lint gebruiken als de gedeelde
conformiteitsgate.
Gebruik policy wanneer een workspace een duurzame verklaring nodig heeft, zoals "deze kanalen mogen niet zijn ingeschakeld" of "beheerde tools moeten goedkeuringsmetadata declareren", en een herhaalbare manier om te bewijzen dat OpenClaw nog steeds aan die verklaring voldoet. Gebruik alleen reguliere configuratie en workspacedocumentatie wanneer u alleen lokaal gedrag nodig hebt en geen beleidsbevindingen of attestatie-uitvoer nodig hebt.
Snelstart
Schakel de gebundelde Policy-plugin in vóór het eerste gebruik:
openclaw plugins enable policyWanneer policy is ingeschakeld, kan doctor beleidshealthchecks laden zonder
willekeurige plugins te activeren. De plugin blijft ingeschakeld als policy.jsonc ontbreekt, zodat
doctor het ontbrekende artefact kan rapporteren.
Policy wordt opgesteld, niet gegenereerd uit de huidige instellingen van de gebruiker. Een minimaal beleid voor kanalen, MCP-servers, modelproviders, netwerkhouding, ingress-/kanaaltoegang, Gateway- blootstelling, agent-workspacehouding, geconfigureerde sandbox-runtimehouding, OpenClaw- data-afhandelingshouding, configuratiehouding voor secretprovider/auth-profiel, exec-goedkeurings- bestandshouding, en toolmetadata ziet er als volgt uit:
{ "channels": { "denyRules": [ { "id": "no-telegram", "when": { "provider": "telegram" }, "reason": "Telegram is not approved for this workspace.", }, ], }, "mcp": { "servers": { "allow": ["docs"], "deny": ["untrusted"], }, }, "models": { "providers": { "allow": ["openai", "anthropic"], "deny": ["openrouter"], }, }, "network": { "privateNetwork": { "allow": false, }, }, "ingress": { "session": { "requireDmScope": "per-channel-peer", }, "channels": { "allowDmPolicies": ["pairing", "allowlist", "disabled"], "denyOpenGroups": true, "requireMentionInGroups": true, }, }, "gateway": { "exposure": { "allowNonLoopbackBind": false, "allowTailscaleFunnel": false, }, "auth": { "requireAuth": true, "requireExplicitRateLimit": true, }, "controlUi": { "allowInsecure": false, }, "remote": { "allow": false, }, "http": { "denyEndpoints": ["chatCompletions", "responses"], "requireUrlAllowlists": true, }, }, "agents": { "workspace": { "allowedAccess": ["none", "ro"], "denyTools": ["exec", "process", "write", "edit", "apply_patch"], }, }, "dataHandling": { "sensitiveLogging": { "requireRedaction": true, }, "telemetry": { "denyContentCapture": true, }, "retention": { "requireSessionMaintenance": true, }, "memory": { "denySessionTranscriptIndexing": true, }, }, "secrets": { "requireManagedProviders": true, "denySources": ["exec"], "allowInsecureProviders": false, }, "auth": { "profiles": { "requireMetadata": ["provider", "mode"], "allowModes": ["api_key", "token"], }, }, "execApprovals": { "requireFile": true, "defaults": { "allowSecurity": ["deny"] }, "agents": { "allowSecurity": ["deny", "allowlist"], "allowAutoAllowSkills": false, "allowlist": { "expected": ["deploy", "status"] }, }, }, "tools": { "requireMetadata": ["risk", "sensitivity", "owner"], "profiles": { "allow": ["messaging", "minimal"], }, "fs": { "requireWorkspaceOnly": true, }, "exec": { "allowSecurity": ["deny", "allowlist"], "requireAsk": ["always"], "allowHosts": ["sandbox"], }, "elevated": { "allow": false, }, "denyTools": ["group:runtime", "group:fs"], },}De regels zijn de autoriteit. Een categorieblok is alleen een namespace; controles worden uitgevoerd
wanneer er een concrete regel aanwezig is. OpenClaw leest huidige channels.*-instellingen,
mcp.servers.*, models.providers.*, geselecteerde agent-modelrefs, netwerk-SSRF-
instellingen, direct-message-sessiescope, kanaal-DM-beleid, kanaalgroepsbeleid,
kanaal-/groepsvermeldingsgates, Gateway-bind/auth/Control UI/Tailscale/remote/HTTP-
houding, OpenClaw-configuratie voor agent-sandbox-workspacetoegang en tool-denyhouding,
data-afhandelingsconfiguratiehouding, configuratie-secret-
provider en SecretRef-herkomst, configuratie-auth-profielmetadata, geconfigureerde
globale/per-agent-toolhouding, en TOOLS.md-declaraties als bewijs, en
rapporteert vervolgens geobserveerde staat die niet voldoet. Als een beleid non-loopback
Gateway-binds weigert, laat gateway.bind dan alleen weg wanneer u
bereid bent de runtime-standaard te beoordelen; stel gateway.bind=loopback in voor
strikte configuratieconformiteit. Voor een read-only agent-houding configureert u de sandboxmodus
op de toepasselijke defaults of agent en stelt u workspaceAccess in op none of
ro; een weggelaten of off-sandboxmodus voldoet niet aan een read-only/no-write-
beleid. agents.workspace.denyTools ondersteunt exec, process, write,
edit, en apply_patch; OpenClaw-configuratie group:fs dekt bestandsmutatietools
en group:runtime dekt shell-/procestools. Toolhoudingsbeleid observeert
tools.profile, tools.allow, tools.alsoAllow, tools.deny,
tools.fs.workspaceOnly, tools.exec.security, tools.exec.ask,
tools.exec.host, tools.elevated.enabled, en dezelfde per-agent-
agents.list[].tools.*-overrides. Exec-goedkeuringsbeleid leest het benoemde
exec-approvals.json-productartefact alleen wanneer een execApprovals-regel
aanwezig is; bewijs registreert defaults, per-agent-houding en allowlist-patronen
zonder sockettokens of laatst gebruikte opdrachttekst. Policy handhaaft tool-
aanroepen niet tijdens runtime. Secret-bewijs registreert
provider-/bronhouding en SecretRef-metadata, nooit ruwe secretwaarden. Policy
leest of attesteert geen per-agent-credentialstores zoals auth-profiles.json;
die stores blijven eigendom van de bestaande auth- en credentialflows.
Data-afhandelingsbewijs is alleen houding op configuratieniveau: het controleert de geconfigureerde
redactiemodus, toggles voor vastlegging van telemetrie-inhoud, sessieonderhoudsmodus, en
instellingen voor geheugenindexering van sessietranscripten. Het inspecteert geen ruwe logs,
telemetrie-exports, transcriptinhoud of geheugenbestanden, en bewijst niet dat er geen persoonlijke
gegevens of secrets bestaan.
Naslag voor beleidsregels
Elk beleidsveld hieronder is optioneel. Een controle wordt alleen uitgevoerd wanneer de overeenkomende regel
aanwezig is in policy.jsonc. De geobserveerde staat is bestaande OpenClaw-configuratie of
workspacemetadata; policy rapporteert drift maar herschrijft runtimegedrag niet,
tenzij een herstelpad expliciet beschikbaar en ingeschakeld is.
Policy-bestanden zijn strikt: niet-ondersteunde secties of regelsleutels worden gerapporteerd als
policy/policy-jsonc-invalid in plaats van genegeerd.
Policy-overlays houden brede top-level regels globaal en laten daarna benoemde scopeblokken strengere normale beleidssecties toevoegen voor expliciete selectors. Een scopenaam is alleen een beschrijvende bucket; matching gebruikt de selectorwaarden binnen de scope. De overlay is additief: globale claims worden nog steeds uitgevoerd, en een gescopete claim kan een eigen bevinding tegen dezelfde geobserveerde configuratie emitten.
Gescopeerde overlays
Gebruik scopes.<scopeName> wanneer één set agents of kanalen strenger
beleid nodig heeft dan de top-level baseline. Agent-gescopeerde secties gebruiken agentIds, die
tools.*, agents.workspace.*, sandbox.*, dataHandling.memory.*,
en execApprovals.* ondersteunt. Kanaal-gescopeerde
ingress gebruikt channelIds, die ingress.channels.* ondersteunt. Niet-ondersteunde
secties worden geweigerd in plaats van genegeerd. Als een agentIds-vermelding niet
aanwezig is in agents.list[], evalueert OpenClaw de gescopeerde regel tegen geërfde
globale/default-houding voor die runtime-agent-id.
{ "tools": { "exec": { "allowHosts": ["sandbox", "node"], }, }, "sandbox": { "requireMode": ["all", "non-main"], }, "scopes": { "release-workspace": { "agentIds": ["release-agent", "review-agent"], "agents": { "workspace": { "allowedAccess": ["none", "ro"], }, }, }, "release-lockdown": { "agentIds": ["release-agent"], "tools": { "exec": { "allowHosts": ["sandbox"], "allowSecurity": ["deny", "allowlist"], "requireAsk": ["always"], }, "denyTools": ["exec", "process", "write", "edit", "apply_patch"], }, "sandbox": { "requireMode": ["all"], "allowBackends": ["docker"], }, "dataHandling": { "memory": { "denySessionTranscriptIndexing": true, }, }, }, "shell-sandbox": { "agentIds": ["shell-agent"], "sandbox": { "allowBackends": ["openshell"], "containers": { "requireReadOnlyMounts": false, }, }, }, "telegram-ingress": { "channelIds": ["telegram"], "ingress": { "channels": { "allowDmPolicies": ["pairing"], "denyOpenGroups": true, "requireMentionInGroups": true, }, }, }, },}Dezelfde agent kan in meerdere scopes voorkomen wanneer elke scope verschillende velden beheert, zoals hierboven getoond. Een herhaald gescopet veld voor dezelfde agent moet even streng of strenger zijn volgens beleidsmetadata; zwakkere dubbele claims worden geweigerd. Striktheidsmetadata behandelt allowlists als subsets, denylists als supersets, en vereiste booleans als vaste vereisten.
Containerhoudingsbeleid wordt alleen geëvalueerd tegen bewijs dat OpenClaw kan
observeren voor de gematchte agent. Als een ingeschakelde sandbox.containers.*-regel van toepassing is
op een agent waarvan de sandboxbackend dat veld niet kan blootstellen, rapporteert policy
policy/sandbox-container-posture-unobservable in plaats van de claim als geslaagd
te behandelen. Gebruik afzonderlijke agentIds-scopes voor agentgroepen die verschillende
sandboxbackends gebruiken, en laat niet-ondersteunde containerregels uitgeschakeld of false voor de
groepen waar die velden niet kunnen worden geobserveerd.
Top-level ingress.session.requireDmScope blijft globaal omdat
session.dmScope geen kanaal-toewijsbaar bewijs is.
| Selector | Ondersteunde secties | Gebruik wanneer |
|---|---|---|
agentIds |
tools, agents.workspace, sandbox, dataHandling.memory, and execApprovals |
Een of meer runtime-agents strengere regels nodig hebben. |
channelIds |
ingress.channels |
Een of meer kanalen strengere ingress-regels nodig hebben. |
Elke scope die aanwezig is in policy.jsonc moet geldig en afdwingbaar zijn.
Kanalen
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
channels.denyRules[].when.provider |
channels.*-provider en ingeschakelde status |
Geconfigureerde kanalen van een provider zoals telegram weigeren. |
channels.denyRules[].reason |
Bericht bij bevinding en context voor reparatietip | Uitleggen waarom de provider wordt geweigerd. |
MCP-servers
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
mcp.servers.allow |
mcp.servers.*-ids |
Vereisen dat elke geconfigureerde MCP-server in een allowlist staat. |
mcp.servers.deny |
mcp.servers.*-ids |
Specifieke geconfigureerde MCP-server-ids weigeren. |
Modelproviders
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
models.providers.allow |
models.providers.*-ids en geselecteerde modelrefs |
Vereisen dat geconfigureerde providers en geselecteerde modelrefs goedgekeurde providers gebruiken. |
models.providers.deny |
models.providers.*-ids en geselecteerde modelrefs |
Geconfigureerde providers en geselecteerde modelrefs weigeren op provider-id. |
Netwerk
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
network.privateNetwork.allow |
Private-network SSRF-uitwijkroutes | Instellen op false om te vereisen dat private-network-toegang uitgeschakeld blijft. |
Ingress en kanaaltoegang
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
ingress.session.requireDmScope |
session.dmScope |
Een beoordeelde isolatiescope voor directe berichten vereisen. |
ingress.channels.allowDmPolicies |
channels.*.dmPolicy en legacy DM-beleidsvelden voor kanalen |
Alleen beoordeelde kanaalbeleidsregels voor directe berichten toestaan. |
ingress.channels.denyOpenGroups |
Ingress-beleid voor kanaal, account en groep | Open groeps-ingress weigeren voor geconfigureerde kanalen en accounts. |
ingress.channels.requireMentionInGroups |
Kanaal-, account-, groep-, guild- en geneste mention-gateconfiguratie | Mention-gates vereisen wanneer groeps-ingress open is of door mentions wordt afgeschermd. |
Gateway
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
gateway.exposure.allowNonLoopbackBind |
gateway.bind |
Instellen op false om loopback-Gateway-binding te vereisen. |
gateway.exposure.allowTailscaleFunnel |
Tailscale serve/funnel-Gateway-houding | Instellen op false om Tailscale Funnel-blootstelling te weigeren. |
gateway.auth.requireAuth |
gateway.auth.mode |
Instellen op true om uitgeschakelde Gateway-auth te weigeren. |
gateway.auth.requireExplicitRateLimit |
gateway.auth.rateLimit |
Instellen op true om expliciete auth-rate-limit-configuratie te vereisen. |
gateway.controlUi.allowInsecure |
Onveilige auth/device/origin-schakelaars van Control UI | Instellen op false om onveilige blootstellingsschakelaars van Control UI te weigeren. |
gateway.remote.allow |
Remote Gateway-modus/configuratie | Instellen op false om remote Gateway-modus te weigeren. |
gateway.http.denyEndpoints |
Gateway HTTP API-eindpunten | Eindpunt-ids zoals chatCompletions of responses weigeren. |
gateway.http.requireUrlAllowlists |
Gateway HTTP URL-fetch-invoer | Instellen op true om URL-allowlists te vereisen voor URL-fetch-invoer. |
Agent-werkruimte
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
agents.workspace.allowedAccess |
agents.defaults.sandbox.workspaceAccess en agents.list[].sandbox.workspaceAccess |
Alleen sandbox-werkruimtetoegangswaarden zoals none of ro toestaan. |
agents.workspace.denyTools |
Globale en per-agent tool-weigerconfiguratie | Vereisen dat mutatietools voor werkruimte/runtime zoals exec, process, write, edit of apply_patch worden geweigerd. |
Sandbox-houding
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
sandbox.requireMode |
agents.defaults.sandbox.mode en modus per agent |
Alleen beoordeelde sandbox-modi zoals all of non-main toestaan. |
sandbox.allowBackends |
agents.defaults.sandbox.backend en backend per agent |
Alleen beoordeelde sandbox-backends zoals docker toestaan. |
sandbox.containers.denyHostNetwork |
Netwerkmodus van container-backed sandbox/browser | Hostnetwerkmodus weigeren. |
sandbox.containers.denyContainerNamespaceJoin |
Netwerkmodus van container-backed sandbox/browser | Deelnemen aan de netwerknamespace van een andere container weigeren. |
sandbox.containers.requireReadOnlyMounts |
Mountmodus van container-backed sandbox/browser | Vereisen dat mounts alleen-lezen zijn. |
sandbox.containers.denyContainerRuntimeSocketMounts |
Mountdoelen van container-backed sandbox/browser | Mounts van container-runtime-sockets weigeren. |
sandbox.containers.denyUnconfinedProfiles |
Houding van containerbeveiligingsprofielen | Unconfined containerbeveiligingsprofielen weigeren. |
sandbox.browser.requireCdpSourceRange |
CDP-bronbereik van sandbox-browser | Vereisen dat browser-CDP-blootstelling een bronbereik declareert. |
Policy behandelt ontbrekende sandbox.mode als de impliciete standaard off, waardoor
sandbox.requireMode een nieuwe of niet-geconfigureerde sandbox rapporteert als buiten een
allowlist zoals ["all"].
Gegevensverwerking
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
dataHandling.sensitiveLogging.requireRedaction |
logging.redactSensitive |
Instellen op true om logging.redactSensitive: "off" te weigeren. |
dataHandling.telemetry.denyContentCapture |
diagnostics.otel.captureContent |
Instellen op true om telemetry-contentcapture te weigeren. |
dataHandling.retention.requireSessionMaintenance |
session.maintenance.mode |
Instellen op true om effectieve sessieonderhoudsmodus enforce te vereisen. |
dataHandling.memory.denySessionTranscriptIndexing |
memory.qmd.sessions.enabled en agents.*.memorySearch.experimental.sessionMemory |
Instellen op true om indexering van sessietranscripten naar memory te weigeren. |
Geheimen
| Beleidsveld | Waargenomen status | Gebruik wanneer |
|---|---|---|
secrets.requireManagedProviders |
Config SecretRefs en secrets.providers.*-declaraties |
Instellen op true om te vereisen dat SecretRefs naar gedeclareerde providers verwijzen. |
secrets.denySources |
Bronnen van secret-providers en SecretRef-bronnen | Bronnen zoals exec, file of een andere geconfigureerde bronnaam weigeren. |
secrets.allowInsecureProviders |
Onveilige houdingsvlaggen van secret-providers | Instellen op false om providers te weigeren die kiezen voor een onveilige houding. |
Exec-goedkeuringen
Het beleid voor exec-goedkeuringen observeert het actieve runtime-artefact
exec-approvals.json. Standaard is dit ~/.openclaw/exec-approvals.json; wanneer
OPENCLAW_STATE_DIR is ingesteld, leest Policy
$OPENCLAW_STATE_DIR/exec-approvals.json. Feitelijke houdingsregels zoals
execApprovals.defaults.* of execApprovals.agents.* vereisen leesbaar
artefactbewijs; een ontbrekend of ongeldig artefact wordt gerapporteerd als
niet-observeerbaar bewijs in plaats van een best-effort pass te worden tegen synthetische
runtime-standaarden. Zodra het artefact leesbaar is, erven weggelaten goedkeuringsvelden
runtime-standaarden: ontbrekende defaults.security is full, en ontbrekende
agentbeveiliging erft die standaard. Bewijs omvat defaults, agents.* en
agents.*.allowlist[].pattern plus optioneel argPattern, effectieve
autoAllowSkills-houding en invoerbron. Het omvat geen socketpad/token,
commandText, lastUsedCommand, opgeloste paden of tijdstempels.
| Beleidsveld | Waargenomen status | Gebruiken wanneer |
|---|---|---|
execApprovals.requireFile |
Pad van actief runtime-exec-approvals.json |
Stel in op true om te vereisen dat het goedkeuringsartefact bestaat en kan worden geparset. |
execApprovals.defaults.allowSecurity |
defaults.security, standaard ingesteld op full |
Sta alleen goedgekeurde standaardbeveiligingsmodi voor goedkeuring toe. |
execApprovals.agents.allowSecurity |
agents.*.security, overgenomen van standaarden |
Sta alleen goedgekeurde effectieve beveiligingsmodi voor goedkeuring per agent toe. |
execApprovals.agents.allowAutoAllowSkills |
defaults.autoAllowSkills en agents.*.autoAllowSkills, overgenomen van runtime-standaarden |
Stel in op false om strikte handmatige allowlists te vereisen zonder impliciete Skills-CLI-goedkeuring. |
execApprovals.agents.allowlist.expected |
Geaggregeerd agents.*.allowlist[]-patroon en optionele argPattern-vermeldingen |
Vereis dat de goedkeurings-allowlist overeenkomt met de beoordeelde patroonset. |
Vereis bijvoorbeeld het goedkeuringsartefact, weiger permissieve standaarden en sta alleen een beoordeelde exec-goedkeuringshouding toe voor geselecteerde agents:
{ "execApprovals": { "requireFile": true, "defaults": { // Security modes: "deny", "allowlist", or "full". // This default permits only the locked-down deny posture. "allowSecurity": ["deny"], }, }, "scopes": { "restricted-shell": { "agentIds": ["family-agent", "groups-agent"], "execApprovals": { "agents": { // Selected agents may use reviewed allowlist posture, but not "full". "allowSecurity": ["allowlist"], // false means skill CLIs must appear in the reviewed allowlist instead of // being implicitly approved by autoAllowSkills. "allowAutoAllowSkills": false, "allowlist": { "expected": [ // Simple entry: exact reviewed executable pattern with no argPattern. "travel-hub", // Constrained entry: pattern plus reviewed argument regex. { "pattern": "calendar-cli", "argPattern": "^sync\\b" }, "/bin/date", ], }, }, }, }, },}Auth-profielen
| Beleidsveld | Waargenomen status | Gebruiken wanneer |
|---|---|---|
auth.profiles.requireMetadata |
auth.profiles.* provider- en modusmetadata |
Vereis metadatasleutels zoals provider en mode op configuratie-auth-profielen. |
auth.profiles.allowModes |
auth.profiles.*.mode |
Sta alleen ondersteunde auth-profielmodi toe, zoals api_key, aws-sdk, oauth of token. |
Toolmetadata
| Beleidsveld | Waargenomen status | Gebruiken wanneer |
|---|---|---|
tools.requireMetadata |
Beheerde TOOLS.md-declaraties |
Vereis dat beheerde tools metadatasleutels declareren, zoals risk, sensitivity of owner. |
Toolhouding
| Beleidsveld | Waargenomen status | Gebruiken wanneer |
|---|---|---|
tools.profiles.allow |
tools.profile en agents.list[].tools.profile |
Sta alleen toolprofiel-id's toe, zoals minimal, messaging of coding. |
tools.fs.requireWorkspaceOnly |
tools.fs.workspaceOnly en per-agent tools.fs-overrides |
Stel in op true om een bestandssysteemtoolhouding te vereisen die alleen de workspace gebruikt. |
tools.exec.allowSecurity |
tools.exec.security en exec-beveiliging per agent |
Sta alleen exec-beveiligingsmodi toe, zoals deny of allowlist. |
tools.exec.requireAsk |
tools.exec.ask en exec-vraagmodus per agent |
Vereis een goedkeuringshouding zoals always. |
tools.exec.allowHosts |
tools.exec.host en exec-hostroutering per agent |
Sta alleen exec-hostrouteringsmodi toe, zoals sandbox. |
tools.elevated.allow |
tools.elevated.enabled en verhoogde houding per agent |
Stel in op false om te vereisen dat verhoogde toolmodus uitgeschakeld blijft. |
tools.alsoAllow.expected |
tools.alsoAllow en per-agent tools.alsoAllow |
Vereis exacte alsoAllow-vermeldingen en rapporteer ontbrekende of onverwachte aanvullende toolrechten. |
tools.denyTools |
tools.deny en agents.list[].tools.deny |
Vereis dat geconfigureerde tool-weigerlijsten tool-id's of groepen bevatten, zoals group:runtime en group:fs. |
Voer tijdens het schrijven alleen-beleidscontroles uit:
openclaw policy checkopenclaw policy check --jsonopenclaw policy check --severity-min errorpolicy check voert alleen de set beleidscontroles uit en geeft bewijs, bevindingen en
attestatiehashes uit. Dezelfde bevindingen verschijnen ook in openclaw doctor --lint
wanneer de Policy plugin is ingeschakeld.
Vergelijk een operatorbeleidsbestand met een geschreven baseline-beleidsbestand:
openclaw policy compare --baseline official.policy.jsoncopenclaw policy compare --baseline official.policy.jsonc --policy policy.jsonc --jsonpolicy compare vergelijkt syntaxis van beleidsbestanden met syntaxis van beleidsbestanden. Het
inspecteert geen OpenClaw-runtime-status, bewijs, referenties of geheimen. De opdracht
gebruikt dezelfde metadata voor beleidsregels die scoped overlays beheert: allowlists moeten
gelijk of smaller blijven, denylists moeten gelijk of breder blijven, vereiste booleans
moeten hun vereiste waarde behouden, geordende strings mogen alleen naar het restrictievere
uiteinde van de geconfigureerde volgorde bewegen, en exacte lijsten moeten overeenkomen.
Het baselinebestand kan een door een organisatie geschreven beleid zijn. Het gecontroleerde beleid kan
striktere waarden gebruiken of extra beleidsregels toevoegen. Een gecontroleerde regel op topniveau kan ook
voldoen aan een scoped baseline-regel wanneer deze even restrictief of restrictiever is, omdat
beleid op topniveau breed van toepassing is. Scopenamen hoeven niet overeen te komen; scoped
vergelijking wordt bepaald door selectorwaarde zoals agentIds of channelIds en door
het beleidsveld dat wordt gecontroleerd.
Voorbeeld van schone vergelijkingsuitvoer in JSON rapporteert alleen de vergelijkingsstatus van beleidsbestanden:
{ "ok": true, "baselinePath": "official.policy.jsonc", "policyPath": "policy.jsonc", "rulesChecked": 3, "findings": []}Voorbeeld van schone policy check --json-uitvoer bevat stabiele hashes die kunnen worden
vastgelegd door een operator of supervisor:
{ "ok": true, "attestation": { "policy": { "path": "policy.jsonc", "hash": "sha256:..." }, "workspace": { "scope": "policy", "hash": "sha256:..." }, "findingsHash": "sha256:...", "attestationHash": "sha256:..." }, "checksRun": 5, "checksSkipped": 0, "findings": []}Beleid configureren
Beleidsconfiguratie bevindt zich onder plugins.entries.policy.config.
{ "plugins": { "entries": { "policy": { "enabled": true, "config": { "enabled": true, "path": "policy.jsonc", "workspaceRepairs": false, "expectedHash": "sha256:...", "expectedAttestationHash": "sha256:...", }, }, }, },}| Instelling | Doel |
|---|---|
enabled |
Schakel beleidscontroles in, zelfs voordat policy.jsonc bestaat. |
workspaceRepairs |
Sta toe dat doctor --fix door beleid beheerde workspace-instellingen bewerkt. |
expectedHash |
Optionele hashvergrendeling voor het goedgekeurde beleidsartefact. |
expectedAttestationHash |
Optionele hashvergrendeling voor de laatst geaccepteerde schone beleidscontrole. |
path |
Workspace-relatieve locatie van het beleidsartefact. |
Stel plugins.entries.policy.config.enabled in op false om beleidscontroles
voor een workspace uit te schakelen terwijl de plugin geinstalleerd blijft.
Vereisten voor toolmetadata worden geschreven in policy.jsonc met
tools.requireMetadata, bijvoorbeeld ["risk", "sensitivity", "owner"].
Beleidsstatus accepteren
Voorbeeld van JSON-uitvoer:
{ "ok": true, "attestation": { "checkedAt": "2026-05-10T20:00:00.000Z", "policy": { "path": "policy.jsonc", "hash": "sha256:..." }, "workspace": { "scope": "policy", "hash": "sha256:..." }, "findingsHash": "sha256:...", "attestationHash": "sha256:..." }, "evidence": { "channels": [ { "id": "telegram", "provider": "telegram", "source": "oc://openclaw.config/channels/telegram", "enabled": false } ], "mcpServers": [ { "id": "docs", "transport": "stdio", "source": "oc://openclaw.config/mcp/servers/docs", "command": "npx" } ], "modelProviders": [ { "id": "openai", "source": "oc://openclaw.config/models/providers/openai" } ], "modelRefs": [ { "ref": "openai/gpt-5.5", "provider": "openai", "model": "gpt-5.5", "source": "oc://openclaw.config/agents/defaults/model" } ], "network": [ { "id": "browser-private-network", "source": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "value": false } ], "gatewayExposure": [ { "id": "gateway-bind", "kind": "bind", "source": "oc://openclaw.config/gateway/bind", "value": "loopback", "nonLoopback": false, "explicit": true } ], "agentWorkspace": [ { "id": "agents-defaults-workspace-access", "kind": "workspaceAccess", "source": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "scope": "defaults", "value": "ro", "sandboxMode": "all", "sandboxModeSource": "oc://openclaw.config/agents/defaults/sandbox/mode", "sandboxEnabled": true, "explicit": true }, { "id": "agents-defaults-tool-exec", "kind": "toolDeny", "source": "oc://openclaw.config/tools/deny", "scope": "defaults", "tool": "exec", "denied": true, "explicit": true } ], "secrets": [ { "id": "vault", "kind": "provider", "source": "oc://openclaw.config/secrets/providers/vault", "providerSource": "env" }, { "id": "oc://openclaw.config/models/providers/openai/apiKey", "kind": "input", "source": "oc://openclaw.config/models/providers/openai/apiKey", "provenance": "secretRef", "refSource": "env", "refProvider": "vault" } ], "authProfiles": [ { "id": "github", "source": "oc://openclaw.config/auth/profiles/github", "validMetadata": true, "provider": "github", "mode": "token" } ], "tools": [ { "id": "deploy", "source": "oc://TOOLS.md/tools/deploy", "line": 12, "risk": "critical", "sensitivity": "restricted", "capabilities": ["IRREVERSIBLE_EXTERNAL"] } ] }, "checksRun": 30, "checksSkipped": 0, "findings": []}De beleidshash identificeert het opgestelde regelartefact. Het bewijsblok
registreert de waargenomen OpenClaw-status die door de beleidscontroles is gebruikt. De
waarde workspace.hash identificeert die bewijs-payload voor de gecontroleerde scope.
De bevindingenhash identificeert de exacte set bevindingen die door de controle is geretourneerd.
checkedAt registreert wanneer de evaluatie is uitgevoerd. De attestatiehash identificeert
de stabiele claim: beleidshash, bewijshash, bevindingenhash en of het
resultaat schoon was. Deze bevat bewust geen checkedAt, zodat dezelfde
beleidsstatus dezelfde attestatie oplevert bij herhaalde controles. Samen
vormen deze de audit-tuple voor deze beleidscontrole.
Als een latere Gateway of supervisor beleid gebruikt om een runtime-actie te blokkeren,
goed te keuren of te annoteren, moet deze de attestatiehash van de laatste schone beleidscontrole
registreren. checkedAt blijft in JSON-uitvoer staan voor auditlogs, maar maakt geen deel uit van de
stabiele attestatiehash.
Gebruik deze levenscyclus bij het accepteren van beleidsstatus:
- Stel
policy.jsoncop of review het. - Voer
openclaw policy check --jsonuit. - Als het resultaat schoon is, registreer
attestation.policy.hashalsexpectedHash. - Registreer
attestation.attestationHashalsexpectedAttestationHash. - Voer
openclaw doctor --lintopnieuw uit in CI- of releasepoorten.
Als beleidsregels bewust veranderen, werk dan beide geaccepteerde hashes bij op basis van een schone
controle. Als workspace-instellingen bewust veranderen maar het beleid hetzelfde blijft,
verandert meestal alleen expectedAttestationHash.
Het inschakelen of upgraden van agents.workspace-regels voegt agentWorkspace-bewijs toe aan
de workspace-hash en attestatiehash. Operators moeten het nieuwe
bewijs reviewen en geaccepteerde attestatiehashes vernieuwen nadat ze deze regels hebben ingeschakeld.
Het inschakelen of upgraden van regels voor toolhouding voegt op dezelfde
manier toolPosture-bewijs toe.
openclaw policy watch voert dezelfde controle herhaaldelijk uit en rapporteert wanneer het
huidige bewijs niet langer overeenkomt met expectedAttestationHash:
openclaw policy watch --jsonGebruik --once in CI of scripts die slechts één driftevaluatie nodig hebben. Zonder
--once pollt de opdracht standaard elke twee seconden; gebruik --interval-ms om
een ander interval te kiezen.
Bevindingen
Beleid verifieert momenteel:
| Controle-id | Bevinding |
|---|---|
policy/policy-jsonc-missing |
Beleid is ingeschakeld, maar policy.jsonc ontbreekt. |
policy/policy-jsonc-invalid |
Beleid kan niet worden geparseerd of bevat ongeldige regelvermeldingen. |
policy/policy-hash-mismatch |
Beleid komt niet overeen met geconfigureerde expectedHash. |
policy/attestation-hash-mismatch |
Huidig beleidsbewijs komt niet meer overeen met de geaccepteerde attestatie. |
policy/policy-conformance-invalid |
Een basislijn- of gecontroleerd beleidsbestand heeft ongeldige vergelijkingssyntaxis. |
policy/policy-conformance-missing |
Een gecontroleerd beleidsbestand mist een regel die vereist is door het basislijnbeleidsbestand. |
policy/policy-conformance-weaker |
Een gecontroleerd beleidsbestand heeft een zwakkere waarde dan het basislijnbeleidsbestand. |
policy/channels-denied-provider |
Een ingeschakeld kanaal komt overeen met een kanaalweigerregel. |
policy/mcp-denied-server |
Een geconfigureerde MCP-server wordt door beleid geweigerd. |
policy/mcp-unapproved-server |
Een geconfigureerde MCP-server staat buiten de toelatingslijst. |
policy/models-denied-provider |
Een geconfigureerde modelprovider of modelverwijzing gebruikt een geweigerde provider. |
policy/models-unapproved-provider |
Een geconfigureerde modelprovider of modelverwijzing staat buiten de toelatingslijst. |
policy/network-private-access-enabled |
Een SSRF-ontsnappingsmechanisme voor privénetwerken is ingeschakeld terwijl beleid dit weigert. |
policy/ingress-dm-policy-unapproved |
Een kanaal-DM-beleid staat buiten de beleidstoelatingslijst. |
policy/ingress-dm-scope-unapproved |
session.dmScope komt niet overeen met het door beleid vereiste DM-isolatiebereik. |
policy/ingress-open-groups-denied |
Een kanaalgroepsbeleid is open terwijl beleid open groepsingang weigert. |
policy/ingress-group-mention-required |
Een kanaal- of groepsvermelding schakelt vermeldingspoorten uit terwijl beleid ze vereist. |
policy/gateway-non-loopback-bind |
Gateway-bindhouding staat niet-loopback-blootstelling toe terwijl beleid dit weigert. |
policy/gateway-auth-disabled |
Gateway-authenticatie is uitgeschakeld terwijl beleid authenticatie vereist. |
policy/gateway-rate-limit-missing |
Gateway-authenticatie-ratelimit-houding is niet expliciet terwijl beleid dit vereist. |
policy/gateway-control-ui-insecure |
Onveilige blootstellingsschakelaars voor de Gateway Control UI zijn ingeschakeld. |
policy/gateway-tailscale-funnel |
Gateway Tailscale Funnel-blootstelling is ingeschakeld terwijl beleid dit weigert. |
policy/gateway-remote-enabled |
Gateway-externe modus is actief terwijl beleid dit weigert. |
policy/gateway-http-endpoint-enabled |
Een Gateway HTTP API-eindpunt is ingeschakeld terwijl beleid dit weigert. |
policy/gateway-http-url-fetch-unrestricted |
Gateway HTTP URL-fetch-invoer mist een vereiste URL-toelatingslijst. |
policy/agents-workspace-access-denied |
Agent-sandboxmodus of werkruimtetoegang staat buiten de beleidstoelatingslijst. |
policy/agents-tool-not-denied |
Een agent- of standaardconfiguratie weigert geen tool die door beleid vereist wordt. |
policy/tools-profile-unapproved |
Een geconfigureerd globaal of per-agent toolprofiel staat buiten de toelatingslijst. |
policy/tools-fs-workspace-only-required |
Bestandssysteemtools zijn niet geconfigureerd met een padbeleid alleen voor de werkruimte. |
policy/tools-exec-security-unapproved |
Exec-beveiligingsmodus staat buiten de beleidstoelatingslijst. |
policy/tools-exec-ask-unapproved |
Exec-vraagmodus staat buiten de beleidstoelatingslijst. |
policy/tools-exec-host-unapproved |
Exec-hostroutering staat buiten de beleidstoelatingslijst. |
policy/tools-elevated-enabled |
Verhoogde toolmodus is ingeschakeld terwijl beleid dit weigert. |
policy/tools-also-allow-missing |
Een geconfigureerde alsoAllow-lijst mist een vermelding die door beleid vereist is. |
policy/tools-also-allow-unexpected |
Een geconfigureerde alsoAllow-lijst bevat een vermelding die niet door beleid wordt verwacht. |
policy/tools-required-deny-missing |
Een globale of per-agent toolweigerlijst bevat geen vereiste geweigerde tool. |
policy/sandbox-mode-unapproved |
Sandboxmodus staat buiten de beleidstoelatingslijst. |
policy/sandbox-backend-unapproved |
Sandboxbackend staat buiten de beleidstoelatingslijst. |
policy/sandbox-container-posture-unobservable |
Een containerhoudingsregel is ingeschakeld voor een backend die deze niet kan observeren. |
policy/sandbox-container-host-network-denied |
Een containergebaseerde sandbox of browser gebruikt hostnetwerkmodus. |
policy/sandbox-container-namespace-join-denied |
Een containergebaseerde sandbox of browser sluit zich aan bij een andere containernamespace. |
policy/sandbox-container-mount-mode-required |
Een containergebaseerde sandbox- of browsermount is niet alleen-lezen. |
policy/sandbox-container-runtime-socket-mount |
Een containergebaseerde sandbox- of browsermount stelt de containerruntime-socket bloot. |
policy/sandbox-container-unconfined-profile |
Containersandboxprofiel is onbeperkt terwijl beleid dit weigert. |
policy/sandbox-browser-cdp-source-range-missing |
Sandboxbrowser-CDP-bronbereik ontbreekt terwijl beleid er een vereist. |
policy/data-handling-redaction-disabled |
Redactie van gevoelige loggegevens is uitgeschakeld terwijl beleid dit vereist. |
policy/data-handling-telemetry-content-capture |
Vastlegging van telemetrie-inhoud is ingeschakeld terwijl beleid dit weigert. |
policy/data-handling-session-retention-not-enforced |
Onderhoud van sessiebewaring wordt niet afgedwongen terwijl beleid dit vereist. |
policy/data-handling-session-transcript-memory-enabled |
Indexering van sessietranscriptgeheugen is ingeschakeld terwijl beleid dit weigert. |
policy/secrets-unmanaged-provider |
Een configuratie-SecretRef verwijst naar een provider die niet is gedeclareerd onder secrets.providers. |
policy/secrets-denied-provider-source |
Een configuratiegeheimprovider of SecretRef gebruikt een bron die door beleid wordt geweigerd. |
policy/secrets-insecure-provider |
Een geheimprovider kiest voor een onveilige houding terwijl beleid dit weigert. |
policy/auth-profile-invalid-metadata |
Een configuratie-authenticatieprofiel mist geldige provider- of modusmetadata. |
policy/auth-profile-unapproved-mode |
Een configuratie-authenticatieprofielmodus staat buiten de beleidstoelatingslijst. |
policy/exec-approvals-missing |
Beleid vereist exec-approvals.json, maar het artefact ontbreekt. |
policy/exec-approvals-invalid |
Het geconfigureerde exec-goedkeuringsartefact kan niet worden geparseerd. |
policy/exec-approvals-default-security-unapproved |
Exec-goedkeuringsstandaarden gebruiken een beveiligingsmodus buiten de beleidstoelatingslijst. |
policy/exec-approvals-agent-security-unapproved |
Een effectieve exec-goedkeuringsbeveiligingsmodus per agent staat buiten de toelatingslijst. |
policy/exec-approvals-auto-allow-skills-enabled |
Een exec-goedkeuringsagent staat impliciet automatisch skill-CLI's toe terwijl beleid dit weigert. |
policy/exec-approvals-allowlist-missing |
De goedkeuringstoelatingslijst mist een patroon dat door beleid vereist is. |
policy/exec-approvals-allowlist-unexpected |
De goedkeuringstoelatingslijst bevat een patroon dat niet door beleid wordt verwacht. |
policy/tools-missing-risk-level |
Een beheerde tooldeclaratie mist risicometadata. |
policy/tools-unknown-risk-level |
Een beheerde tooldeclaratie gebruikt een onbekende risicowaarde. |
policy/tools-missing-sensitivity-token |
Een beheerde tooldeclaratie mist gevoeligheidsmetadata. |
policy/tools-missing-owner |
Een beheerde tooldeclaratie mist eigenaarsmetadata. |
policy/tools-unknown-sensitivity-token |
Een beheerde tooldeclaratie gebruikt een onbekende gevoeligheidswaarde. |
Beleidsbevindingen kunnen zowel target als requirement bevatten. target is het
waargenomen werkruimteobject dat niet voldoet. requirement is de geschreven
beleidsregel waardoor het een bevinding werd. Beide waarden zijn momenteel adressen,
meestal oc://-paden, maar de veldnamen beschrijven hun beleidsrol in plaats van de
adresindeling.
Voorbeeld-JSON-bevinding:
{ "checkId": "policy/channels-denied-provider", "severity": "error", "message": "Channel 'telegram' uses denied provider 'telegram'.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/channels/telegram", "target": "oc://openclaw.config/channels/telegram", "requirement": "oc://policy.jsonc/channels/denyRules/#0", "fixHint": "Telegram is not approved for this workspace."}Voorbeeld-toolbevinding:
{ "checkId": "policy/tools-missing-risk-level", "severity": "error", "message": "TOOLS.md tool 'deploy' has no explicit risk classification.", "source": "policy", "path": "TOOLS.md", "line": 12, "ocPath": "oc://TOOLS.md/tools/deploy", "target": "oc://TOOLS.md/tools/deploy", "requirement": "oc://policy.jsonc/tools/requireMetadata"}Voorbeeld-MCP-bevinding:
{ "checkId": "policy/mcp-unapproved-server", "severity": "error", "message": "MCP server 'remote' is not in the policy allowlist.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/mcp/servers/remote", "target": "oc://openclaw.config/mcp/servers/remote", "requirement": "oc://policy.jsonc/mcp/servers/allow"}Voorbeeld-modelproviderbevinding:
{ "checkId": "policy/models-unapproved-provider", "severity": "error", "message": "Model ref 'anthropic/claude-sonnet-4.7' uses unapproved provider 'anthropic'.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/agents/defaults/model/fallbacks/#0", "target": "oc://openclaw.config/agents/defaults/model/fallbacks/#0", "requirement": "oc://policy.jsonc/models/providers/allow"}Voorbeeld-netwerkbevinding:
{ "checkId": "policy/network-private-access-enabled", "severity": "error", "message": "Network setting 'browser-private-network' allows private-network access.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "target": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "requirement": "oc://policy.jsonc/network/privateNetwork/allow"}Voorbeeldbevinding voor Gateway-blootstelling:
{ "checkId": "policy/gateway-non-loopback-bind", "severity": "error", "message": "Gateway bind setting 'gateway-bind' permits non-loopback exposure.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/gateway/bind", "target": "oc://openclaw.config/gateway/bind", "requirement": "oc://policy.jsonc/gateway/exposure/allowNonLoopbackBind"}Voorbeeldbevinding voor agentwerkruimte:
{ "checkId": "policy/agents-workspace-access-denied", "severity": "error", "message": "agents.defaults sandbox workspaceAccess 'rw' is not allowed by policy.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "target": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "requirement": "oc://policy.jsonc/agents/workspace/allowedAccess"}Herstel
doctor --lint en policy check zijn alleen-lezen.
doctor --fix bewerkt alleen door beleid beheerde werkruimte-instellingen wanneer
workspaceRepairs expliciet is ingeschakeld. Zonder die opt-in melden beleidscontroles
wat ze zouden repareren en laten ze instellingen ongewijzigd.
In deze versie kan reparatie kanalen uitschakelen die in de OpenClaw-configuratie zijn ingeschakeld
maar door channels.denyRules worden geweigerd. Schakel workspaceRepairs pas in nadat het
beleidsbestand is beoordeeld, omdat een geldige weigerregel een
geconfigureerd kanaal kan uitschakelen:
{ "plugins": { "entries": { "policy": { "config": { "workspaceRepairs": true, }, }, }, },}Exitcodes
| Opdracht | 0 |
1 |
2 |
|---|---|---|---|
policy check |
Geen bevindingen op de drempel. | Een of meer bevindingen voldeden aan de drempel. | Argument- of runtimefout. |
policy compare |
Het beleidsbestand is minstens zo strikt als de baseline. | Het beleidsbestand is ongeldig, ontbreekt of is zwakker dan baseline-regels. | Argument- of runtimefout. |
policy watch |
Geen bevindingen en geaccepteerde hash is actueel. | Er bestaan bevindingen of de geaccepteerde attestatie is verouderd. | Argument- of runtimefout. |