Zum Hauptinhalt springen

openclaw policy

openclaw policy wird vom gebündelten Policy-Plugin bereitgestellt. Policy ist eine Enterprise-Konformitätsschicht über bestehenden OpenClaw-Einstellungen. Sie fügt kein zweites Konfigurationssystem hinzu. policy.jsonc definiert verfasste Anforderungen, OpenClaw beobachtet den aktiven Arbeitsbereich als Nachweis, und Policy-Integritätsprüfungen melden Abweichungen über doctor --lint. Das abschließende Konformitätssignal ist ein sauberer doctor --lint-Lauf; Policy trägt Befunde zu dieser gemeinsamen Lint-Oberfläche bei, statt ein separates Integritäts-Gate zu erstellen. Policy verwaltet derzeit konfigurierte Kanäle, MCP-Server, Modell-Provider, Netzwerk-SSRF-Haltung, Ingress-/Kanalzugriffshaltung, Gateway-Expositionshaltung, Agent-Arbeitsbereichshaltung, Datenverarbeitungshaltung, OpenClaw-Konfigurationshaltung für Secret-Provider/Auth-Profile sowie verwaltete Tool-Deklarationen. Beispielsweise können IT oder ein Arbeitsbereichsbetreiber festhalten, dass Telegram kein genehmigter Kanal-Provider ist, MCP-Server und Modellreferenzen auf genehmigte Einträge beschränken, verlangen, dass Fetch-/Browser-Zugriff auf private Netzwerke deaktiviert bleibt, verlangen, dass Direct-Message-Sitzungsisolierung und Kanal-Ingress-Haltung innerhalb geprüfter Grenzen bleiben, verlangen, dass Gateway-Bind/Auth/HTTP-Exposition innerhalb geprüfter Grenzen bleibt, verlangen, dass Agent-Arbeitsbereichszugriff und Tool-Verweigerungen in einer geprüften Haltung bleiben, verlangen, dass OpenClaw-Konfigurations-SecretRefs verwaltete Provider verwenden, verlangen, dass Konfigurations-Auth-Profile Provider-/Modus-Metadaten tragen, verlangen, dass verwaltete Tools Risiko- und Sensitivitätsmetadaten tragen, sensible Logging-Redaktion verlangen, Telemetrie-Inhaltserfassung verweigern, Sitzungsaufbewahrungswartung verlangen, Sitzungs-Transkript-Memory-Indexierung verweigern und dann doctor --lint als gemeinsames Konformitäts-Gate verwenden. Verwenden Sie Policy, wenn ein Arbeitsbereich eine dauerhafte Aussage benötigt, etwa „diese Kanäle dürfen nicht aktiviert sein“ oder „verwaltete Tools müssen Genehmigungsmetadaten deklarieren“, sowie eine wiederholbare Möglichkeit, zu belegen, dass OpenClaw weiterhin dieser Aussage entspricht. Verwenden Sie nur reguläre Konfiguration und Arbeitsbereichsdokumentation, wenn Sie lediglich lokales Verhalten benötigen und keine Policy-Befunde oder Attestierungs-Ausgaben brauchen.

Schnellstart

