मुख्य सामग्री पर जाएं

openclaw policy

openclaw policy बंडल किए गए Policy Plugin द्वारा प्रदान किया जाता है। Policy मौजूदा OpenClaw सेटिंग्स के ऊपर एक एंटरप्राइज़ अनुरूपता परत है। यह दूसरी कॉन्फ़िगरेशन प्रणाली नहीं जोड़ता। policy.jsonc लिखी गई आवश्यकताओं को परिभाषित करता है, OpenClaw सक्रिय वर्कस्पेस को प्रमाण के रूप में देखता है, और नीति स्वास्थ्य जांच doctor --lint के माध्यम से विचलन रिपोर्ट करती हैं। अंतिम अनुरूपता संकेत एक साफ़ doctor --lint रन है; नीति अलग स्वास्थ्य गेट बनाने के बजाय उस साझा lint सतह में निष्कर्ष जोड़ती है। Policy वर्तमान में कॉन्फ़िगर किए गए चैनल, MCP सर्वर, मॉडल प्रदाता, नेटवर्क SSRF मुद्रा, प्रवेश/चैनल एक्सेस मुद्रा, Gateway एक्सपोज़र मुद्रा, एजेंट वर्कस्पेस मुद्रा, डेटा-हैंडलिंग मुद्रा, OpenClaw कॉन्फ़िग सीक्रेट प्रदाता/ऑथ प्रोफ़ाइल मुद्रा, और शासित टूल घोषणाओं को प्रबंधित करती है। उदाहरण के लिए, IT या कोई वर्कस्पेस ऑपरेटर रिकॉर्ड कर सकता है कि Telegram स्वीकृत चैनल प्रदाता नहीं है, MCP सर्वर और मॉडल refs को स्वीकृत प्रविष्टियों तक सीमित कर सकता है, निजी-नेटवर्क fetch/browser एक्सेस को अक्षम बने रहने की आवश्यकता रख सकता है, डायरेक्ट-मैसेज सेशन आइसोलेशन और चैनल प्रवेश मुद्रा को समीक्षित सीमाओं में बने रहने की आवश्यकता रख सकता है, Gateway bind/auth/HTTP एक्सपोज़र को समीक्षित सीमाओं में बने रहने की आवश्यकता रख सकता है, एजेंट वर्कस्पेस एक्सेस और टूल denies को समीक्षित मुद्रा में बने रहने की आवश्यकता रख सकता है, OpenClaw कॉन्फ़िग SecretRefs को प्रबंधित प्रदाताओं का उपयोग करने की आवश्यकता रख सकता है, कॉन्फ़िग ऑथ प्रोफ़ाइलों में प्रदाता/मोड मेटाडेटा होने की आवश्यकता रख सकता है, शासित टूल में जोखिम और संवेदनशीलता मेटाडेटा होने की आवश्यकता रख सकता है, संवेदनशील लॉगिंग रिडैक्शन की आवश्यकता रख सकता है, टेलीमेट्री सामग्री कैप्चर से मना कर सकता है, सेशन रिटेंशन रखरखाव की आवश्यकता रख सकता है, सेशन ट्रांसक्रिप्ट मेमोरी इंडेक्सिंग से मना कर सकता है, और फिर साझा अनुरूपता गेट के रूप में doctor --lint का उपयोग कर सकता है। नीति का उपयोग तब करें जब किसी वर्कस्पेस को “ये चैनल सक्षम नहीं होने चाहिए” या “शासित टूल को अनुमोदन मेटाडेटा घोषित करना चाहिए” जैसा टिकाऊ कथन और यह साबित करने का दोहराने योग्य तरीका चाहिए कि OpenClaw अब भी उस कथन के अनुरूप है। केवल स्थानीय व्यवहार की आवश्यकता होने और नीति निष्कर्षों या attest output की आवश्यकता न होने पर सामान्य कॉन्फ़िग और वर्कस्पेस दस्तावेज़ों का ही उपयोग करें।

त्वरित शुरुआत

