> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# नीति

# `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 को सक्षम करें:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins enable policy
```

जब नीति सक्षम होती है, doctor मनमाने plugins को सक्रिय किए बिना नीति स्वास्थ्य जांच लोड कर सकता है।
यदि `policy.jsonc` अनुपस्थित है तब भी Plugin सक्षम रहता है, ताकि
doctor अनुपस्थित artifact की रिपोर्ट कर सके।

नीति लिखी जाती है, उपयोगकर्ता की मौजूदा सेटिंग्स से जनरेट नहीं होती। चैनलों, MCP सर्वरों, मॉडल प्रदाताओं, नेटवर्क मुद्रा, प्रवेश/चैनल एक्सेस, Gateway
एक्सपोज़र, एजेंट वर्कस्पेस मुद्रा, कॉन्फ़िगर किए गए sandbox runtime मुद्रा, OpenClaw
डेटा-हैंडलिंग मुद्रा, कॉन्फ़िग सीक्रेट प्रदाता/ऑथ प्रोफ़ाइल मुद्रा, exec approval
फ़ाइल मुद्रा, और टूल मेटाडेटा के लिए एक न्यूनतम
नीति ऐसी दिखती है:

```jsonc theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 का मूल्यांकन करता है।

```jsonc theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 नहीं है।

| चयनकर्ता     | समर्थित अनुभाग                                                                    | कब उपयोग करें                                                 |
| ------------ | --------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| `agentIds`   | `tools`, `agents.workspace`, `sandbox`, `dataHandling.memory`, और `execApprovals` | एक या अधिक रनटाइम एजेंटों को अधिक सख्त नियमों की आवश्यकता हो। |
| `channelIds` | `ingress.channels`                                                                | एक या अधिक चैनलों को अधिक सख्त इनग्रेस नियमों की आवश्यकता हो। |

`policy.jsonc` में मौजूद हर स्कोप वैध और लागू करने योग्य होना चाहिए।

#### चैनल

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

#### MCP सर्वर

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

#### मॉडल प्रदाता

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

#### नेटवर्क

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

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

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

#### Gateway

| नीति फ़ील्ड                             | देखी गई स्थिति                               | कब उपयोग करें                                                                 |
| --------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------- |
| `gateway.exposure.allowNonLoopbackBind` | `gateway.bind`                               | loopback Gateway बाइंडिंग आवश्यक करने के लिए `false` पर सेट करें।             |
| `gateway.exposure.allowTailscaleFunnel` | Tailscale सर्व/फनल Gateway अवस्था            | Tailscale Funnel एक्सपोज़र को अस्वीकार करने के लिए `false` पर सेट करें।       |
| `gateway.auth.requireAuth`              | `gateway.auth.mode`                          | निष्क्रिय Gateway auth को अस्वीकार करने के लिए `true` पर सेट करें।            |
| `gateway.auth.requireExplicitRateLimit` | `gateway.auth.rateLimit`                     | स्पष्ट auth rate-limit कॉन्फ़िग आवश्यक करने के लिए `true` पर सेट करें।        |
| `gateway.controlUi.allowInsecure`       | Control UI असुरक्षित auth/device/origin टॉगल | असुरक्षित Control UI एक्सपोज़र टॉगल अस्वीकार करने के लिए `false` पर सेट करें। |
| `gateway.remote.allow`                  | रिमोट Gateway मोड/कॉन्फ़िग                   | रिमोट Gateway मोड अस्वीकार करने के लिए `false` पर सेट करें।                   |
| `gateway.http.denyEndpoints`            | Gateway HTTP API एंडपॉइंट                    | `chatCompletions` या `responses` जैसे एंडपॉइंट ids अस्वीकार करें।             |
| `gateway.http.requireUrlAllowlists`     | Gateway HTTP URL-fetch इनपुट                 | URL-fetch इनपुट पर URL अनुमति-सूचियाँ आवश्यक करने के लिए `true` पर सेट करें।  |

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

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

#### Sandbox अवस्था

| नीति फ़ील्ड                                           | देखी गई स्थिति                                          | कब उपयोग करें                                                           |
| ----------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------------- |
| `sandbox.requireMode`                                 | `agents.defaults.sandbox.mode` और प्रति-एजेंट मोड       | केवल `all` या `non-main` जैसे समीक्षा किए गए sandbox मोड की अनुमति दें। |
| `sandbox.allowBackends`                               | `agents.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.requireCdpSourceRange`               | Sandbox browser CDP स्रोत सीमा                          | browser CDP एक्सपोज़र के लिए स्रोत सीमा घोषित करना आवश्यक करें।         |

नीति अनुपस्थित `sandbox.mode` को अंतर्निहित डिफ़ॉल्ट `off` मानती है, इसलिए
`sandbox.requireMode` किसी नए या अनकॉन्फ़िगर किए गए sandbox को
`["all"]` जैसी अनुमति-सूची से बाहर रिपोर्ट करता है।

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

| नीति फ़ील्ड                                         | देखी गई स्थिति                                                                      | कब उपयोग करें                                                                         |
| --------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `dataHandling.sensitiveLogging.requireRedaction`    | `logging.redactSensitive`                                                           | `logging.redactSensitive: "off"` को अस्वीकार करने के लिए `true` पर सेट करें।          |
| `dataHandling.telemetry.denyContentCapture`         | `diagnostics.otel.captureContent`                                                   | टेलीमेट्री सामग्री कैप्चर अस्वीकार करने के लिए `true` पर सेट करें।                    |
| `dataHandling.retention.requireSessionMaintenance`  | `session.maintenance.mode`                                                          | प्रभावी सेशन मेंटेनेंस मोड `enforce` आवश्यक करने के लिए `true` पर सेट करें।           |
| `dataHandling.memory.denySessionTranscriptIndexing` | `memory.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.allowSecurity`      | `defaults.security`, डिफ़ॉल्ट `full` पर                                                 | केवल स्वीकृत default approval security modes की अनुमति दें।                                          |
| `execApprovals.agents.allowSecurity`        | `agents.*.security`, defaults से inherited                                              | केवल स्वीकृत per-agent effective approval security modes की अनुमति दें।                              |
| `execApprovals.agents.allowAutoAllowSkills` | `defaults.autoAllowSkills` और `agents.*.autoAllowSkills`, runtime defaults से inherited | implicit skill CLI approval के बिना strict manual allowlists आवश्यक करने के लिए `false` पर सेट करें। |
| `execApprovals.agents.allowlist.expected`   | कुल `agents.*.allowlist[]` pattern और वैकल्पिक argPattern entries                       | approvals allowlist का reviewed pattern set से मेल खाना आवश्यक करें।                                 |

उदाहरण के लिए, approvals artifact आवश्यक करें, permissive defaults अस्वीकार करें, और
चुने गए agents के लिए केवल reviewed exec approval posture की अनुमति दें:

```jsonc theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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.requireMetadata` | `auth.profiles.*` provider और mode metadata | config auth profiles पर `provider` और `mode` जैसी metadata keys आवश्यक करें।                  |
| `auth.profiles.allowModes`      | `auth.profiles.*.mode`                      | केवल समर्थित auth profile modes जैसे `api_key`, `aws-sdk`, `oauth`, या `token` की अनुमति दें। |

#### Tool metadata

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

#### Tool posture

| नीति फ़ील्ड                     | देखी गई स्थिति                                             | कब उपयोग करें                                                                                                |
| ------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `tools.profiles.allow`          | `tools.profile` और `agents.list[].tools.profile`           | केवल tool profile ids जैसे `minimal`, `messaging`, या `coding` की अनुमति दें।                                |
| `tools.fs.requireWorkspaceOnly` | `tools.fs.workspaceOnly` और per-agent `tools.fs` overrides | workspace-only filesystem tool posture आवश्यक करने के लिए `true` पर सेट करें।                                |
| `tools.exec.allowSecurity`      | `tools.exec.security` और per-agent exec security           | केवल exec security modes जैसे `deny` या `allowlist` की अनुमति दें।                                           |
| `tools.exec.requireAsk`         | `tools.exec.ask` और per-agent exec ask mode                | approval posture जैसे `always` आवश्यक करें।                                                                  |
| `tools.exec.allowHosts`         | `tools.exec.host` और per-agent exec host routing           | केवल exec host routing modes जैसे `sandbox` की अनुमति दें।                                                   |
| `tools.elevated.allow`          | `tools.elevated.enabled` और per-agent elevated posture     | elevated tool mode को disabled बनाए रखना आवश्यक करने के लिए `false` पर सेट करें।                             |
| `tools.alsoAllow.expected`      | `tools.alsoAllow` और per-agent `tools.alsoAllow`           | exact `alsoAllow` entries आवश्यक करें और missing या unexpected additive tool grants रिपोर्ट करें।            |
| `tools.denyTools`               | `tools.deny` और `agents.list[].tools.deny`                 | configured tool deny lists में `group:runtime` और `group:fs` जैसे tool ids या groups शामिल होना आवश्यक करें। |

लेखन के दौरान policy-only checks चलाएँ:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
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 से तुलना करें:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
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 रिपोर्ट करता है:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "ok": true,
  "baselinePath": "official.policy.jsonc",
  "policyPath": "policy.jsonc",
  "rulesChecked": 3,
  "findings": []
}
```