Aktivieren Sie das gebündelte Policy-Plugin vor der ersten Verwendung:
openclaw plugins enable policy
Wenn Policy aktiviert ist, kann doctor Policy-Integritätsprüfungen laden, ohne beliebige Plugins zu aktivieren. Das Plugin bleibt aktiviert, wenn policy.jsonc fehlt, sodass doctor das fehlende Artefakt melden kann. Policy wird verfasst und nicht aus den aktuellen Einstellungen des Benutzers generiert. Eine minimale Policy für Kanäle, MCP-Server, Modell-Provider, Netzwerkhaltung, Ingress-/Kanalzugriff, Gateway-Exposition, Agent-Arbeitsbereichshaltung, konfigurierte Sandbox-Runtime-Haltung, OpenClaw-Datenverarbeitungshaltung, Konfigurations-Secret-Provider-/Auth-Profil-Haltung, Exec-Genehmigungsdatei-Haltung und Tool-Metadaten sieht so aus:
{
  "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"],
  },
}
Die Regeln sind maßgeblich. Ein Kategorieblock ist nur ein Namespace; Prüfungen laufen, wenn eine konkrete Regel vorhanden ist. OpenClaw liest die aktuellen channels.*-Einstellungen, mcp.servers.*, models.providers.*, ausgewählte Agent-Modellreferenzen, Netzwerk-SSRF-Einstellungen, Direct-Message-Sitzungsscope, Kanal-DM-Policy, Kanalgruppen-Policy, Kanal-/Gruppen-Erwähnungs-Gates, Gateway-Bind/Auth/Control UI/Tailscale/Remote/HTTP-Haltung, OpenClaw-Konfigurationshaltung für Agent-Sandbox-Arbeitsbereichszugriff und Tool-Verweigerung, Konfigurationshaltung zur Datenverarbeitung, Secret-Provider- und SecretRef-Herkunft der Konfiguration, Metadaten von Konfigurations-Auth-Profilen, konfigurierte globale/pro-Agent-Tool-Haltung und TOOLS.md-Deklarationen als Nachweise und meldet dann beobachteten Zustand, der nicht konform ist. Wenn eine Policy Nicht-Loopback-Gateway-Binds verweigert, lassen Sie gateway.bind nur weg, wenn Sie bereit sind, den Runtime-Standard zu prüfen; setzen Sie gateway.bind=loopback für strikte Konfigurationskonformität. Für eine schreibgeschützte Agent-Haltung konfigurieren Sie den Sandbox-Modus für die jeweiligen Standards oder den Agent und setzen workspaceAccess auf none oder ro; ein ausgelassener oder off-Sandbox-Modus erfüllt keine schreibgeschützte/No-Write-Policy. agents.workspace.denyTools unterstützt exec, process, write, edit und apply_patch; die OpenClaw-Konfiguration group:fs deckt dateimutierende Tools ab, und group:runtime deckt Shell-/Prozess-Tools ab. Tool-Haltungs-Policy beobachtet tools.profile, tools.allow, tools.alsoAllow, tools.deny, tools.fs.workspaceOnly, tools.exec.security, tools.exec.ask, tools.exec.host, tools.elevated.enabled und dieselben pro-Agent-Overrides agents.list[].tools.*. Exec-Genehmigungs-Policy liest das benannte Produktartefakt exec-approvals.json nur, wenn eine execApprovals-Regel vorhanden ist; Nachweise erfassen Standards, pro-Agent-Haltung und Allowlist-Muster ohne Socket-Token oder zuletzt verwendeten Befehlstext. Policy erzwingt Tool-Aufrufe nicht zur Laufzeit. Secret-Nachweise erfassen Provider-/Quellenhaltung und SecretRef-Metadaten, niemals rohe Secret-Werte. Policy liest oder attestiert keine pro-Agent-Anmeldeinformationsspeicher wie auth-profiles.json; diese Speicher bleiben Eigentum der bestehenden Auth- und Anmeldeinformationsflüsse. Datenverarbeitungsnachweise sind ausschließlich Konfigurationshaltung: Geprüft werden der konfigurierte Redaktionsmodus, Umschalter für Telemetrie-Inhaltserfassung, Sitzungswartungsmodus und Einstellungen für Sitzungs-Transkript-Memory-Indexierung. Rohlogs, Telemetrie-Exporte, Transkriptinhalte oder Memory-Dateien werden nicht inspiziert, und es wird nicht bewiesen, dass keine personenbezogenen Daten oder Secrets existieren.

Policy-Regelreferenz

Jedes der folgenden Policy-Felder ist optional. Eine Prüfung läuft nur, wenn die passende Regel in policy.jsonc vorhanden ist. Der beobachtete Zustand ist bestehende OpenClaw-Konfiguration oder Arbeitsbereichsmetadaten; Policy meldet Abweichungen, schreibt aber das Runtime-Verhalten nicht um, außer wenn ein Reparaturpfad ausdrücklich verfügbar und aktiviert ist. Policy-Dateien sind strikt: Nicht unterstützte Abschnitte oder Regelschlüssel werden als policy/policy-jsonc-invalid gemeldet, statt ignoriert zu werden. Policy-Overlays halten breite Regeln auf oberster Ebene global und lassen dann benannte Scope-Blöcke strengere normale Policy-Abschnitte für explizite Selektoren hinzufügen. Ein Scope-Name ist nur ein beschreibender Bucket; der Abgleich verwendet die Selektorwerte innerhalb des Scopes. Das Overlay ist additiv: Globale Ansprüche laufen weiterhin, und ein scoped Anspruch kann einen eigenen Befund gegen dieselbe beobachtete Konfiguration ausgeben.

Scoped Overlays

Verwenden Sie scopes.<scopeName>, wenn eine Gruppe von Agents oder Kanälen eine strengere Policy als die Baseline auf oberster Ebene benötigt. Agent-scoped Abschnitte verwenden agentIds; dies unterstützt tools.*, agents.workspace.*, sandbox.*, dataHandling.memory.* und execApprovals.*. Channel-scoped Ingress verwendet channelIds; dies unterstützt ingress.channels.*. Nicht unterstützte Abschnitte werden abgelehnt, statt ignoriert zu werden. Wenn ein agentIds-Eintrag nicht in agents.list[] vorhanden ist, bewertet OpenClaw die scoped Regel gegen die geerbte globale/Standardhaltung für diese 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,
        },
      },
    },
  },
}
Derselbe Agent kann in mehreren Scopes erscheinen, wenn jeder Scope unterschiedliche Felder verwaltet, wie oben gezeigt. Ein wiederholtes scoped Feld für denselben Agent muss gemäß Policy-Metadaten gleich streng oder strenger sein; schwächere doppelte Ansprüche werden abgelehnt. Striktheitsmetadaten behandeln Allow-Listen als Teilmengen, Deny-Listen als Obermengen und erforderliche boolesche Werte als feste Anforderungen. Container-Haltungs-Policy wird nur gegen Nachweise ausgewertet, die OpenClaw für den passenden Agent beobachten kann. Wenn eine aktivierte sandbox.containers.*-Regel auf einen Agent angewendet wird, dessen Sandbox-Backend dieses Feld nicht offenlegen kann, meldet Policy policy/sandbox-container-posture-unobservable, statt den Anspruch als bestanden zu behandeln. Verwenden Sie separate agentIds-Scopes für Agent-Gruppen, die unterschiedliche Sandbox-Backends verwenden, und lassen Sie nicht unterstützte Container-Regeln für die Gruppen, bei denen diese Felder nicht beobachtet werden können, unset oder false. ingress.session.requireDmScope auf oberster Ebene bleibt global, weil session.dmScope kein kanalzuordenbarer Nachweis ist.
SelektorUnterstützte AbschnitteVerwenden, wenn
agentIdstools, agents.workspace, sandbox, dataHandling.memory und execApprovalsein oder mehrere Laufzeit-Agents strengere Regeln benötigen.
channelIdsingress.channelsein oder mehrere Kanäle strengere Ingress-Regeln benötigen.
Jeder in policy.jsonc vorhandene Scope muss gültig und durchsetzbar sein.