पहले उपयोग से पहले बंडल किए गए Policy Plugin को सक्षम करें:
openclaw plugins enable policy
जब नीति सक्षम होती है, doctor मनमाने plugins को सक्रिय किए बिना नीति स्वास्थ्य जांच लोड कर सकता है। यदि policy.jsonc अनुपस्थित है तब भी Plugin सक्षम रहता है, ताकि doctor अनुपस्थित artifact की रिपोर्ट कर सके। नीति लिखी जाती है, उपयोगकर्ता की मौजूदा सेटिंग्स से जनरेट नहीं होती। चैनलों, MCP सर्वरों, मॉडल प्रदाताओं, नेटवर्क मुद्रा, प्रवेश/चैनल एक्सेस, Gateway एक्सपोज़र, एजेंट वर्कस्पेस मुद्रा, कॉन्फ़िगर किए गए sandbox runtime मुद्रा, OpenClaw डेटा-हैंडलिंग मुद्रा, कॉन्फ़िग सीक्रेट प्रदाता/ऑथ प्रोफ़ाइल मुद्रा, exec approval फ़ाइल मुद्रा, और टूल मेटाडेटा के लिए एक न्यूनतम नीति ऐसी दिखती है:
{
  "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"],
  },
}
नियम ही प्राधिकरण हैं। कोई category block केवल namespace है; जांचें तभी चलती हैं जब कोई ठोस नियम मौजूद हो। OpenClaw मौजूदा channels.* सेटिंग्स mcp.servers.*, models.providers.*, चयनित एजेंट मॉडल refs, नेटवर्क SSRF सेटिंग्स, डायरेक्ट-मैसेज सेशन scope, चैनल DM नीति, चैनल group नीति, चैनल/group mention gates, Gateway bind/auth/Control UI/Tailscale/remote/HTTP मुद्रा, OpenClaw कॉन्फ़िग एजेंट sandbox workspace access और tool deny मुद्रा, डेटा-हैंडलिंग कॉन्फ़िग मुद्रा, कॉन्फ़िग सीक्रेट प्रदाता और SecretRef provenance, कॉन्फ़िग ऑथ प्रोफ़ाइल मेटाडेटा, कॉन्फ़िगर की गई global/per-agent tool मुद्रा, और TOOLS.md घोषणाओं को प्रमाण के रूप में पढ़ता है, फिर उस देखी गई स्थिति की रिपोर्ट करता है जो अनुरूप नहीं है। यदि कोई नीति non-loopback Gateway binds से मना करती है, तो gateway.bind को केवल तब छोड़ें जब आप runtime default की समीक्षा करने को तैयार हों; सख्त कॉन्फ़िग अनुरूपता के लिए gateway.bind=loopback सेट करें। read-only एजेंट मुद्रा के लिए, लागू defaults या agent पर sandbox mode कॉन्फ़िगर करें और workspaceAccess को none या ro पर सेट करें; अनुपस्थित या off sandbox mode read-only/no-write नीति को संतुष्ट नहीं करता। agents.workspace.denyTools exec, process, write, edit, और apply_patch का समर्थन करता है; OpenClaw कॉन्फ़िग group:fs फ़ाइल mutation tools को कवर करता है और group:runtime shell/process tools को कवर करता है। Tool मुद्रा नीति tools.profile, tools.allow, tools.alsoAllow, tools.deny, tools.fs.workspaceOnly, tools.exec.security, tools.exec.ask, tools.exec.host, tools.elevated.enabled, और वही per-agent agents.list[].tools.* overrides देखती है। Exec approval नीति नामित exec-approvals.json product artifact को केवल तब पढ़ती है जब execApprovals नियम मौजूद हो; प्रमाण defaults, per-agent मुद्रा, और allowlist patterns को socket tokens या last-used command text के बिना रिकॉर्ड करता है। नीति runtime पर tool calls लागू नहीं करती। Secret evidence provider/source मुद्रा और SecretRef metadata रिकॉर्ड करता है, कभी raw secret values नहीं। नीति per-agent credential stores जैसे auth-profiles.json को नहीं पढ़ती या attest नहीं करती; वे stores मौजूदा auth और credential flows के स्वामित्व में रहते हैं। Data-handling evidence केवल config-level मुद्रा है: यह कॉन्फ़िगर किए गए redaction mode, telemetry content-capture toggles, session maintenance mode, और session-transcript memory indexing settings की जांच करता है। यह raw logs, telemetry exports, transcript contents, memory files का निरीक्षण नहीं करता, या यह साबित नहीं करता कि कोई personal data या secrets मौजूद नहीं हैं।

नीति नियम संदर्भ

नीचे दिया गया प्रत्येक policy field वैकल्पिक है। कोई जांच तभी चलती है जब matching rule policy.jsonc में मौजूद हो। देखी गई स्थिति मौजूदा OpenClaw config या workspace metadata है; नीति विचलन रिपोर्ट करती है लेकिन runtime behavior को दोबारा नहीं लिखती जब तक कोई repair path स्पष्ट रूप से उपलब्ध और सक्षम न हो। Policy files सख्त हैं: unsupported sections या rule keys को अनदेखा करने के बजाय policy/policy-jsonc-invalid के रूप में रिपोर्ट किया जाता है। Policy overlays broad top-level rules को global रखते हैं, फिर named scope blocks को explicit selectors के लिए अधिक सख्त सामान्य policy sections जोड़ने देते हैं। scope name केवल एक वर्णनात्मक bucket है; matching scope के अंदर selector values का उपयोग करती है। overlay additive है: global claims अब भी चलती हैं, और scoped claim उसी observed config के विरुद्ध अपना finding emit कर सकती है।

Scoped overlays

scopes.<scopeName> का उपयोग करें जब agents या channels के किसी set को top-level baseline से अधिक सख्त नीति चाहिए। Agent-scoped sections agentIds का उपयोग करते हैं, जो tools.*, agents.workspace.*, sandbox.*, dataHandling.memory.*, और execApprovals.* का समर्थन करता है। Channel-scoped ingress channelIds का उपयोग करता है, जो ingress.channels.* का समर्थन करता है। Unsupported sections को अनदेखा करने के बजाय अस्वीकार किया जाता है। यदि कोई agentIds entry agents.list[] में मौजूद नहीं है, तो OpenClaw उस runtime agent id के लिए inherited global/default मुद्रा के विरुद्ध scoped rule का मूल्यांकन करता है।
{
  "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,
        },
      },
    },
  },
}
एक ही agent कई scopes में आ सकता है जब प्रत्येक scope अलग-अलग fields को governs करता है, जैसा ऊपर दिखाया गया है। समान agent के लिए repeated scoped field को policy metadata के अनुसार समान या अधिक restrictive होना चाहिए; weaker duplicate claims अस्वीकार की जाती हैं। Strictness metadata allow-lists को subsets, deny-lists को supersets, और required booleans को fixed requirements मानता है। Container मुद्रा नीति का मूल्यांकन केवल उस evidence के विरुद्ध किया जाता है जिसे OpenClaw matched agent के लिए देख सकता है। यदि enabled sandbox.containers.* rule ऐसे agent पर लागू होता है जिसका sandbox backend वह field expose नहीं कर सकता, तो policy claim को passing मानने के बजाय policy/sandbox-container-posture-unobservable रिपोर्ट करती है। अलग-अलग sandbox backends का उपयोग करने वाले agent groups के लिए अलग agentIds scopes का उपयोग करें, और उन groups के लिए unsupported container rules unset या false छोड़ें जहां वे fields observed नहीं किए जा सकते। Top-level ingress.session.requireDmScope global रहता है क्योंकि session.dmScope channel-attributable evidence नहीं है।
चयनकर्तासमर्थित अनुभागकब उपयोग करें
agentIdstools, agents.workspace, sandbox, dataHandling.memory, और execApprovalsएक या अधिक रनटाइम एजेंटों को अधिक सख्त नियमों की आवश्यकता हो।
channelIdsingress.channelsएक या अधिक चैनलों को अधिक सख्त इनग्रेस नियमों की आवश्यकता हो।
policy.jsonc में मौजूद हर स्कोप वैध और लागू करने योग्य होना चाहिए।