Example clean `policy check --json` output में stable hashes शामिल होते हैं जिन्हें
operator या supervisor द्वारा recorded किया जा सकता है:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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` के अंतर्गत रहता है।

```jsonc theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "plugins": {
    "entries": {
      "policy": {
        "enabled": true,
        "config": {
          "enabled": true,
          "path": "policy.jsonc",
          "workspaceRepairs": false,
          "expectedHash": "sha256:...",
          "expectedAttestationHash": "sha256:...",
        },
      },
    },
  },
}
```

| सेटिंग                    | उद्देश्य                                                           |
| ------------------------- | ------------------------------------------------------------------ |
| `enabled`                 | `policy.jsonc` मौजूद होने से पहले भी policy checks enable करें।    |
| `workspaceRepairs`        | `doctor --fix` को policy-managed workspace settings edit करने दें। |
| `expectedHash`            | approved policy artifact के लिए वैकल्पिक hash-lock।                |
| `expectedAttestationHash` | last accepted clean policy check के लिए वैकल्पिक hash-lock।        |
| `path`                    | policy 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:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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` से मेल नहीं खाते:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
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-unapproved`                     | `session.dmScope` नीति-आवश्यक DM isolation scope से मेल नहीं खाता।                                       |
| `policy/ingress-open-groups-denied`                      | चैनल समूह नीति `open` है जबकि नीति खुले समूह ingress को अस्वीकार करती है।                                |
| `policy/ingress-group-mention-required`                  | कोई चैनल या समूह प्रविष्टि mention gates अक्षम करती है जबकि नीति उन्हें आवश्यक बनाती है।                 |
| `policy/gateway-non-loopback-bind`                       | Gateway 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-insecure`                     | Gateway 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-unrestricted`             | Gateway HTTP URL-fetch इनपुट में आवश्यक URL allowlist नहीं है।                                           |
| `policy/agents-workspace-access-denied`                  | Agent 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-required`                | Filesystem tools workspace-only path posture के साथ कॉन्फ़िगर नहीं हैं।                                  |
| `policy/tools-exec-security-unapproved`                  | Exec security mode नीति allowlist से बाहर है।                                                            |
| `policy/tools-exec-ask-unapproved`                       | Exec ask mode नीति allowlist से बाहर है।                                                                 |
| `policy/tools-exec-host-unapproved`                      | Exec 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-missing`                     | global या per-agent tool deny list में आवश्यक अस्वीकृत tool शामिल नहीं है।                               |
| `policy/sandbox-mode-unapproved`                         | Sandbox mode नीति allowlist से बाहर है।                                                                  |
| `policy/sandbox-backend-unapproved`                      | Sandbox backend नीति allowlist से बाहर है।                                                               |
| `policy/sandbox-container-posture-unobservable`          | किसी ऐसे backend के लिए container posture rule सक्षम है जो उसे observe नहीं कर सकता।                     |
| `policy/sandbox-container-host-network-denied`           | container-backed sandbox या browser host network mode का उपयोग करता है।                                  |
| `policy/sandbox-container-namespace-join-denied`         | container-backed sandbox या browser किसी अन्य container namespace से जुड़ता है।                          |
| `policy/sandbox-container-mount-mode-required`           | container-backed sandbox या browser mount read-only नहीं है।                                             |
| `policy/sandbox-container-runtime-socket-mount`          | container-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-unapproved`      | Exec 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-missing`                | approvals allowlist में नीति द्वारा आवश्यक pattern अनुपस्थित है।                                         |
| `policy/exec-approvals-allowlist-unexpected`             | approvals 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 निष्कर्ष:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 निष्कर्ष:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 निष्कर्ष:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 निष्कर्ष:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 निष्कर्ष:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 एक्सपोज़र निष्कर्ष का उदाहरण:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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"
}
```

एजेंट कार्यक्षेत्र निष्कर्ष का उदाहरण:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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` को केवल तब सक्षम करें जब
नीति फ़ाइल की समीक्षा हो चुकी हो, क्योंकि एक वैध अस्वीकार नियम किसी
कॉन्फ़िगर किए गए चैनल को बंद कर सकता है:

```jsonc theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "plugins": {
    "entries": {
      "policy": {
        "config": {
          "workspaceRepairs": true,
        },
      },
    },
  },
}
```

## एग्ज़िट कोड

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

## संबंधित

* [Doctor lint मोड](/hi/cli/doctor#lint-mode)
* [Path CLI](/hi/cli/path)