Kanäle

Policy-FeldBeobachteter ZustandVerwenden, wenn
channels.denyRules[].when.providerProvider und aktivierter Zustand von channels.*konfigurierte Kanäle von einem Provider wie telegram abgelehnt werden sollen.
channels.denyRules[].reasonKontext für Fundmeldung und Reparaturhinweiserklärt werden soll, warum der Provider abgelehnt wird.

MCP-Server

Policy-FeldBeobachteter ZustandVerwenden, wenn
mcp.servers.allowIDs von mcp.servers.*jeder konfigurierte MCP-Server in einer Allowlist enthalten sein muss.
mcp.servers.denyIDs von mcp.servers.*bestimmte konfigurierte MCP-Server-IDs abgelehnt werden sollen.

Modell-Provider

Policy-FeldBeobachteter ZustandVerwenden, wenn
models.providers.allowIDs von models.providers.* und ausgewählte Modell-Refskonfigurierte Provider und ausgewählte Modell-Refs genehmigte Provider verwenden müssen.
models.providers.denyIDs von models.providers.* und ausgewählte Modell-Refskonfigurierte Provider und ausgewählte Modell-Refs nach Provider-ID abgelehnt werden sollen.

Netzwerk

Policy-FeldBeobachteter ZustandVerwenden, wenn
network.privateNetwork.allowSSRF-Ausnahmen für private Netzwerkeauf false setzen, um zu verlangen, dass Zugriff auf private Netzwerke deaktiviert bleibt.

Ingress und Kanalzugriff

Policy-FeldBeobachteter ZustandVerwenden, wenn
ingress.session.requireDmScopesession.dmScopeein geprüfter Isolations-Scope für Direktnachrichten erforderlich ist.
ingress.channels.allowDmPolicieschannels.*.dmPolicy und Legacy-DM-Policy-Felder für Kanälenur geprüfte Kanal-Policies für Direktnachrichten erlaubt sein sollen.
ingress.channels.denyOpenGroupsIngress-Policy für Kanal, Konto und Gruppeoffener Gruppen-Ingress für konfigurierte Kanäle und Konten abgelehnt werden soll.
ingress.channels.requireMentionInGroupsKonfiguration für Mention-Gates für Kanal, Konto, Gruppe, Guild und verschachtelte EbenenMention-Gates erforderlich sind, wenn Gruppen-Ingress offen oder mention-gated ist.

Gateway

Policy-FeldBeobachteter ZustandVerwenden, wenn
gateway.exposure.allowNonLoopbackBindgateway.bindauf false setzen, um Loopback-Gateway-Bindung zu verlangen.
gateway.exposure.allowTailscaleFunnelTailscale-Serve/Funnel-Gateway-Postureauf false setzen, um Tailscale-Funnel-Exposition abzulehnen.
gateway.auth.requireAuthgateway.auth.modeauf true setzen, um deaktivierte Gateway-Authentifizierung abzulehnen.
gateway.auth.requireExplicitRateLimitgateway.auth.rateLimitauf true setzen, um explizite Auth-Rate-Limit-Konfiguration zu verlangen.
gateway.controlUi.allowInsecureunsichere Auth-/Geräte-/Origin-Schalter der Control UIauf false setzen, um unsichere Expositionsschalter der Control UI abzulehnen.
gateway.remote.allowRemote-Gateway-Modus/-Konfigurationauf false setzen, um Remote-Gateway-Modus abzulehnen.
gateway.http.denyEndpointsHTTP-API-Endpunkte des GatewayEndpunkt-IDs wie chatCompletions oder responses ablehnen.
gateway.http.requireUrlAllowlistsURL-Fetch-Eingaben des Gateway-HTTPauf true setzen, um URL-Allowlists für URL-Fetch-Eingaben zu verlangen.

Agent-Arbeitsbereich

Policy-FeldBeobachteter ZustandVerwenden, wenn
agents.workspace.allowedAccessagents.defaults.sandbox.workspaceAccess und agents.list[].sandbox.workspaceAccessnur Sandbox-Arbeitsbereichszugriffswerte wie none oder ro erlaubt sein sollen.
agents.workspace.denyToolsglobale und agent-spezifische Tool-Deny-KonfigurationArbeitsbereichs-/Laufzeit-Mutationstools wie exec, process, write, edit oder apply_patch abgelehnt werden müssen.

Sandbox-Posture