चैनल

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
channels.denyRules[].when.providerchannels.* प्रदाता और सक्षम स्थितिtelegram जैसे प्रदाता से कॉन्फ़िगर किए गए चैनलों को अस्वीकार करें।
channels.denyRules[].reasonखोज संदेश और मरम्मत संकेत संदर्भसमझाएँ कि प्रदाता को क्यों अस्वीकार किया गया है।

MCP सर्वर

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
mcp.servers.allowmcp.servers.* idsहर कॉन्फ़िगर किए गए MCP सर्वर को अनुमति-सूची में होना आवश्यक करें।
mcp.servers.denymcp.servers.* idsविशिष्ट कॉन्फ़िगर किए गए MCP सर्वर ids को अस्वीकार करें।

मॉडल प्रदाता

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
models.providers.allowmodels.providers.* ids और चयनित मॉडल refsकॉन्फ़िगर किए गए प्रदाताओं और चयनित मॉडल refs के लिए स्वीकृत प्रदाताओं का उपयोग आवश्यक करें।
models.providers.denymodels.providers.* ids और चयनित मॉडल refsकॉन्फ़िगर किए गए प्रदाताओं और चयनित मॉडल refs को प्रदाता id के आधार पर अस्वीकार करें।

नेटवर्क

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
network.privateNetwork.allowनिजी-नेटवर्क SSRF निकास मार्गनिजी-नेटवर्क पहुंच को निष्क्रिय बनाए रखना आवश्यक करने के लिए false पर सेट करें।

इनग्रेस और चैनल पहुंच

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
ingress.session.requireDmScopesession.dmScopeसमीक्षा किया गया प्रत्यक्ष-संदेश आइसोलेशन स्कोप आवश्यक करें।
ingress.channels.allowDmPolicieschannels.*.dmPolicy और पुराने चैनल DM नीति फ़ील्डकेवल समीक्षा की गई प्रत्यक्ष-संदेश चैनल नीतियों की अनुमति दें।
ingress.channels.denyOpenGroupsचैनल, खाता, और समूह इनग्रेस नीतिकॉन्फ़िगर किए गए चैनलों और खातों के लिए खुले समूह इनग्रेस को अस्वीकार करें।
ingress.channels.requireMentionInGroupsचैनल, खाता, समूह, गिल्ड, और नेस्टेड मेंशन गेट कॉन्फ़िगजब समूह इनग्रेस खुला या मेंशन-गेटेड हो, तब मेंशन गेट आवश्यक करें।

Gateway

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
gateway.exposure.allowNonLoopbackBindgateway.bindloopback Gateway बाइंडिंग आवश्यक करने के लिए false पर सेट करें।
gateway.exposure.allowTailscaleFunnelTailscale सर्व/फनल Gateway अवस्थाTailscale Funnel एक्सपोज़र को अस्वीकार करने के लिए false पर सेट करें।
gateway.auth.requireAuthgateway.auth.modeनिष्क्रिय Gateway auth को अस्वीकार करने के लिए true पर सेट करें।
gateway.auth.requireExplicitRateLimitgateway.auth.rateLimitस्पष्ट auth rate-limit कॉन्फ़िग आवश्यक करने के लिए true पर सेट करें।
gateway.controlUi.allowInsecureControl UI असुरक्षित auth/device/origin टॉगलअसुरक्षित Control UI एक्सपोज़र टॉगल अस्वीकार करने के लिए false पर सेट करें।
gateway.remote.allowरिमोट Gateway मोड/कॉन्फ़िगरिमोट Gateway मोड अस्वीकार करने के लिए false पर सेट करें।
gateway.http.denyEndpointsGateway HTTP API एंडपॉइंटchatCompletions या responses जैसे एंडपॉइंट ids अस्वीकार करें।
gateway.http.requireUrlAllowlistsGateway HTTP URL-fetch इनपुटURL-fetch इनपुट पर URL अनुमति-सूचियाँ आवश्यक करने के लिए true पर सेट करें।

एजेंट वर्कस्पेस

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
agents.workspace.allowedAccessagents.defaults.sandbox.workspaceAccess और agents.list[].sandbox.workspaceAccessकेवल none या ro जैसे sandbox वर्कस्पेस पहुंच मानों की अनुमति दें।
agents.workspace.denyToolsवैश्विक और प्रति-एजेंट टूल अस्वीकार कॉन्फ़िगexec, process, write, edit, या apply_patch जैसे वर्कस्पेस/रनटाइम म्यूटेशन टूल अस्वीकार करना आवश्यक करें।

