openclaw policy
openclaw policy wordt geleverd door de gebundelde Policy-plugin. Het is een bedrijfsbrede
conformiteitslaag boven op bestaande OpenClaw-instellingen, geen tweede configuratie-
systeem. Je stelt vereisten op in policy.jsonc; OpenClaw observeert de actieve
werkruimte als bewijs; Policy rapporteert afwijkingen via doctor --lint. Policy
dwingt geen toolaanroepen af en herschrijft het runtimegedrag niet tijdens een aanvraag,
en attesteert geen referentieopslagplaatsen per agent, zoals auth-profiles.json.
Policy controleert geconfigureerde kanalen, MCP-servers, modelproviders, de SSRF-
beveiliging van het netwerk, toegang via inkomend verkeer/kanalen, blootstelling van de Gateway en de
houding voor Node-opdrachten, opgestelde routeringsprobes voor berichten,
toegang tot agentwerkruimten, sandboxhouding, gegevensverwerkingshouding, de houding
van geheime providers/authenticatieprofielen en metadata van beheerde tools (TOOLS.md). Gebruik het
wanneer een werkruimte een duurzame, controleerbare verklaring nodig heeft, zoals ‘Telegram mag
niet zijn ingeschakeld’ of ‘beheerde tools moeten metadata voor risico en eigenaar declareren’. Als
je alleen lokaal gedrag nodig hebt zonder attestatie of afwijkingsdetectie, volstaat een gewone
configuratie.
Snel aan de slag
policy.jsonc ontbreekt, zodat doctor
het ontbrekende artefact kan rapporteren in plaats van controles stilzwijgend over te slaan.
Stel policy.jsonc handmatig op; het wordt niet gegenereerd uit de huidige instellingen. Elke
sectie op het hoogste niveau is een regelnaamruimte: een controle wordt alleen uitgevoerd wanneer er
een concrete regel onder staat (niet-ondersteunde secties of sleutels mislukken als
policy/policy-jsonc-invalid in plaats van stilzwijgend te worden genegeerd). Minimaal
voorbeeld dat elke ondersteunde sectie omvat:
- Als je
gateway.bindweglaat terwijl niet-loopbackbindingen worden geweigerd, betekent dit dat je de standaardwaarde van de runtime accepteert; stelgateway.bind: "loopback"in voor strikte conformiteit. - Stel voor een alleen-lezenagent sandbox
modein opallofnon-mainbij de toepasselijke standaardwaarden/agent enworkspaceAccessopnoneofro. Een ontbrekende sandboxmodus of sandboxmodusoffvoldoet niet aan een alleen-lezenbeleid. agents.workspace.denyToolsaccepteertexec,process,write,edit,apply_patch. De groepen voor het weigeren van configuratietoolsgroup:fs(bestandswijziging) engroup:runtime(shell/proces) voldoen aan de equivalente houding.- Controles voor uitvoeringsgoedkeuringen lezen het actieve artefact
exec-approvals.jsonalleen wanneer een regelexecApprovalsaanwezig is; een ontbrekend of ongeldig artefact is niet-observeerbaar bewijs, geen kunstmatig geslaagde controle. - Bewijs voor geheimen en authenticatieprofielen registreert alleen de houding van providers/bronnen en
SecretRef-metadata, nooit onbewerkte waarden. Policy leest of attesteert geen
referentieopslagplaatsen per agent, zoals
auth-profiles.json. - Bewijs voor gegevensverwerking betreft alleen de houding op configuratieniveau (redactiemodus, schakeloptie voor telemetrieverzameling, modus voor sessieonderhoud, instelling voor transcriptindexering). Het inspecteert geen logboeken, telemetrie-exports, transcripten of geheugenbestanden, en een schoon resultaat bewijst niet dat deze geen persoonsgegevens of geheimen bevatten.
- Routeringsprobes gebruiken opnieuw de runtimebindingsresolver van OpenClaw. Routeringsbewijs registreert alleen de probe-id, opgeloste agent, het overeenkomsttype en geredigeerde bindings- metadata. Het registreert nooit identificatoren van peers, accounts, guilds, teams of rollen. Door een routeringssectie toe te voegen, veranderen de beleids- en attestatiehashes bewust; beleidsregels zonder routering behouden hun bestaande bewijsvorm.
Naslaginformatie voor beleidsregels
Elke onderstaande regel is optioneel; een controle wordt alleen uitgevoerd wanneer de regel aanwezig is. De waargenomen status bestaat uit bestaande OpenClaw-configuratie of werkruimtemetadata.Overlays met bereik
Gebruikscopes.<scopeName> wanneer specifieke agents of kanalen een strenger beleid nodig hebben
dan de basislijn op het hoogste niveau. De bereiknaam is slechts een label; voor overeenkomsten wordt de
selector binnen het bereik gebruikt. Overlays zijn additief: de globale regel blijft actief
en de regel met bereik kan een eigen bevinding aan hetzelfde bewijs toevoegen.
Als een vermelding
agentIds niet aanwezig is in agents.entries.*, evalueert OpenClaw
de regel met bereik aan de hand van de overgenomen globale/standaardhouding voor die runtime-
agent-id in plaats van deze over te slaan.
sandbox.containers.*) worden alleen gecontroleerd aan de hand van
bewijs dat de sandboxbackend van de overeenkomende agent kan blootleggen. Als een backend
een regel die je ervoor hebt ingeschakeld niet kan observeren, rapporteert Policy
policy/sandbox-container-posture-unobservable in plaats van een geslaagde controle; beperk
containerregels tot de agentgroepen die een backend gebruiken die ze kan blootleggen.
ingress.session.requireDmScope op het hoogste niveau blijft globaal; session.dmScope is
geen bewijs dat aan een kanaal kan worden toegeschreven en kan daarom niet worden beperkt via channelIds.
Elk bereik dat aanwezig is in policy.jsonc moet geldig en afdwingbaar zijn.
Kanalen
MCP-servers
Modelproviders
Netwerk
Berichtroutering
Probe-id’s moeten uniek zijn. Een route ondersteunt
channel, optioneel accountId,
peer, parentPeer, guildId, teamId en memberRoleIds. Peertypen zijn
direct, group en channel. matchedBy kan een of meer runtime-
overeenkomsttypen bevatten, waaronder binding.peer, binding.account, binding.channel
of default.
Routeringscontroles zijn uitsluitend conformiteitscontroles. Ze wijzigen het opstarten,
de berichtbezorging, de prioriteit van koppelingen of het terugvalgedrag niet. Bevindingen vereisen
beoordeling door de beheerder, omdat het automatisch wijzigen van een koppeling
privéberichten kan omleiden.
Inkomend verkeer en kanaaltoegang
Gateway
gateway.nodes.denyCommands is een exacte, hoofdlettergevoelige beleidsregel voor een weigeringssuperset.
Gebruik deze wanneer het beleid moet aantonen dat bevoorrechte Node-opdrachten expliciet
door de OpenClaw-configuratie worden geweigerd. Een implementatie die bewust een bevoorrechte
Node-opdracht toestaat, moet na beoordeling policy.jsonc bijwerken in plaats van alleen op
gateway.nodes.commands.allow te vertrouwen.
Agentwerkruimte
Sandboxconfiguratie
Het beleid behandelt een ontbrekende
sandbox.mode als de impliciete standaardwaarde off, zodat
sandbox.requireMode een nieuwe of niet-geconfigureerde sandbox rapporteert als buiten een
toegestane lijst zoals ["all"].
Gegevensverwerking
Geheimen
Exec-goedkeuringen
Controles van Exec-goedkeuringen lezen het runtime-artefactexec-approvals.json:
standaard ~/.openclaw/exec-approvals.json, of
$OPENCLAW_STATE_DIR/exec-approvals.json wanneer OPENCLAW_STATE_DIR is ingesteld.
Configuratieregels onder execApprovals.defaults.* of execApprovals.agents.*
vereisen leesbaar bewijs uit het artefact; een ontbrekend of ongeldig artefact wordt gerapporteerd als
niet-waarneembaar bewijs in plaats van een goedkeuring op basis van een best-effortpoging. Zodra het leesbaar is, nemen weggelaten
velden de runtime-standaardwaarden over: een ontbrekende defaults.security is full, en
ontbrekende agentbeveiliging neemt die standaardwaarde over. Bewijs omvat defaults,
agents.*, agents.*.allowlist[].pattern, optioneel argPattern, de effectieve
autoAllowSkills-configuratie en de bron van de vermelding — nooit het socketpad/token,
commandText, lastUsedCommand, opgeloste paden of tijdstempels.
Voorbeeld: vereis het goedkeuringsartefact, weiger ruime standaardwaarden en sta
alleen een beoordeelde houding voor uitvoeringsgoedkeuring toe voor geselecteerde agents.
Authenticatieprofielen
Toolmetadata
Toolhouding
Controles uitvoeren
Voer tijdens het opstellen alleen beleidscontroles uit:policy check voert alleen de beleidscontroleset uit en produceert bewijsmateriaal, bevindingen
en attestatiehashes. Dezelfde bevindingen verschijnen ook in
openclaw doctor --lint wanneer de Policy-plugin is ingeschakeld.
Vergelijk een beleidsbestand van een beheerder met een opgestelde basislijn:
policy compare controleert de syntaxis van een beleidsbestand tegen de syntaxis van een beleidsbestand; het
inspecteert geen runtimestatus, bewijsmateriaal, aanmeldgegevens of geheimen. Het gebruikt dezelfde
regelmetadata die overlays met een bereik beheert: toestemmingslijsten moeten gelijk of
beperkter blijven, weigeringslijsten moeten gelijk of ruimer blijven, vereiste booleaanse waarden moeten
hun waarde behouden, geordende tekenreeksen mogen alleen naar het strengere uiteinde van de
geconfigureerde volgorde bewegen en exacte lijsten moeten overeenkomen. De basislijn kan een
door een organisatie opgesteld beleid zijn; het gecontroleerde beleid mag strengere waarden of
extra regels toevoegen. Een gecontroleerde regel op het hoogste niveau kan voldoen aan een basislijnregel met een bereik wanneer
deze even beperkend of beperkter is. Bereiknamen hoeven tussen
bestanden niet overeen te komen; de vergelijking wordt bepaald door selector (agentIds/channelIds) en veld.
Voor routeringsprobes moet elke probe-id in de basislijn behouden blijven met dezelfde route
en verwachte agent. Een gecontroleerd beleid mag probes toevoegen of matchedBy beperken, maar
het verwijderen van een probe, het wijzigen van de route of agent, of het verruimen van de geaccepteerde overeenkomsttypen
is minder streng.
Geslaagde vergelijking (--json):
policy check --json-uitvoer bevat stabiele hashes die een beheerder of
toezichthouder kan vastleggen:
Beleid configureren
De beleidsconfiguratie bevindt zich onderplugins.entries.policy.config.
Stel
plugins.entries.policy.config.enabled in op false om beleidscontroles
voor een werkgebied uit te schakelen terwijl de plugin geïnstalleerd blijft.
Beleidsstatus accepteren
Voorbeeld van JSON-uitvoer:attestation.policy.hash identificeert het opgestelde regelartefact. evidence
registreert de waargenomen OpenClaw-status die door de controles is gebruikt, en
workspace.hash identificeert die bewijspayload. findingsHash identificeert
de exacte reeks bevindingen. checkedAt registreert wanneer de controle is uitgevoerd.
attestationHash identificeert de stabiele claim (beleidshash, bewijshash,
bevindingenhash en schone/vuile status) en sluit bewust checkedAt uit,
zodat dezelfde beleidsstatus altijd dezelfde attestatiehash oplevert. Samen
vormen deze vier waarden het audittupel voor één beleidscontrole.
Als een Gateway of supervisor beleid gebruikt om een runtimeactie te blokkeren,
goed te keuren of van een annotatie te voorzien, moet deze de attestatiehash van
de laatste schone controle registreren. checkedAt blijft in de JSON-uitvoer
voor auditlogboeken, maar maakt geen deel uit van de stabiele hash.
Levenscyclus voor het accepteren van de beleidsstatus:
- Stel
policy.jsoncop of beoordeel dit. - Voer
openclaw policy check --jsonuit. - Registreer bij een schone status
attestation.policy.hashalsexpectedHash. - Registreer
attestation.attestationHashalsexpectedAttestationHash. - Voer
openclaw doctor --lintopnieuw uit in CI- of releasepoorten.
expectedAttestationHash.
Het inschakelen of upgraden van agents.workspace-regels voegt
agentWorkspace-bewijs toe aan de werkruimtehash en attestatiehash; beoordeel
het nieuwe bewijs en vernieuw de geaccepteerde attestatiehashes na het
inschakelen. Het inschakelen of upgraden van regels voor de toolhouding voegt
op dezelfde manier toolPosture-bewijs toe.
openclaw policy watch voert de controle opnieuw uit en meldt wanneer het huidige
bewijs niet meer overeenkomt met expectedAttestationHash:
--once in CI of scripts die één driftevaluatie nodig hebben.
Zonder --once wordt standaard elke twee seconden gepolld; gebruik
--interval-ms om het interval te wijzigen.
Bevindingen
Een bevinding kan zowel
target bevatten (het waargenomen element in de werkruimte dat
niet voldoet) als requirement (de vastgelegde regel waardoor het een bevinding werd).
Beide zijn momenteel oc://-adresreeksen, maar de veldnamen beschrijven de beleidsrol
in plaats van de adresindeling.
Voorbeeldbevindingen:
Herstel
doctor --lint en policy check zijn alleen-lezen.
doctor --fix bewerkt alleen door beleid beheerde werkruimte-instellingen wanneer
workspaceRepairs expliciet is ingeschakeld; anders melden controles wat ze
zouden herstellen en laten ze de instellingen ongewijzigd.
In deze versie kan herstel kanalen uitschakelen die door channels.denyRules worden geweigerd en
de hieronder vermelde automatische inperkingsreparaties toepassen. Schakel workspaceRepairs
alleen in nadat het beleidsbestand is gecontroleerd, omdat een geldige regel de
werkruimteconfiguratie kan wijzigen:
- stel
tools.elevated.enabled=falsein wanneer globaal beleid verhoogde tools verbiedt - voeg ontbrekende verplicht te weigeren tool-id’s toe aan
tools.denyofagents.entries.*.tools.denywanneer het beleid vereist dat die tools worden geweigerd - stel onveilige
gateway.controlUi.*-schakelaars in opfalse - stel
gateway.mode=localin wanneer het beleid de externe Gateway-modus weigert - stel gemelde
gateway.http.endpoints.*.enabled-paden in opfalsewanneer het beleid Gateway HTTP API-eindpunten weigert - stel gemelde
groupPolicy-paden voor kanaalingang in opallowlistwanneer het beleid open groepsingang weigert - stel gemelde
requireMention-paden voor kanaalingang in optruewanneer het beleid groepsvermeldingen vereist - stel
logging.redactSensitive=toolsin wanneer het beleid redactie van gevoelige loggegevens vereist - stel
diagnostics.otel.captureContent=falsein, ofdiagnostics.otel.captureContent.enabled=falsevoor telemetrie- vastleggingsinstellingen in objectvorm, wanneer het beleid vastlegging van telemetrie-inhoud weigert
tools.deny meldt, omdat toevoeging van de vereiste tool aan de hoofdconfiguratie
meer zou beïnvloeden dan het beleidsdoel met beperkt bereik. Herstel van verplichte weigeringen op agentniveau kan
het gemelde agents.entries.*.tools.deny-pad bijwerken.
Herstel van kanaalingang met een beperkt bereik wordt overgeslagen wanneer de bevinding overgenomen
channels.defaults.* meldt, omdat wijziging van de gedeelde kanaalstandaard
meer zou beïnvloeden dan het beleidsdoel met beperkt bereik. Bevindingen voor de URL-ophaallijst van Gateway HTTP
blijven handmatig, omdat automatisch herstel niet de juiste waarden voor de
toegestane lijst met eindpunt-URL’s kan kiezen.
Bevindingen voor Gateway-bindingen en Node-commando’s blijven beoordeling vereisen. Wanneer
policy/gateway-non-loopback-bind of policy/gateway-node-command-denied
aan een configuratiepad kan worden gekoppeld, meldt doctor --fix de voorgestelde
wijziging van gateway.bind of gateway.nodes.commands.deny als overgeslagen
voorbeeldadvies. De wijziging wordt niet toegepast en de bevinding telt pas als
hersteld nadat een beheerder de configuratie of het beleid heeft gecontroleerd en bijgewerkt.