Policy-FeldBeobachteter ZustandVerwenden, wenn
sandbox.requireModeagents.defaults.sandbox.mode und agent-spezifischer Modusnur geprüfte Sandbox-Modi wie all oder non-main erlaubt sein sollen.
sandbox.allowBackendsagents.defaults.sandbox.backend und agent-spezifisches Backendnur geprüfte Sandbox-Backends wie docker erlaubt sein sollen.
sandbox.containers.denyHostNetworkNetzwerkmodus von containerbasierter Sandbox/browserHost-Netzwerkmodus abgelehnt werden soll.
sandbox.containers.denyContainerNamespaceJoinNetzwerkmodus von containerbasierter Sandbox/browserBeitritt zu einem anderen Container-Netzwerk-Namespace abgelehnt werden soll.
sandbox.containers.requireReadOnlyMountsMount-Modus von containerbasierter Sandbox/browserMounts schreibgeschützt sein müssen.
sandbox.containers.denyContainerRuntimeSocketMountsMount-Ziele von containerbasierter Sandbox/browserContainer-Runtime-Socket-Mounts abgelehnt werden sollen.
sandbox.containers.denyUnconfinedProfilesPosture des Container-Sicherheitsprofilsuneingeschränkte Container-Sicherheitsprofile abgelehnt werden sollen.
sandbox.browser.requireCdpSourceRangeCDP-Quellbereich des Sandbox-BrowsersBrowser-CDP-Exposition einen Quellbereich deklarieren muss.
Policy behandelt fehlendes sandbox.mode als impliziten Standardwert off, sodass sandbox.requireMode eine frische oder nicht konfigurierte Sandbox als außerhalb einer Allowlist wie ["all"] meldet.

Datenverarbeitung

Policy-FeldBeobachteter ZustandVerwenden, wenn
dataHandling.sensitiveLogging.requireRedactionlogging.redactSensitiveauf true setzen, um logging.redactSensitive: "off" abzulehnen.
dataHandling.telemetry.denyContentCapturediagnostics.otel.captureContentauf true setzen, um Telemetrie-Inhaltserfassung abzulehnen.
dataHandling.retention.requireSessionMaintenancesession.maintenance.modeauf true setzen, um den effektiven Sitzungswartungsmodus enforce zu verlangen.
dataHandling.memory.denySessionTranscriptIndexingmemory.qmd.sessions.enabled und agents.*.memorySearch.experimental.sessionMemoryauf true setzen, um Sitzungsprotokoll-Indexierung in den Speicher abzulehnen.

Secrets

Policy-FeldBeobachteter ZustandVerwenden, wenn
secrets.requireManagedProvidersConfig-SecretRefs und Deklarationen von secrets.providers.*auf true setzen, um zu verlangen, dass SecretRefs auf deklarierte Provider verweisen.
secrets.denySourcesSecret-Provider-Quellen und SecretRef-QuellenQuellen wie exec, file oder einen anderen konfigurierten Quellnamen ablehnen.
secrets.allowInsecureProvidersunsichere Posture-Flags von Secret-Providernauf false setzen, um Provider abzulehnen, die sich für unsichere Posture entscheiden.

Exec-Genehmigungen