Sandbox अवस्था

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
sandbox.requireModeagents.defaults.sandbox.mode और प्रति-एजेंट मोडकेवल all या non-main जैसे समीक्षा किए गए sandbox मोड की अनुमति दें।
sandbox.allowBackendsagents.defaults.sandbox.backend और प्रति-एजेंट बैकएंडकेवल docker जैसे समीक्षा किए गए sandbox बैकएंड की अनुमति दें।
sandbox.containers.denyHostNetworkकंटेनर-आधारित sandbox/browser नेटवर्क मोडहोस्ट नेटवर्क मोड अस्वीकार करें।
sandbox.containers.denyContainerNamespaceJoinकंटेनर-आधारित sandbox/browser नेटवर्क मोडकिसी अन्य कंटेनर नेटवर्क नेमस्पेस से जुड़ना अस्वीकार करें।
sandbox.containers.requireReadOnlyMountsकंटेनर-आधारित sandbox/browser माउंट मोडमाउंट को केवल-पढ़ने योग्य होना आवश्यक करें।
sandbox.containers.denyContainerRuntimeSocketMountsकंटेनर-आधारित sandbox/browser माउंट लक्ष्यकंटेनर रनटाइम सॉकेट माउंट अस्वीकार करें।
sandbox.containers.denyUnconfinedProfilesकंटेनर सुरक्षा प्रोफ़ाइल अवस्थाअनकन्फ़ाइन्ड कंटेनर सुरक्षा प्रोफ़ाइल अस्वीकार करें।
sandbox.browser.requireCdpSourceRangeSandbox browser CDP स्रोत सीमाbrowser CDP एक्सपोज़र के लिए स्रोत सीमा घोषित करना आवश्यक करें।
नीति अनुपस्थित sandbox.mode को अंतर्निहित डिफ़ॉल्ट off मानती है, इसलिए sandbox.requireMode किसी नए या अनकॉन्फ़िगर किए गए sandbox को ["all"] जैसी अनुमति-सूची से बाहर रिपोर्ट करता है।

डेटा हैंडलिंग

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
dataHandling.sensitiveLogging.requireRedactionlogging.redactSensitivelogging.redactSensitive: "off" को अस्वीकार करने के लिए true पर सेट करें।
dataHandling.telemetry.denyContentCapturediagnostics.otel.captureContentटेलीमेट्री सामग्री कैप्चर अस्वीकार करने के लिए true पर सेट करें।
dataHandling.retention.requireSessionMaintenancesession.maintenance.modeप्रभावी सेशन मेंटेनेंस मोड enforce आवश्यक करने के लिए true पर सेट करें।
dataHandling.memory.denySessionTranscriptIndexingmemory.qmd.sessions.enabled और agents.*.memorySearch.experimental.sessionMemoryसेशन ट्रांसक्रिप्ट को मेमरी में इंडेक्स करना अस्वीकार करने के लिए true पर सेट करें।

सीक्रेट्स

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
secrets.requireManagedProvidersकॉन्फ़िग SecretRefs और secrets.providers.* घोषणाएँSecretRefs को घोषित प्रदाताओं की ओर इंगित करना आवश्यक करने के लिए true पर सेट करें।
secrets.denySourcesसीक्रेट प्रदाता स्रोत और SecretRef स्रोतexec, file, या किसी अन्य कॉन्फ़िगर किए गए स्रोत नाम जैसे स्रोतों को अस्वीकार करें।
secrets.allowInsecureProvidersअसुरक्षित सीक्रेट-प्रदाता अवस्था फ़्लैगअसुरक्षित अवस्था में ऑप्ट इन करने वाले प्रदाताओं को अस्वीकार करने के लिए false पर सेट करें।

Exec अनुमोदन

