openclaw policy
openclaw policy est fourni par le Plugin Policy intégré. Il constitue une couche de
conformité d’entreprise appliquée aux paramètres OpenClaw existants, et non un second
système de configuration. Vous définissez les exigences dans policy.jsonc ; OpenClaw
observe l’espace de travail actif comme élément de preuve ; la stratégie signale les
écarts au moyen de doctor --lint. La stratégie n’impose pas les appels d’outils et ne
réécrit pas le comportement d’exécution lors du traitement des requêtes ; elle
n’atteste pas non plus les magasins d’identifiants propres aux agents, tels que
auth-profiles.json.
La stratégie vérifie les canaux configurés, les serveurs MCP, les fournisseurs de
modèles, la posture réseau relative aux SSRF, les accès entrants et aux canaux,
l’exposition du Gateway et la posture des commandes des nœuds, l’accès des agents à
l’espace de travail, la posture du bac à sable, la posture de traitement des données,
la posture des fournisseurs de secrets et des profils d’authentification, ainsi que
les métadonnées des outils régis (TOOLS.md). Utilisez-la lorsqu’un espace de travail
nécessite une déclaration durable et vérifiable, telle que « Telegram ne doit pas être
activé » ou « les outils régis doivent déclarer des métadonnées de risque et de
propriétaire ». Si vous avez uniquement besoin d’un comportement local sans attestation
ni détection des écarts, la configuration ordinaire suffit.
Démarrage rapide
policy.jsonc est absent, afin que doctor puisse
signaler l’artefact manquant au lieu d’ignorer silencieusement les vérifications.
Rédigez policy.jsonc manuellement ; il n’est pas généré à partir des paramètres
actuels. Chaque section de premier niveau constitue un espace de noms de règles :
une vérification ne s’exécute que lorsqu’une règle concrète y est présente (les
sections ou clés non prises en charge échouent avec
policy/policy-jsonc-invalid au lieu d’être ignorées silencieusement). Exemple
minimal couvrant toutes les sections prises en charge :
- Omettre
gateway.bindtout en interdisant les liaisons hors local loopback signifie que vous acceptez la valeur par défaut à l’exécution ; définissezgateway.bind: "loopback"pour une conformité stricte. - Pour un agent en lecture seule, définissez le
modedu bac à sable surallounon-maindans les valeurs par défaut ou l’agent concerné, etworkspaceAccesssurnoneouro. Un mode de bac à sable absent ou défini suroffne satisfait pas une stratégie de lecture seule. agents.workspace.denyToolsaccepteexec,process,write,edit,apply_patch. Les groupes de refus d’outils de la configurationgroup:fs(modification de fichiers) etgroup:runtime(shell/processus) satisfont la posture équivalente.- Les vérifications d’approbation d’exécution lisent l’artefact actif
exec-approvals.jsonuniquement lorsqu’une règleexecApprovalsest présente ; un artefact absent ou non valide constitue une preuve non observable, et non une réussite synthétique. - Les éléments de preuve relatifs aux secrets et aux profils d’authentification
enregistrent uniquement la posture du fournisseur ou de la source ainsi que
les métadonnées SecretRef, jamais les valeurs brutes. La stratégie ne lit ni
n’atteste les magasins d’identifiants propres aux agents, tels que
auth-profiles.json. - Les éléments de preuve relatifs au traitement des données portent uniquement sur la posture au niveau de la configuration (mode de masquage, option de capture de télémétrie, mode de maintenance des sessions, paramètre d’indexation des transcriptions). Ils n’inspectent ni les journaux, ni les exportations de télémétrie, ni les transcriptions, ni les fichiers de mémoire, et un résultat conforme ne prouve pas qu’ils ne contiennent aucune donnée personnelle ni aucun secret.
Référence des règles de stratégie
Toutes les règles ci-dessous sont facultatives ; une vérification ne s’exécute que lorsque la règle est présente. L’état observé correspond à la configuration OpenClaw existante ou aux métadonnées de l’espace de travail.Superpositions ciblées
Utilisezscopes.<scopeName> lorsque certains agents ou canaux nécessitent une
stratégie plus stricte que la référence de premier niveau. Le nom de la portée
est uniquement une étiquette ; la correspondance utilise le sélecteur situé
dans la portée. Les superpositions sont cumulatives : la règle globale
s’exécute toujours, et la règle ciblée peut ajouter son propre constat à partir
des mêmes éléments de preuve.
Si une entrée
agentIds n’est pas présente dans agents.list[], OpenClaw
évalue la règle ciblée par rapport à la posture globale ou par défaut héritée
pour cet identifiant d’agent d’exécution, au lieu de l’ignorer.
sandbox.containers.*) sont vérifiées
uniquement par rapport aux éléments de preuve que le moteur de bac à sable de
l’agent correspondant peut exposer. Si un moteur ne peut pas observer une règle
que vous avez activée pour lui, la stratégie signale
policy/sandbox-container-posture-unobservable au lieu de la considérer comme
satisfaite ; limitez les règles de conteneur aux groupes d’agents qui utilisent
un moteur capable de les exposer.
La règle de premier niveau ingress.session.requireDmScope reste globale ;
session.dmScope ne constitue pas un élément de preuve attribuable à un canal
et ne peut donc pas être ciblé par channelIds.
Chaque portée présente dans policy.jsonc doit être valide et applicable.
Canaux
Serveurs MCP
Fournisseurs de modèles
Réseau
Accès entrant et accès aux canaux
Gateway
gateway.nodes.denyCommands est une règle de sur-ensemble de refus exacte et sensible à la casse.
Utilisez-la lorsque la stratégie doit prouver que les commandes privilégiées de nœud sont explicitement
refusées par la configuration OpenClaw. Un déploiement qui autorise intentionnellement une commande
privilégiée de nœud doit mettre à jour policy.jsonc après examen au lieu de s’appuyer uniquement sur
gateway.nodes.allowCommands.
Espace de travail de l’agent
Configuration de sécurité du bac à sable
La stratégie considère un
sandbox.mode absent comme sa valeur implicite par défaut off. Ainsi,
sandbox.requireMode signale qu’un bac à sable nouveau ou non configuré ne figure pas dans une
liste d’autorisation telle que ["all"].
Traitement des données
Secrets
Approbations d’exécution
Les vérifications des approbations d’exécution lisent l’artefact d’exécutionexec-approvals.json :
~/.openclaw/exec-approvals.json par défaut, ou
$OPENCLAW_STATE_DIR/exec-approvals.json lorsque OPENCLAW_STATE_DIR est défini.
Les règles de configuration sous execApprovals.defaults.* ou execApprovals.agents.*
exigent des preuves lisibles provenant de l’artefact ; un artefact absent ou non valide est signalé
comme une preuve non observable plutôt que comme une validation au mieux. Une fois l’artefact lisible,
les champs omis héritent des valeurs d’exécution par défaut : une valeur defaults.security absente vaut full,
et la sécurité d’un agent absente hérite de cette valeur par défaut. Les preuves comprennent defaults,
agents.*, agents.*.allowlist[].pattern, l’éventuel argPattern, la configuration effective
d’autoAllowSkills et la source de l’entrée — jamais le chemin ou le jeton du socket,
commandText, lastUsedCommand, les chemins résolus ni les horodatages.
Exemple : exiger l’artefact d’approbations, refuser les valeurs par défaut permissives et autoriser
uniquement la configuration d’approbation d’exécution examinée pour les agents sélectionnés.
Profils d’authentification
Métadonnées des outils
Posture des outils
Exécuter les vérifications
Exécutez uniquement les vérifications de politique pendant la rédaction :policy check exécute uniquement l’ensemble des vérifications de politique et produit les éléments de preuve, les constats
et les empreintes d’attestation. Les mêmes constats apparaissent également dans
openclaw doctor --lint lorsque le Plugin Policy est activé.
Comparez un fichier de politique d’opérateur à une référence rédigée :
policy compare vérifie la syntaxe d’un fichier de politique par rapport à celle d’un autre fichier de politique ; il
n’inspecte pas l’état d’exécution, les éléments de preuve, les identifiants d’accès ni les secrets. Il utilise les mêmes
métadonnées de règles que celles qui régissent les superpositions délimitées : les listes d’autorisation doivent rester identiques ou
plus restrictives, les listes de refus doivent rester identiques ou plus larges, les booléens obligatoires doivent conserver
leur valeur, les chaînes ordonnées ne peuvent évoluer que vers l’extrémité la plus stricte de
l’ordre configuré, et les listes exactes doivent correspondre. La référence peut être une
politique rédigée par l’organisation ; la politique vérifiée peut ajouter des valeurs plus strictes ou
des règles supplémentaires. Une règle vérifiée de premier niveau peut satisfaire une règle de référence délimitée lorsqu’elle
est aussi restrictive ou plus restrictive. Les noms de portées n’ont pas besoin de correspondre entre
les fichiers ; la comparaison utilise le sélecteur (agentIds/channelIds) et le champ comme clés.
Comparaison sans constat (--json) :
policy check --json inclut des empreintes stables qu’un opérateur ou
un superviseur peut enregistrer :
Configurer la politique
La configuration de la politique se trouve sousplugins.entries.policy.config.
Définissez
plugins.entries.policy.config.enabled sur false pour désactiver les vérifications de
politique d’un espace de travail tout en laissant le Plugin installé.
Accepter l’état de la politique
Exemple de sortie JSON :attestation.policy.hash identifie l’artefact de règles rédigé. evidence
enregistre l’état OpenClaw observé utilisé par les vérifications, et
workspace.hash identifie cette charge utile de preuve. findingsHash identifie
l’ensemble exact des constats. checkedAt enregistre la date d’exécution de la vérification.
attestationHash identifie l’affirmation stable (empreinte de la politique, empreinte des preuves,
empreinte des constats et état sans constat/avec constats) et exclut délibérément checkedAt,
de sorte qu’un même état de politique produit toujours la même empreinte d’attestation. Ensemble,
ces quatre valeurs forment le tuple d’audit d’une vérification de politique.
Si un Gateway ou un superviseur utilise la politique pour bloquer, approuver ou annoter une
action d’exécution, il doit enregistrer l’empreinte d’attestation de la dernière vérification
sans constat. checkedAt reste dans la sortie JSON pour les journaux d’audit, mais ne fait pas partie de
l’empreinte stable.
Cycle de vie de l’acceptation de l’état de la politique :
- Rédigez ou examinez
policy.jsonc. - Exécutez
openclaw policy check --json. - En l’absence de constat, enregistrez
attestation.policy.hashcommeexpectedHash. - Enregistrez
attestation.attestationHashcommeexpectedAttestationHash. - Réexécutez
openclaw doctor --lintdans les contrôles de CI ou de publication.
expectedAttestationHash change généralement.
L’activation ou la mise à niveau des règles agents.workspace ajoute des éléments de preuve agentWorkspace au hachage de l’espace de travail et au hachage d’attestation ; examinez les nouveaux éléments de preuve et actualisez les hachages d’attestation acceptés après l’activation. L’activation ou la mise à niveau des règles de posture des outils ajoute de la même manière des éléments de preuve toolPosture.
openclaw policy watch réexécute la vérification et signale lorsque les éléments de preuve actuels ne correspondent plus à expectedAttestationHash :
--once dans la CI ou dans les scripts nécessitant une seule évaluation de dérive. Sans --once, la commande interroge par défaut toutes les deux secondes ; utilisez --interval-ms pour modifier l’intervalle.
Constats
Un constat peut inclure à la fois
target (l’élément observé dans l’espace de travail qui n’est pas conforme) et requirement (la règle définie qui a produit le constat). Ces deux champs sont actuellement des chaînes d’adresse oc://, mais leurs noms décrivent leur rôle dans la politique plutôt que le format de l’adresse.
Exemples de constats :
Réparation
doctor --lint et policy check sont en lecture seule.
doctor --fix ne modifie les paramètres de l’espace de travail gérés par la politique que lorsque
workspaceRepairs est explicitement activé ; sinon, les vérifications indiquent ce qu’elles
répareraient et laissent les paramètres inchangés.
Dans cette version, la réparation peut désactiver les canaux interdits par channels.denyRules et
appliquer les réparations automatiques de restriction répertoriées ci-dessous. N’activez
workspaceRepairs qu’après avoir examiné le fichier de politique, car une règle valide peut modifier
la configuration de l’espace de travail :
- définir
tools.elevated.enabled=falselorsqu’une politique globale interdit les outils à privilèges élevés - ajouter les identifiants d’outils manquants dont l’interdiction est obligatoire à
tools.denyouagents.list[].tools.denylorsque la politique exige que ces outils soient interdits - définir les options non sécurisées
gateway.controlUi.*surfalse - définir
gateway.mode=locallorsque la politique interdit le mode Gateway distant - définir sur
falseles cheminsgateway.http.endpoints.*.enabledsignalés lorsque la politique interdit les points de terminaison de l’API HTTP du Gateway - définir sur
allowlistles cheminsgroupPolicysignalés pour les entrées de canal lorsque la politique interdit les entrées de groupe ouvertes - définir sur
trueles cheminsrequireMentionsignalés pour les entrées de canal lorsque la politique exige des mentions dans les groupes - définir
logging.redactSensitive=toolslorsque la politique exige le masquage des données sensibles dans les journaux - définir
diagnostics.otel.captureContent=false, oudiagnostics.otel.captureContent.enabled=falsepour les paramètres de capture télémétrique sous forme d’objet, lorsque la politique interdit la capture du contenu télémétrique
tools.deny racine hérité, car l’ajout de l’outil requis à la configuration racine affecterait
davantage que la cible de politique concernée. Les réparations locales à un agent des interdictions
obligatoires peuvent mettre à jour le chemin agents.list[].tools.deny signalé.
Les réparations ciblées des entrées de canal sont ignorées lorsque le constat signale un
channels.defaults.* hérité, car la modification de la valeur par défaut partagée du canal affecterait
davantage que la cible de politique concernée. Les constats relatifs à la liste d’autorisation de
récupération d’URL HTTP du Gateway restent manuels, car la réparation automatique ne peut pas choisir
les valeurs correctes de la liste d’autorisation des URL de point de terminaison.
Les constats relatifs à la liaison et aux commandes de nœud du Gateway nécessitent toujours un examen. Lorsque
policy/gateway-non-loopback-bind ou policy/gateway-node-command-denied
peut être associé à un chemin de configuration, doctor --fix signale la modification proposée de
gateway.bind ou gateway.nodes.denyCommands comme un aperçu ignoré à titre indicatif.
Il n’applique pas la modification, et le constat n’est pas considéré comme réparé tant qu’un opérateur
n’a pas examiné et mis à jour la configuration ou la politique.