Die Exec-Genehmigungs-Policy beobachtet das aktive Laufzeit-Artefakt exec-approvals.json. Standardmäßig ist dies ~/.openclaw/exec-approvals.json; wenn OPENCLAW_STATE_DIR gesetzt ist, liest Policy $OPENCLAW_STATE_DIR/exec-approvals.json. Tatsächliche Posture-Regeln wie execApprovals.defaults.* oder execApprovals.agents.* benötigen lesbare Artefakt-Evidence; ein fehlendes oder ungültiges Artefakt wird als nicht beobachtbare Evidence gemeldet, statt als Best-Effort-Pass gegen synthetische Laufzeit-Defaults zu gelten. Sobald das Artefakt lesbar ist, erben ausgelassene Genehmigungsfelder Laufzeit-Defaults: fehlendes defaults.security ist full, und fehlende Agent-Sicherheit erbt diesen Standardwert. Evidence umfasst defaults, agents.* und agents.*.allowlist[].pattern plus optionales argPattern, effektive autoAllowSkills-Posture und Eintragsquelle. Sie enthält nicht Socket-Pfad/-Token, commandText, lastUsedCommand, aufgelöste Pfade oder Zeitstempel.
RichtlinienfeldBeobachteter ZustandVerwendung
execApprovals.requireFileAktiver Laufzeitpfad exec-approvals.jsonAuf true setzen, um zu verlangen, dass das Genehmigungsartefakt existiert und geparst wird.
execApprovals.defaults.allowSecuritydefaults.security, Standardwert fullNur genehmigte Standardsicherheitsmodi für Genehmigungen zulassen.
execApprovals.agents.allowSecurityagents.*.security, erbt StandardsNur genehmigte effektive Sicherheitsmodi für Genehmigungen pro Agent zulassen.
execApprovals.agents.allowAutoAllowSkillsdefaults.autoAllowSkills und agents.*.autoAllowSkills, erbt LaufzeitstandardsAuf false setzen, um strikte manuelle Allowlisten ohne implizite Skill-CLI-Genehmigung zu verlangen.
execApprovals.agents.allowlist.expectedAggregierte Muster agents.*.allowlist[] und optionale argPattern-EinträgeVerlangen, dass die Genehmigungs-Allowlist dem geprüften Mustersatz entspricht.
Verlangen Sie beispielsweise das Genehmigungsartefakt, verweigern Sie permissive Standards und lassen Sie nur die geprüfte Exec-Genehmigungshaltung für ausgewählte Agenten zu:
{
  "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-Profile

RichtlinienfeldBeobachteter ZustandVerwendung
auth.profiles.requireMetadataProvider- und Modus-Metadaten auth.profiles.*Metadatenschlüssel wie provider und mode in Konfigurations-Auth-Profilen verlangen.
auth.profiles.allowModesauth.profiles.*.modeNur unterstützte Auth-Profilmodi wie api_key, aws-sdk, oauth oder token zulassen.

Tool-Metadaten

RichtlinienfeldBeobachteter ZustandVerwendung
tools.requireMetadataVerwaltete TOOLS.md-DeklarationenVerlangen, dass verwaltete Tools Metadatenschlüssel wie risk, sensitivity oder owner deklarieren.

Tool-Haltung

RichtlinienfeldBeobachteter ZustandVerwendung
tools.profiles.allowtools.profile und agents.list[].tools.profileNur Tool-Profil-IDs wie minimal, messaging oder coding zulassen.
tools.fs.requireWorkspaceOnlytools.fs.workspaceOnly und tools.fs-Überschreibungen pro AgentAuf true setzen, um eine nur auf den Workspace beschränkte Dateisystem-Tool-Haltung zu verlangen.
tools.exec.allowSecuritytools.exec.security und Exec-Sicherheit pro AgentNur Exec-Sicherheitsmodi wie deny oder allowlist zulassen.
tools.exec.requireAsktools.exec.ask und Exec-Nachfragemodus pro AgentGenehmigungshaltung wie always verlangen.
tools.exec.allowHoststools.exec.host und Exec-Host-Routing pro AgentNur Exec-Host-Routing-Modi wie sandbox zulassen.
tools.elevated.allowtools.elevated.enabled und erhöhte Haltung pro AgentAuf false setzen, um zu verlangen, dass der erhöhte Tool-Modus deaktiviert bleibt.
tools.alsoAllow.expectedtools.alsoAllow und tools.alsoAllow pro AgentExakte alsoAllow-Einträge verlangen und fehlende oder unerwartete additive Tool-Freigaben melden.
tools.denyToolstools.deny und agents.list[].tools.denyVerlangen, dass konfigurierte Tool-Denylisten Tool-IDs oder Gruppen wie group:runtime und group:fs enthalten.
Führen Sie während der Erstellung nur Richtlinienprüfungen aus:
openclaw policy check
openclaw policy check --json
openclaw policy check --severity-min error
policy check führt nur den Richtlinienprüfsatz aus und gibt Nachweise, Befunde und Attestierungs-Hashes aus. Dieselben Befunde erscheinen auch in openclaw doctor --lint, wenn das Policy-Plugin aktiviert ist. Vergleichen Sie eine Operator-Richtliniendatei mit einer erstellten Baseline-Richtliniendatei:
openclaw policy compare --baseline official.policy.jsonc
openclaw policy compare --baseline official.policy.jsonc --policy policy.jsonc --json
policy compare vergleicht Richtliniendateisyntax mit Richtliniendateisyntax. Es prüft keinen OpenClaw-Laufzeitzustand, keine Nachweise, Zugangsdaten oder Geheimnisse. Der Befehl verwendet dieselben Richtlinienregel-Metadaten, die bereichsbezogene Overlays steuern: Allowlisten müssen gleich bleiben oder enger werden, Denylisten müssen gleich bleiben oder breiter werden, erforderliche boolesche Werte müssen ihren erforderlichen Wert behalten, geordnete Zeichenfolgen dürfen sich nur zum restriktiveren Ende der konfigurierten Reihenfolge bewegen, und exakte Listen müssen übereinstimmen. Die Baseline-Datei kann eine von der Organisation erstellte Richtlinie sein. Die geprüfte Richtlinie kann strengere Werte verwenden oder zusätzliche Richtlinienregeln hinzufügen. Eine geprüfte Regel auf oberster Ebene kann auch eine bereichsbezogene Baseline-Regel erfüllen, wenn sie gleich restriktiv oder restriktiver ist, da Richtlinien auf oberster Ebene breit gelten. Bereichsnamen müssen nicht übereinstimmen; der bereichsbezogene Vergleich wird nach Selektorwert wie agentIds oder channelIds und nach dem geprüften Richtlinienfeld geschlüsselt. Beispielausgabe eines sauberen Vergleichs im JSON-Format meldet nur den Vergleichszustand der Richtliniendateien:
{
  "ok": true,
  "baselinePath": "official.policy.jsonc",
  "policyPath": "policy.jsonc",
  "rulesChecked": 3,
  "findings": []
}
Beispielausgabe von sauberem policy check --json enthält stabile Hashes, die von einem Operator oder Supervisor aufgezeichnet werden können:
{
  "ok": true,
  "attestation": {
    "policy": {
      "path": "policy.jsonc",
      "hash": "sha256:..."
    },
    "workspace": {
      "scope": "policy",
      "hash": "sha256:..."
    },
    "findingsHash": "sha256:...",
    "attestationHash": "sha256:..."
  },
  "checksRun": 5,
  "checksSkipped": 0,
  "findings": []
}

Richtlinie konfigurieren

Die Richtlinienkonfiguration befindet sich unter plugins.entries.policy.config.
{
  "plugins": {
    "entries": {
      "policy": {
        "enabled": true,
        "config": {
          "enabled": true,
          "path": "policy.jsonc",
          "workspaceRepairs": false,
          "expectedHash": "sha256:...",
          "expectedAttestationHash": "sha256:...",
        },
      },
    },
  },
}
EinstellungZweck
enabledRichtlinienprüfungen aktivieren, auch bevor policy.jsonc existiert.
workspaceRepairsdoctor --fix erlauben, richtlinienverwaltete Workspace-Einstellungen zu bearbeiten.
expectedHashOptionaler Hash-Lock für das genehmigte Richtlinienartefakt.
expectedAttestationHashOptionaler Hash-Lock für die zuletzt akzeptierte saubere Richtlinienprüfung.
pathWorkspace-relativer Speicherort des Richtlinienartefakts.
Setzen Sie plugins.entries.policy.config.enabled auf false, um Richtlinienprüfungen für einen Workspace zu deaktivieren, während das Plugin installiert bleibt. Tool-Metadatenanforderungen werden in policy.jsonc mit tools.requireMetadata erstellt, zum Beispiel ["risk", "sensitivity", "owner"].

Richtlinienzustand akzeptieren

Beispielausgabe im JSON-Format:
{
  "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": []
}
Der Policy-Hash identifiziert das verfasste Regelartefakt. Der Evidence-Block zeichnet den beobachteten OpenClaw-Zustand auf, der von den Policy-Prüfungen verwendet wird. Der Wert workspace.hash identifiziert diese Evidence-Nutzlast für den geprüften Scope. Der Findings-Hash identifiziert die genaue Findings-Menge, die von der Prüfung zurückgegeben wurde. checkedAt zeichnet auf, wann die Auswertung ausgeführt wurde. Der Attestation-Hash identifiziert die stabile Aussage: Policy-Hash, Evidence-Hash, Findings-Hash und ob das Ergebnis sauber war. Er enthält absichtlich nicht checkedAt, sodass derselbe Policy-Zustand bei wiederholten Prüfungen dieselbe Attestation erzeugt. Zusammen bilden diese das Audit-Tupel für diese Policy-Prüfung. Wenn ein späterer Gateway oder Supervisor Policy verwendet, um eine Runtime-Aktion zu blockieren, zu genehmigen oder zu annotieren, sollte er den Attestation-Hash der letzten sauberen Policy-Prüfung aufzeichnen. checkedAt bleibt für Audit-Logs in der JSON-Ausgabe, ist aber nicht Teil des stabilen Attestation-Hashs. Verwenden Sie diesen Lebenszyklus beim Akzeptieren von Policy-Zustand:
  1. Verfassen oder prüfen Sie policy.jsonc.
  2. Führen Sie openclaw policy check --json aus.
  3. Wenn das Ergebnis sauber ist, zeichnen Sie attestation.policy.hash als expectedHash auf.
  4. Zeichnen Sie attestation.attestationHash als expectedAttestationHash auf.
  5. Führen Sie openclaw doctor --lint in CI- oder Release-Gates erneut aus.
Wenn Policy-Regeln absichtlich geändert werden, aktualisieren Sie beide akzeptierten Hashes aus einer sauberen Prüfung. Wenn Workspace-Einstellungen absichtlich geändert werden, die Policy aber gleich bleibt, ändert sich normalerweise nur expectedAttestationHash. Das Aktivieren oder Aktualisieren von agents.workspace-Regeln fügt dem Workspace-Hash und dem Attestation-Hash agentWorkspace-Evidence hinzu. Operators sollten die neue Evidence prüfen und akzeptierte Attestation-Hashes nach dem Aktivieren dieser Regeln aktualisieren. Das Aktivieren oder Aktualisieren von Tool-Posture-Regeln fügt auf dieselbe Weise toolPosture-Evidence hinzu. openclaw policy watch führt dieselbe Prüfung wiederholt aus und meldet, wenn die aktuelle Evidence nicht mehr mit expectedAttestationHash übereinstimmt:
openclaw policy watch --json
Verwenden Sie --once in CI oder Skripten, die nur eine Drift-Auswertung benötigen. Ohne --once pollt der Befehl standardmäßig alle zwei Sekunden; verwenden Sie --interval-ms, um ein anderes Intervall auszuwählen.

Findings

Policy prüft derzeit:
Prüf-IDBefund
policy/policy-jsonc-missingRichtlinie ist aktiviert, aber policy.jsonc fehlt.
policy/policy-jsonc-invalidRichtlinie kann nicht geparst werden oder enthält fehlerhafte Regeleinträge.
policy/policy-hash-mismatchRichtlinie entspricht nicht dem konfigurierten expectedHash.
policy/attestation-hash-mismatchAktueller Richtliniennachweis stimmt nicht mehr mit der akzeptierten Attestierung überein.
policy/policy-conformance-invalidEine Baseline- oder geprüfte Richtliniendatei hat ungültige Vergleichssyntax.
policy/policy-conformance-missingEiner geprüften Richtliniendatei fehlt eine Regel, die von der Baseline-Richtliniendatei verlangt wird.
policy/policy-conformance-weakerEine geprüfte Richtliniendatei hat einen schwächeren Wert als die Baseline-Richtliniendatei.
policy/channels-denied-providerEin aktivierter Kanal entspricht einer Kanal-Ablehnungsregel.
policy/mcp-denied-serverEin konfigurierter MCP-Server wird durch die Richtlinie abgelehnt.
policy/mcp-unapproved-serverEin konfigurierter MCP-Server liegt außerhalb der Allowlist.
policy/models-denied-providerEin konfigurierter Modell-Provider oder Modellverweis verwendet einen abgelehnten Provider.
policy/models-unapproved-providerEin konfigurierter Modell-Provider oder Modellverweis liegt außerhalb der Allowlist.
policy/network-private-access-enabledEine SSRF-Ausweichmöglichkeit für private Netzwerke ist aktiviert, obwohl die Richtlinie sie ablehnt.
policy/ingress-dm-policy-unapprovedEine Kanal-DM-Richtlinie liegt außerhalb der Richtlinien-Allowlist.
policy/ingress-dm-scope-unapprovedsession.dmScope entspricht nicht dem von der Richtlinie verlangten DM-Isolationsumfang.
policy/ingress-open-groups-deniedEine Kanalgruppenrichtlinie ist open, obwohl die Richtlinie offenen Gruppen-Ingress ablehnt.
policy/ingress-group-mention-requiredEin Kanal- oder Gruppeneintrag deaktiviert Erwähnungs-Gates, obwohl die Richtlinie sie verlangt.
policy/gateway-non-loopback-bindDie Gateway-Bind-Haltung erlaubt Nicht-Loopback-Exponierung, obwohl die Richtlinie sie ablehnt.
policy/gateway-auth-disabledGateway-Authentifizierung ist deaktiviert, obwohl die Richtlinie Authentifizierung verlangt.
policy/gateway-rate-limit-missingDie Gateway-Auth-Rate-Limit-Haltung ist nicht explizit, obwohl die Richtlinie sie verlangt.
policy/gateway-control-ui-insecureUnsichere Exponierungs-Schalter der Gateway Control UI sind aktiviert.
policy/gateway-tailscale-funnelGateway Tailscale Funnel-Exponierung ist aktiviert, obwohl die Richtlinie sie ablehnt.
policy/gateway-remote-enabledGateway-Remote-Modus ist aktiv, obwohl die Richtlinie ihn ablehnt.
policy/gateway-http-endpoint-enabledEin Gateway-HTTP-API-Endpunkt ist aktiviert, obwohl er von der Richtlinie abgelehnt wird.
policy/gateway-http-url-fetch-unrestrictedDer Gateway-HTTP-URL-Abrufeingabe fehlt eine erforderliche URL-Allowlist.
policy/agents-workspace-access-deniedAgent-Sandbox-Modus oder Workspace-Zugriff liegt außerhalb der Richtlinien-Allowlist.
policy/agents-tool-not-deniedEine Agent- oder Standardkonfiguration verweigert ein von der Richtlinie verlangtes Tool nicht.
policy/tools-profile-unapprovedEin konfiguriertes globales oder agentenspezifisches Tool-Profil liegt außerhalb der Allowlist.
policy/tools-fs-workspace-only-requiredDateisystem-Tools sind nicht mit Workspace-only-Pfadhaltung konfiguriert.
policy/tools-exec-security-unapprovedExec-Sicherheitsmodus liegt außerhalb der Richtlinien-Allowlist.
policy/tools-exec-ask-unapprovedExec-Nachfragemodus liegt außerhalb der Richtlinien-Allowlist.
policy/tools-exec-host-unapprovedExec-Host-Routing liegt außerhalb der Richtlinien-Allowlist.
policy/tools-elevated-enabledErhöhter Tool-Modus ist aktiviert, obwohl die Richtlinie ihn ablehnt.
policy/tools-also-allow-missingEiner konfigurierten alsoAllow-Liste fehlt ein von der Richtlinie verlangter Eintrag.
policy/tools-also-allow-unexpectedEine konfigurierte alsoAllow-Liste enthält einen Eintrag, der von der Richtlinie nicht erwartet wird.
policy/tools-required-deny-missingEine globale oder agentenspezifische Tool-Ablehnungsliste enthält ein erforderliches abgelehntes Tool nicht.
policy/sandbox-mode-unapprovedSandbox-Modus liegt außerhalb der Richtlinien-Allowlist.
policy/sandbox-backend-unapprovedSandbox-Backend liegt außerhalb der Richtlinien-Allowlist.
policy/sandbox-container-posture-unobservableEine Container-Haltungsregel ist für ein Backend aktiviert, das sie nicht beobachten kann.
policy/sandbox-container-host-network-deniedEine containerbasierte Sandbox oder ein Browser verwendet Host-Netzwerkmodus.
policy/sandbox-container-namespace-join-deniedEine containerbasierte Sandbox oder ein Browser tritt einem anderen Container-Namespace bei.
policy/sandbox-container-mount-mode-requiredEin Mount einer containerbasierten Sandbox oder eines Browsers ist nicht schreibgeschützt.
policy/sandbox-container-runtime-socket-mountEin Mount einer containerbasierten Sandbox oder eines Browsers exponiert den Container-Runtime-Socket.
policy/sandbox-container-unconfined-profileContainer-Sandbox-Profil ist unbeschränkt, obwohl die Richtlinie dies ablehnt.
policy/sandbox-browser-cdp-source-range-missingSandbox-Browser-CDP-Quellbereich fehlt, obwohl die Richtlinie einen verlangt.
policy/data-handling-redaction-disabledSchwärzung sensibler Protokollierung ist deaktiviert, obwohl die Richtlinie sie verlangt.
policy/data-handling-telemetry-content-captureTelemetrie-Inhaltserfassung ist aktiviert, obwohl die Richtlinie sie ablehnt.
policy/data-handling-session-retention-not-enforcedSitzungsaufbewahrungswartung wird nicht durchgesetzt, obwohl die Richtlinie sie verlangt.
policy/data-handling-session-transcript-memory-enabledSitzungsprotokoll-Speicherindexierung ist aktiviert, obwohl die Richtlinie sie ablehnt.
policy/secrets-unmanaged-providerEine Config SecretRef verweist auf einen Provider, der nicht unter secrets.providers deklariert ist.
policy/secrets-denied-provider-sourceEin Config-Secret-Provider oder SecretRef verwendet eine von der Richtlinie abgelehnte Quelle.
policy/secrets-insecure-providerEin Secret-Provider entscheidet sich für eine unsichere Haltung, obwohl die Richtlinie sie ablehnt.
policy/auth-profile-invalid-metadataEin Config-Auth-Profil enthält keine gültigen Provider- oder Modus-Metadaten.
policy/auth-profile-unapproved-modeEin Config-Auth-Profilmodus liegt außerhalb der Richtlinien-Allowlist.
policy/exec-approvals-missingRichtlinie verlangt exec-approvals.json, aber das Artefakt fehlt.
policy/exec-approvals-invalidDas konfigurierte Exec-Genehmigungsartefakt kann nicht geparst werden.
policy/exec-approvals-default-security-unapprovedExec-Genehmigungsstandards verwenden einen Sicherheitsmodus außerhalb der Richtlinien-Allowlist.
policy/exec-approvals-agent-security-unapprovedEin agentenspezifischer effektiver Exec-Genehmigungs-Sicherheitsmodus liegt außerhalb der Allowlist.
policy/exec-approvals-auto-allow-skills-enabledEin Exec-Genehmigungs-Agent erlaubt Skill-CLIs implizit automatisch, obwohl die Richtlinie dies ablehnt.
policy/exec-approvals-allowlist-missingDer Genehmigungs-Allowlist fehlt ein von der Richtlinie verlangtes Muster.
policy/exec-approvals-allowlist-unexpectedDie Genehmigungs-Allowlist enthält ein Muster, das von der Richtlinie nicht erwartet wird.
policy/tools-missing-risk-levelEiner verwalteten Tool-Deklaration fehlen Risikometadaten.
policy/tools-unknown-risk-levelEine verwaltete Tool-Deklaration verwendet einen unbekannten Risikowert.
policy/tools-missing-sensitivity-tokenEiner verwalteten Tool-Deklaration fehlen Sensitivitätsmetadaten.
policy/tools-missing-ownerEiner verwalteten Tool-Deklaration fehlen Eigentümermetadaten.
policy/tools-unknown-sensitivity-tokenEine verwaltete Tool-Deklaration verwendet einen unbekannten Sensitivitätswert.
Richtlinienbefunde können sowohl target als auch requirement enthalten. target ist das beobachtete Workspace-Objekt, das nicht konform ist. requirement ist die verfasste Richtlinienregel, die daraus einen Befund gemacht hat. Beide Werte sind heute Adressen, üblicherweise oc://-Pfade, aber die Feldnamen beschreiben ihre Richtlinienrolle und nicht das Adressformat. Beispiel für einen JSON-Befund:
{
  "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."
}
Beispiel für einen Tool-Befund:
{
  "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"
}
Beispiel für einen MCP-Befund:
{
  "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"
}
Beispiel für einen Modell-Provider-Befund:
{
  "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"
}
Beispiel für einen Netzwerkbefund:
{
  "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"
}
Beispielbefund zur Gateway-Exposition:
{
  "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"
}
Beispielbefund zum Agent-Arbeitsbereich:
{
  "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"
}

Reparatur

doctor --lint und policy check sind schreibgeschützt. doctor --fix bearbeitet richtlinienverwaltete Arbeitsbereichseinstellungen nur, wenn workspaceRepairs ausdrücklich aktiviert ist. Ohne diese Opt-in-Einstellung melden Richtlinienprüfungen, was sie reparieren würden, und lassen die Einstellungen unverändert. In dieser Version kann die Reparatur Kanäle deaktivieren, die in der OpenClaw-Konfiguration aktiviert sind, aber durch channels.denyRules verweigert werden. Aktivieren Sie workspaceRepairs erst, nachdem die Richtliniendatei geprüft wurde, da eine gültige Verweigerungsregel einen konfigurierten Kanal deaktivieren kann:
{
  "plugins": {
    "entries": {
      "policy": {
        "config": {
          "workspaceRepairs": true,
        },
      },
    },
  },
}

Exit-Codes

Befehl012
policy checkKeine Befunde, die den Schwellenwert erreichen.Ein oder mehrere Befunde haben den Schwellenwert erreicht.Argument- oder Laufzeitfehler.
policy compareDie Richtliniendatei ist mindestens so streng wie die Basis.Die Richtliniendatei ist ungültig, fehlt oder ist schwächer als Basisregeln.Argument- oder Laufzeitfehler.
policy watchKeine Befunde und der akzeptierte Hash ist aktuell.Es liegen Befunde vor oder die akzeptierte Attestierung ist veraltet.Argument- oder Laufzeitfehler.

Verwandte Themen