Exec अनुमोदन नीति सक्रिय रनटाइम exec-approvals.json आर्टिफ़ैक्ट को देखती है। डिफ़ॉल्ट रूप से यह ~/.openclaw/exec-approvals.json है; जब OPENCLAW_STATE_DIR सेट होता है, नीति $OPENCLAW_STATE_DIR/exec-approvals.json पढ़ती है। वास्तविक अवस्था नियम जैसे execApprovals.defaults.* या execApprovals.agents.* के लिए पढ़ने योग्य आर्टिफ़ैक्ट साक्ष्य आवश्यक है; अनुपस्थित या अमान्य आर्टिफ़ैक्ट को सिंथेटिक रनटाइम डिफ़ॉल्ट के विरुद्ध सर्वोत्तम-प्रयास पास बनने के बजाय अदृश्य साक्ष्य के रूप में रिपोर्ट किया जाता है। जब आर्टिफ़ैक्ट पढ़ने योग्य हो जाता है, छोड़े गए अनुमोदन फ़ील्ड रनटाइम डिफ़ॉल्ट इनहेरिट करते हैं: अनुपस्थित defaults.security full होता है, और अनुपस्थित एजेंट सुरक्षा वह डिफ़ॉल्ट इनहेरिट करती है। साक्ष्य में defaults, agents.*, और agents.*.allowlist[].pattern के साथ वैकल्पिक argPattern, प्रभावी autoAllowSkills अवस्था, और प्रविष्टि स्रोत शामिल हैं। इसमें सॉकेट path/token, commandText, lastUsedCommand, रिज़ॉल्व किए गए पथ, या टाइमस्टैम्प शामिल नहीं हैं।
नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
execApprovals.requireFileसक्रिय runtime exec-approvals.json पथapprovals artifact के मौजूद होने और parse होने की आवश्यकता के लिए true पर सेट करें।
execApprovals.defaults.allowSecuritydefaults.security, डिफ़ॉल्ट full परकेवल स्वीकृत default approval security modes की अनुमति दें।
execApprovals.agents.allowSecurityagents.*.security, defaults से inheritedकेवल स्वीकृत per-agent effective approval security modes की अनुमति दें।
execApprovals.agents.allowAutoAllowSkillsdefaults.autoAllowSkills और agents.*.autoAllowSkills, runtime defaults से inheritedimplicit skill CLI approval के बिना strict manual allowlists आवश्यक करने के लिए false पर सेट करें।
execApprovals.agents.allowlist.expectedकुल agents.*.allowlist[] pattern और वैकल्पिक argPattern entriesapprovals allowlist का reviewed pattern set से मेल खाना आवश्यक करें।
उदाहरण के लिए, approvals artifact आवश्यक करें, permissive defaults अस्वीकार करें, और चुने गए agents के लिए केवल reviewed exec approval posture की अनुमति दें:
{
  "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 profiles

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
auth.profiles.requireMetadataauth.profiles.* provider और mode metadataconfig auth profiles पर provider और mode जैसी metadata keys आवश्यक करें।
auth.profiles.allowModesauth.profiles.*.modeकेवल समर्थित auth profile modes जैसे api_key, aws-sdk, oauth, या token की अनुमति दें।

Tool metadata

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
tools.requireMetadataGoverned TOOLS.md declarationsgoverned tools के लिए risk, sensitivity, या owner जैसी metadata keys घोषित करना आवश्यक करें।

Tool posture

नीति फ़ील्डदेखी गई स्थितिकब उपयोग करें
tools.profiles.allowtools.profile और agents.list[].tools.profileकेवल tool profile ids जैसे minimal, messaging, या coding की अनुमति दें।
tools.fs.requireWorkspaceOnlytools.fs.workspaceOnly और per-agent tools.fs overridesworkspace-only filesystem tool posture आवश्यक करने के लिए true पर सेट करें।
tools.exec.allowSecuritytools.exec.security और per-agent exec securityकेवल exec security modes जैसे deny या allowlist की अनुमति दें।
tools.exec.requireAsktools.exec.ask और per-agent exec ask modeapproval posture जैसे always आवश्यक करें।
tools.exec.allowHoststools.exec.host और per-agent exec host routingकेवल exec host routing modes जैसे sandbox की अनुमति दें।
tools.elevated.allowtools.elevated.enabled और per-agent elevated postureelevated tool mode को disabled बनाए रखना आवश्यक करने के लिए false पर सेट करें।
tools.alsoAllow.expectedtools.alsoAllow और per-agent tools.alsoAllowexact alsoAllow entries आवश्यक करें और missing या unexpected additive tool grants रिपोर्ट करें।
tools.denyToolstools.deny और agents.list[].tools.denyconfigured tool deny lists में group:runtime और group:fs जैसे tool ids या groups शामिल होना आवश्यक करें।
लेखन के दौरान policy-only checks चलाएँ:
openclaw policy check
openclaw policy check --json
openclaw policy check --severity-min error
policy check केवल policy check set चलाता है और evidence, findings, और attestation hashes उत्सर्जित करता है। वही findings openclaw doctor --lint में भी दिखाई देती हैं जब Policy plugin enabled हो। operator policy file की authored baseline policy file से तुलना करें:
openclaw policy compare --baseline official.policy.jsonc
openclaw policy compare --baseline official.policy.jsonc --policy policy.jsonc --json
policy compare policy file syntax की policy file syntax से तुलना करता है। यह OpenClaw runtime state, evidence, credentials, या secrets की जाँच नहीं करता। command वही policy rule metadata उपयोग करता है जो scoped overlays को govern करता है: allowlists को बराबर या अधिक संकीर्ण रहना चाहिए, denylists को बराबर या अधिक व्यापक रहना चाहिए, required booleans को अपना required value बनाए रखना चाहिए, ordered strings को configured order के अधिक restrictive end की ओर ही बढ़ना चाहिए, और exact lists को match करना चाहिए। baseline file एक organization-authored policy हो सकती है। checked policy stricter values उपयोग कर सकती है या extra policy rules जोड़ सकती है। top-level checked rule भी scoped baseline rule को satisfy कर सकता है जब वह equally या more restrictive हो क्योंकि top-level policy व्यापक रूप से लागू होती है। Scope names का match होना आवश्यक नहीं है; scoped comparison selector value जैसे agentIds या channelIds और checked policy field के आधार पर keyed होती है। Example clean compare JSON output केवल policy-file comparison state रिपोर्ट करता है:
{
  "ok": true,
  "baselinePath": "official.policy.jsonc",
  "policyPath": "policy.jsonc",
  "rulesChecked": 3,
  "findings": []
}
Example clean policy check --json output में stable hashes शामिल होते हैं जिन्हें operator या supervisor द्वारा recorded किया जा सकता है:
{
  "ok": true,
  "attestation": {
    "policy": {
      "path": "policy.jsonc",
      "hash": "sha256:..."
    },
    "workspace": {
      "scope": "policy",
      "hash": "sha256:..."
    },
    "findingsHash": "sha256:...",
    "attestationHash": "sha256:..."
  },
  "checksRun": 5,
  "checksSkipped": 0,
  "findings": []
}

Policy configure करें

Policy config plugins.entries.policy.config के अंतर्गत रहता है।
{
  "plugins": {
    "entries": {
      "policy": {
        "enabled": true,
        "config": {
          "enabled": true,
          "path": "policy.jsonc",
          "workspaceRepairs": false,
          "expectedHash": "sha256:...",
          "expectedAttestationHash": "sha256:...",
        },
      },
    },
  },
}
सेटिंगउद्देश्य
enabledpolicy.jsonc मौजूद होने से पहले भी policy checks enable करें।
workspaceRepairsdoctor --fix को policy-managed workspace settings edit करने दें।
expectedHashapproved policy artifact के लिए वैकल्पिक hash-lock।
expectedAttestationHashlast accepted clean policy check के लिए वैकल्पिक hash-lock।
pathpolicy artifact की workspace-relative location।
workspace के लिए policy checks disable करने के लिए plugins.entries.policy.config.enabled को false पर सेट करें, जबकि plugin installed रहे। Tool metadata requirements policy.jsonc में tools.requireMetadata के साथ लिखी जाती हैं, उदाहरण के लिए ["risk", "sensitivity", "owner"]

Policy state स्वीकार करें

Example JSON output:
{
  "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": []
}
नीति हैश लिखे गए नियम आर्टिफैक्ट की पहचान करता है। साक्ष्य ब्लॉक नीति जांचों द्वारा उपयोग की गई देखी गई OpenClaw स्थिति रिकॉर्ड करता है। workspace.hash मान जांचे गए स्कोप के लिए उस साक्ष्य पेलोड की पहचान करता है। निष्कर्ष हैश जांच द्वारा लौटाए गए सटीक निष्कर्ष सेट की पहचान करता है। checkedAt रिकॉर्ड करता है कि मूल्यांकन कब चला। अभिप्रमाणन हैश स्थिर दावे की पहचान करता है: नीति हैश, साक्ष्य हैश, निष्कर्ष हैश, और यह कि परिणाम साफ था या नहीं। यह जानबूझकर checkedAt को शामिल नहीं करता, इसलिए वही नीति स्थिति दोहराई गई जांचों में वही अभिप्रमाणन उत्पन्न करती है। साथ में, ये इस नीति जांच के लिए ऑडिट ट्यूपल बनाते हैं। यदि बाद का Gateway या सुपरवाइजर किसी रनटाइम कार्रवाई को ब्लॉक करने, स्वीकृत करने, या एनोटेट करने के लिए नीति का उपयोग करता है, तो उसे अंतिम साफ नीति जांच से अभिप्रमाणन हैश रिकॉर्ड करना चाहिए। checkedAt ऑडिट लॉग के लिए JSON आउटपुट में रहता है, लेकिन स्थिर अभिप्रमाणन हैश का हिस्सा नहीं है। नीति स्थिति स्वीकार करते समय इस जीवनचक्र का उपयोग करें:
  1. policy.jsonc लिखें या समीक्षा करें।
  2. openclaw policy check --json चलाएं।
  3. यदि परिणाम साफ है, तो attestation.policy.hash को expectedHash के रूप में रिकॉर्ड करें।
  4. attestation.attestationHash को expectedAttestationHash के रूप में रिकॉर्ड करें।
  5. CI या रिलीज गेट में openclaw doctor --lint फिर से चलाएं।
यदि नीति नियम जानबूझकर बदलते हैं, तो साफ जांच से दोनों स्वीकार किए गए हैश अपडेट करें। यदि वर्कस्पेस सेटिंग्स जानबूझकर बदलती हैं लेकिन नीति वही रहती है, तो आमतौर पर केवल expectedAttestationHash बदलता है। agents.workspace नियमों को सक्षम या अपग्रेड करने से वर्कस्पेस हैश और अभिप्रमाणन हैश में agentWorkspace साक्ष्य जुड़ता है। ऑपरेटरों को इन नियमों को सक्षम करने के बाद नए साक्ष्य की समीक्षा करनी चाहिए और स्वीकार किए गए अभिप्रमाणन हैश रीफ्रेश करने चाहिए। टूल पोश्चर नियमों को सक्षम या अपग्रेड करने से इसी तरह toolPosture साक्ष्य जुड़ता है। openclaw policy watch वही जांच बार-बार चलाता है और रिपोर्ट करता है जब मौजूदा साक्ष्य अब expectedAttestationHash से मेल नहीं खाते:
openclaw policy watch --json
CI या उन स्क्रिप्ट में --once का उपयोग करें जिन्हें केवल एक ड्रिफ्ट मूल्यांकन की आवश्यकता है। --once के बिना, कमांड डिफ़ॉल्ट रूप से हर दो सेकंड में पोल करता है; अलग अंतराल चुनने के लिए --interval-ms का उपयोग करें।

निष्कर्ष

नीति वर्तमान में सत्यापित करती है:
जाँच आईडीनिष्कर्ष
policy/policy-jsonc-missingनीति सक्षम है लेकिन policy.jsonc अनुपस्थित है।
policy/policy-jsonc-invalidनीति पार्स नहीं की जा सकती या उसमें विकृत नियम प्रविष्टियाँ हैं।
policy/policy-hash-mismatchनीति कॉन्फ़िगर किए गए expectedHash से मेल नहीं खाती।
policy/attestation-hash-mismatchमौजूदा नीति साक्ष्य अब स्वीकृत attestations से मेल नहीं खाते।
policy/policy-conformance-invalidकिसी baseline या जाँची गई नीति फ़ाइल में अमान्य तुलना सिंटैक्स है।
policy/policy-conformance-missingकिसी जाँची गई नीति फ़ाइल में baseline नीति फ़ाइल द्वारा आवश्यक नियम अनुपस्थित है।
policy/policy-conformance-weakerकिसी जाँची गई नीति फ़ाइल में baseline नीति फ़ाइल की तुलना में कमजोर मान है।
policy/channels-denied-providerकोई सक्षम चैनल, चैनल-अस्वीकार नियम से मेल खाता है।
policy/mcp-denied-serverकॉन्फ़िगर किया गया MCP सर्वर नीति द्वारा अस्वीकृत है।
policy/mcp-unapproved-serverकॉन्फ़िगर किया गया MCP सर्वर allowlist से बाहर है।
policy/models-denied-providerकॉन्फ़िगर किया गया मॉडल प्रदाता या मॉडल ref अस्वीकृत प्रदाता का उपयोग करता है।
policy/models-unapproved-providerकॉन्फ़िगर किया गया मॉडल प्रदाता या मॉडल ref allowlist से बाहर है।
policy/network-private-access-enabledनीति द्वारा अस्वीकार किए जाने पर भी निजी-नेटवर्क SSRF escape hatch सक्षम है।
policy/ingress-dm-policy-unapprovedचैनल DM नीति, नीति allowlist से बाहर है।
policy/ingress-dm-scope-unapprovedsession.dmScope नीति-आवश्यक DM isolation scope से मेल नहीं खाता।
policy/ingress-open-groups-deniedचैनल समूह नीति open है जबकि नीति खुले समूह ingress को अस्वीकार करती है।
policy/ingress-group-mention-requiredकोई चैनल या समूह प्रविष्टि mention gates अक्षम करती है जबकि नीति उन्हें आवश्यक बनाती है।
policy/gateway-non-loopback-bindGateway bind posture non-loopback exposure की अनुमति देता है जबकि नीति इसे अस्वीकार करती है।
policy/gateway-auth-disabledनीति द्वारा auth आवश्यक होने पर Gateway authentication अक्षम है।
policy/gateway-rate-limit-missingनीति द्वारा आवश्यक होने पर Gateway auth rate-limit posture स्पष्ट नहीं है।
policy/gateway-control-ui-insecureGateway Control UI असुरक्षित exposure toggles सक्षम हैं।
policy/gateway-tailscale-funnelनीति द्वारा अस्वीकार किए जाने पर भी Gateway Tailscale Funnel exposure सक्षम है।
policy/gateway-remote-enabledनीति द्वारा अस्वीकार किए जाने पर भी Gateway remote mode सक्रिय है।
policy/gateway-http-endpoint-enabledनीति द्वारा अस्वीकार किए जाने पर भी Gateway HTTP API endpoint सक्षम है।
policy/gateway-http-url-fetch-unrestrictedGateway HTTP URL-fetch इनपुट में आवश्यक URL allowlist नहीं है।
policy/agents-workspace-access-deniedAgent sandbox mode या workspace access नीति allowlist से बाहर है।
policy/agents-tool-not-deniedकोई agent या default config नीति द्वारा आवश्यक tool को अस्वीकार नहीं करता।
policy/tools-profile-unapprovedकॉन्फ़िगर किया गया global या per-agent tool profile allowlist से बाहर है।
policy/tools-fs-workspace-only-requiredFilesystem tools workspace-only path posture के साथ कॉन्फ़िगर नहीं हैं।
policy/tools-exec-security-unapprovedExec security mode नीति allowlist से बाहर है।
policy/tools-exec-ask-unapprovedExec ask mode नीति allowlist से बाहर है।
policy/tools-exec-host-unapprovedExec host routing नीति allowlist से बाहर है।
policy/tools-elevated-enabledनीति द्वारा अस्वीकार किए जाने पर भी elevated tool mode सक्षम है।
policy/tools-also-allow-missingकॉन्फ़िगर की गई alsoAllow सूची में नीति द्वारा आवश्यक प्रविष्टि अनुपस्थित है।
policy/tools-also-allow-unexpectedकॉन्फ़िगर की गई alsoAllow सूची में नीति द्वारा अपेक्षित नहीं की गई प्रविष्टि शामिल है।
policy/tools-required-deny-missingglobal या per-agent tool deny list में आवश्यक अस्वीकृत tool शामिल नहीं है।
policy/sandbox-mode-unapprovedSandbox mode नीति allowlist से बाहर है।
policy/sandbox-backend-unapprovedSandbox backend नीति allowlist से बाहर है।
policy/sandbox-container-posture-unobservableकिसी ऐसे backend के लिए container posture rule सक्षम है जो उसे observe नहीं कर सकता।
policy/sandbox-container-host-network-deniedcontainer-backed sandbox या browser host network mode का उपयोग करता है।
policy/sandbox-container-namespace-join-deniedcontainer-backed sandbox या browser किसी अन्य container namespace से जुड़ता है।
policy/sandbox-container-mount-mode-requiredcontainer-backed sandbox या browser mount read-only नहीं है।
policy/sandbox-container-runtime-socket-mountcontainer-backed sandbox या browser mount container runtime socket को expose करता है।
policy/sandbox-container-unconfined-profileनीति द्वारा अस्वीकार किए जाने पर भी container sandbox profile unconfined है।
policy/sandbox-browser-cdp-source-range-missingनीति द्वारा आवश्यक होने पर Sandbox browser CDP source range अनुपस्थित है।
policy/data-handling-redaction-disabledनीति द्वारा आवश्यक होने पर sensitive logging redaction अक्षम है।
policy/data-handling-telemetry-content-captureनीति द्वारा अस्वीकार किए जाने पर भी telemetry content capture सक्षम है।
policy/data-handling-session-retention-not-enforcedनीति द्वारा आवश्यक होने पर session retention maintenance लागू नहीं है।
policy/data-handling-session-transcript-memory-enabledनीति द्वारा अस्वीकार किए जाने पर भी session transcript memory indexing सक्षम है।
policy/secrets-unmanaged-providerकोई config SecretRef ऐसे provider को reference करता है जो secrets.providers के अंतर्गत घोषित नहीं है।
policy/secrets-denied-provider-sourceकोई config secret provider या SecretRef नीति द्वारा अस्वीकृत source का उपयोग करता है।
policy/secrets-insecure-providerनीति द्वारा अस्वीकार किए जाने पर भी कोई secret provider insecure posture चुनता है।
policy/auth-profile-invalid-metadataकिसी config auth profile में मान्य provider या mode metadata अनुपस्थित है।
policy/auth-profile-unapproved-modeकोई config auth profile mode नीति allowlist से बाहर है।
policy/exec-approvals-missingनीति को exec-approvals.json की आवश्यकता है, लेकिन artifact अनुपस्थित है।
policy/exec-approvals-invalidकॉन्फ़िगर किया गया exec approvals artifact पार्स नहीं किया जा सकता।
policy/exec-approvals-default-security-unapprovedExec approval defaults, नीति allowlist से बाहर के security mode का उपयोग करते हैं।
policy/exec-approvals-agent-security-unapprovedकोई per-agent effective exec approval security mode allowlist से बाहर है।
policy/exec-approvals-auto-allow-skills-enabledनीति द्वारा अस्वीकार किए जाने पर भी कोई exec approval agent skill CLIs को implicitly auto-allow करता है।
policy/exec-approvals-allowlist-missingapprovals allowlist में नीति द्वारा आवश्यक pattern अनुपस्थित है।
policy/exec-approvals-allowlist-unexpectedapprovals allowlist में नीति द्वारा अपेक्षित नहीं किया गया pattern शामिल है।
policy/tools-missing-risk-levelकिसी governed tool declaration में risk metadata अनुपस्थित है।
policy/tools-unknown-risk-levelकोई governed tool declaration अज्ञात risk value का उपयोग करता है।
policy/tools-missing-sensitivity-tokenकिसी governed tool declaration में sensitivity metadata अनुपस्थित है।
policy/tools-missing-ownerकिसी governed tool declaration में owner metadata अनुपस्थित है।
policy/tools-unknown-sensitivity-tokenकोई governed tool declaration अज्ञात sensitivity value का उपयोग करता है।
नीति निष्कर्षों में target और requirement दोनों शामिल हो सकते हैं। target वह observed workspace thing है जो conform नहीं करता। requirement authored policy rule है जिसने इसे finding बनाया। आज दोनों मान addresses हैं, आम तौर पर oc:// paths, लेकिन field names address format के बजाय उनकी policy role बताते हैं। उदाहरण JSON निष्कर्ष:
{
  "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."
}
उदाहरण tool निष्कर्ष:
{
  "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"
}
उदाहरण MCP निष्कर्ष:
{
  "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"
}
उदाहरण model-provider निष्कर्ष:
{
  "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"
}
उदाहरण network निष्कर्ष:
{
  "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"
}
Gateway एक्सपोज़र निष्कर्ष का उदाहरण:
{
  "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"
}
एजेंट कार्यक्षेत्र निष्कर्ष का उदाहरण:
{
  "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"
}

सुधार

doctor --lint और policy check केवल-पढ़ने योग्य हैं। doctor --fix नीति-प्रबंधित कार्यक्षेत्र सेटिंग्स को केवल तब संपादित करता है जब workspaceRepairs स्पष्ट रूप से सक्षम हो। इस ऑप्ट-इन के बिना, नीति जांचें बताती हैं कि वे क्या सुधारेंगी और सेटिंग्स को अपरिवर्तित छोड़ देती हैं। इस संस्करण में, सुधार उन चैनलों को अक्षम कर सकता है जो OpenClaw config में सक्षम हैं लेकिन channels.denyRules द्वारा अस्वीकृत हैं। workspaceRepairs को केवल तब सक्षम करें जब नीति फ़ाइल की समीक्षा हो चुकी हो, क्योंकि एक वैध अस्वीकार नियम किसी कॉन्फ़िगर किए गए चैनल को बंद कर सकता है:
{
  "plugins": {
    "entries": {
      "policy": {
        "config": {
          "workspaceRepairs": true,
        },
      },
    },
  },
}

एग्ज़िट कोड

कमांड012
policy checkथ्रेशोल्ड पर कोई निष्कर्ष नहीं।एक या अधिक निष्कर्ष थ्रेशोल्ड से मिले।आर्ग्युमेंट या रनटाइम विफलता।
policy compareनीति फ़ाइल बेसलाइन जितनी सख्त या उससे अधिक सख्त है।नीति फ़ाइल अमान्य, अनुपस्थित, या बेसलाइन नियमों से कमज़ोर है।आर्ग्युमेंट या रनटाइम विफलता।
policy watchकोई निष्कर्ष नहीं और स्वीकृत हैश वर्तमान है।निष्कर्ष मौजूद हैं या स्वीकृत अटेस्टेशन पुराना है।आर्ग्युमेंट या रनटाइम विफलता।

संबंधित