openclaw policy
openclaw policy बंडल किए गए Policy Plugin द्वारा प्रदान किया जाता है। यह मौजूदा OpenClaw सेटिंग्स के ऊपर एक एंटरप्राइज़
अनुरूपता परत है, कोई दूसरी कॉन्फ़िगरेशन
प्रणाली नहीं। आप policy.jsonc में आवश्यकताएँ लिखते हैं; OpenClaw सक्रिय
वर्कस्पेस को साक्ष्य के रूप में देखता है; Policy doctor --lint के माध्यम से विचलन की रिपोर्ट करता है। Policy
टूल कॉल लागू नहीं करता या अनुरोध के समय रनटाइम व्यवहार को फिर से नहीं लिखता, और यह
auth-profiles.json जैसे प्रति-एजेंट क्रेडेंशियल स्टोर को सत्यापित नहीं करता।
Policy कॉन्फ़िगर किए गए चैनल, MCP सर्वर, मॉडल प्रदाता, नेटवर्क SSRF
स्थिति, इनग्रेस/चैनल पहुँच, Gateway एक्सपोज़र और Node कमांड स्थिति,
लिखे गए संदेश-रूटिंग प्रोब,
एजेंट वर्कस्पेस पहुँच, सैंडबॉक्स स्थिति, डेटा-प्रबंधन स्थिति, सीक्रेट
प्रदाता/प्रमाणीकरण प्रोफ़ाइल स्थिति और शासित टूल मेटाडेटा (TOOLS.md) की जाँच करता है। इसका उपयोग
तब करें जब किसी वर्कस्पेस को “Telegram सक्षम
नहीं होना चाहिए” या “शासित टूल को जोखिम और स्वामी मेटाडेटा घोषित करना चाहिए” जैसे टिकाऊ, जाँच-योग्य कथन की आवश्यकता हो। यदि
आपको सत्यापन या विचलन पहचान के बिना केवल स्थानीय व्यवहार चाहिए, तो सामान्य
कॉन्फ़िगरेशन पर्याप्त है।
त्वरित शुरुआत
policy.jsonc अनुपस्थित होने पर भी Plugin सक्षम रहता है, ताकि doctor
जाँचों को चुपचाप छोड़ने के बजाय अनुपस्थित आर्टिफ़ैक्ट की रिपोर्ट कर सके।
policy.jsonc को स्वयं लिखें; यह वर्तमान सेटिंग्स से जनरेट नहीं होता। प्रत्येक
शीर्ष-स्तरीय अनुभाग एक नियम नेमस्पेस है: कोई जाँच तभी चलती है जब उसके अंतर्गत कोई ठोस नियम
मौजूद हो (असमर्थित अनुभाग या कुंजियाँ चुपचाप अनदेखी होने के बजाय
policy/policy-jsonc-invalid के रूप में विफल होती हैं)। प्रत्येक समर्थित अनुभाग को शामिल करने वाला न्यूनतम
उदाहरण:
- नॉन-लूपबैक बाइंड अस्वीकार करते समय
gateway.bindको छोड़ने का अर्थ है कि आप रनटाइम डिफ़ॉल्ट स्वीकार करते हैं; सख्त अनुरूपता के लिएgateway.bind: "loopback"सेट करें। - केवल-पढ़ने योग्य एजेंट के लिए, लागू डिफ़ॉल्ट/एजेंट पर सैंडबॉक्स
modeकोallयाnon-mainऔरworkspaceAccessकोnoneयाroपर सेट करें। अनुपस्थित याoffसैंडबॉक्स मोड केवल-पढ़ने योग्य Policy को संतुष्ट नहीं करता। agents.workspace.denyToolsexec,process,write,edit,apply_patchस्वीकार करता है। कॉन्फ़िगरेशन के टूल-अस्वीकरण समूहgroup:fs(फ़ाइल परिवर्तन) औरgroup:runtime(शेल/प्रोसेस) समकक्ष स्थिति को संतुष्ट करते हैं।- Exec-अनुमोदन जाँचें लाइव
exec-approvals.jsonआर्टिफ़ैक्ट को केवल तभी पढ़ती हैं जब कोईexecApprovalsनियम मौजूद हो; अनुपस्थित या अमान्य आर्टिफ़ैक्ट अवलोकन-अयोग्य साक्ष्य है, कृत्रिम रूप से उत्तीर्ण परिणाम नहीं। - सीक्रेट और प्रमाणीकरण-प्रोफ़ाइल साक्ष्य केवल प्रदाता/स्रोत स्थिति और
SecretRef मेटाडेटा दर्ज करते हैं, मूल मान कभी नहीं। Policy
auth-profiles.jsonजैसे प्रति-एजेंट क्रेडेंशियल स्टोर को पढ़ता या सत्यापित नहीं करता। - डेटा-प्रबंधन साक्ष्य केवल कॉन्फ़िगरेशन-स्तरीय स्थिति है (रिडैक्शन मोड, टेलीमेट्री कैप्चर टॉगल, सत्र रखरखाव मोड, ट्रांसक्रिप्ट-इंडेक्सिंग सेटिंग)। यह लॉग, टेलीमेट्री एक्सपोर्ट, ट्रांसक्रिप्ट या मेमोरी फ़ाइलों का निरीक्षण नहीं करता, और साफ़ परिणाम यह प्रमाणित नहीं करता कि उनमें कोई व्यक्तिगत डेटा या सीक्रेट मौजूद नहीं हैं।
- रूटिंग प्रोब OpenClaw के रनटाइम बाइंडिंग रिज़ॉल्वर का पुनः उपयोग करते हैं। रूटिंग साक्ष्य केवल प्रोब आईडी, रिज़ॉल्व किया गया एजेंट, मिलान प्रकार और रिडैक्ट किया गया बाइंडिंग मेटाडेटा दर्ज करता है। यह कभी भी पीयर, खाता, गिल्ड, टीम या भूमिका पहचानकर्ता दर्ज नहीं करता। रूटिंग अनुभाग जोड़ने से जानबूझकर Policy और सत्यापन हैश बदलते हैं; रूटिंग के बिना नीतियाँ अपना मौजूदा साक्ष्य आकार बनाए रखती हैं।
Policy नियम संदर्भ
नीचे दिया गया प्रत्येक नियम वैकल्पिक है; कोई जाँच तभी चलती है जब नियम मौजूद हो। देखी गई स्थिति मौजूदा OpenClaw कॉन्फ़िगरेशन या वर्कस्पेस मेटाडेटा है।दायरा-विशिष्ट ओवरले
जब विशिष्ट एजेंटों या चैनलों को शीर्ष-स्तरीय आधाररेखा से अधिक सख्त Policy की आवश्यकता हो, तबscopes.<scopeName> का उपयोग करें। दायरे का नाम केवल एक लेबल है; मिलान दायरे के भीतर के
चयनकर्ता का उपयोग करता है। ओवरले योगात्मक होते हैं: वैश्विक नियम चलता रहता है,
और दायरा-विशिष्ट नियम उसी साक्ष्य के विरुद्ध अपना अलग निष्कर्ष जोड़ सकता है।
यदि कोई
agentIds प्रविष्टि agents.entries.* में मौजूद नहीं है, तो OpenClaw
दायरा-विशिष्ट नियम को छोड़ने के बजाय उस रनटाइम
एजेंट आईडी के लिए विरासत में मिली वैश्विक/डिफ़ॉल्ट स्थिति के विरुद्ध उसका मूल्यांकन करता है।
sandbox.containers.*) की जाँच केवल उस
साक्ष्य के विरुद्ध की जाती है जिसे मिलान किए गए एजेंट का सैंडबॉक्स बैकएंड उजागर कर सकता है। यदि कोई बैकएंड
आपके द्वारा उसके लिए सक्षम किए गए नियम का अवलोकन नहीं कर सकता, तो Policy उत्तीर्ण करने के बजाय
policy/sandbox-container-posture-unobservable की रिपोर्ट करता है; कंटेनर नियमों का दायरा
उन एजेंट समूहों तक सीमित करें जो ऐसा बैकएंड उपयोग करते हैं जो उन्हें उजागर कर सकता है।
शीर्ष-स्तरीय ingress.session.requireDmScope वैश्विक रहता है; session.dmScope
चैनल से संबद्ध किया जा सकने वाला साक्ष्य नहीं है, इसलिए इसका दायरा channelIds द्वारा निर्धारित नहीं किया जा सकता।
policy.jsonc में मौजूद प्रत्येक दायरा मान्य और लागू करने योग्य होना चाहिए।
चैनल
MCP सर्वर
मॉडल प्रदाता
नेटवर्क
संदेश रूटिंग
प्रोब आईडी अद्वितीय होनी चाहिए। कोई रूट
channel, वैकल्पिक accountId,
peer, parentPeer, guildId, teamId और memberRoleIds का समर्थन करता है। पीयर प्रकार
direct, group और channel हैं। matchedBy में एक या अधिक रनटाइम
मिलान प्रकार हो सकते हैं, जिनमें binding.peer, binding.account, binding.channel,
या default शामिल हैं।
रूटिंग जाँच केवल अनुरूपता जाँच हैं। वे स्टार्टअप,
संदेश डिलीवरी, बाइंडिंग प्राथमिकता या फ़ॉलबैक व्यवहार को नहीं बदलतीं। निष्कर्षों के लिए
ऑपरेटर समीक्षा आवश्यक है, क्योंकि किसी बाइंडिंग को स्वचालित रूप से बदलने से
निजी संदेश किसी अन्य दिशा में भेजे जा सकते हैं।
इनग्रेस और चैनल एक्सेस
Gateway
gateway.nodes.denyCommands एक सटीक, केस-संवेदी नीति अस्वीकृति-सुपरसेट नियम है।
जब नीति को यह सिद्ध करना हो कि विशेषाधिकार-प्राप्त Node कमांड OpenClaw
कॉन्फ़िगरेशन द्वारा स्पष्ट रूप से अस्वीकृत हैं, तब इसका उपयोग करें। जो डिप्लॉयमेंट जानबूझकर किसी विशेषाधिकार-प्राप्त
Node कमांड की अनुमति देता है, उसे केवल
gateway.nodes.commands.allow पर निर्भर रहने के बजाय समीक्षा के बाद policy.jsonc अपडेट करना चाहिए।
एजेंट वर्कस्पेस
सैंडबॉक्स पोस्चर
नीति अनुपस्थित
sandbox.mode को उसका अंतर्निहित डिफ़ॉल्ट off मानती है, इसलिए
sandbox.requireMode किसी नए या गैर-कॉन्फ़िगर किए गए सैंडबॉक्स को
["all"] जैसी अनुमत-सूची से बाहर रिपोर्ट करता है।
डेटा प्रबंधन
सीक्रेट
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 पोस्चर और प्रविष्टि स्रोत शामिल होते हैं—सॉकेट पथ/टोकन,
commandText, lastUsedCommand, रिज़ॉल्व किए गए पथ या टाइमस्टैम्प कभी नहीं।
उदाहरण: अनुमोदन आर्टिफ़ैक्ट आवश्यक करें, उदार डिफ़ॉल्ट अस्वीकार करें, और
चयनित एजेंटों के लिए केवल समीक्षित exec अनुमोदन स्थिति की अनुमति दें।
प्रमाणीकरण प्रोफ़ाइल
टूल मेटाडेटा
टूल स्थिति
जाँच चलाएँ
लेखन के दौरान केवल-नीति जाँच चलाएँ:policy check केवल नीति जाँच सेट चलाता है और साक्ष्य, निष्कर्ष,
तथा सत्यापन हैश उत्सर्जित करता है। Policy Plugin सक्षम होने पर यही निष्कर्ष
openclaw doctor --lint में भी दिखाई देते हैं।
ऑपरेटर नीति फ़ाइल की तुलना लिखित बेसलाइन से करें:
policy compare नीति-फ़ाइल सिंटैक्स की जाँच नीति-फ़ाइल सिंटैक्स के विरुद्ध करता है; यह
रनटाइम स्थिति, साक्ष्य, क्रेडेंशियल या सीक्रेट की जाँच नहीं करता। यह वही
नियम मेटाडेटा उपयोग करता है जो स्कोप्ड ओवरले को नियंत्रित करता है: अनुमति-सूचियाँ समान या
अधिक संकीर्ण रहनी चाहिए, अस्वीकार-सूचियाँ समान या अधिक व्यापक रहनी चाहिए, आवश्यक बूलियन को
अपना मान बनाए रखना चाहिए, क्रमबद्ध स्ट्रिंग केवल कॉन्फ़िगर किए गए क्रम के
अधिक सख्त छोर की ओर जा सकती हैं, और सटीक सूचियाँ मेल खानी चाहिए। बेसलाइन
संगठन द्वारा लिखित नीति हो सकती है; जाँची गई नीति अधिक सख्त मान या
अतिरिक्त नियम जोड़ सकती है। शीर्ष-स्तरीय जाँचा गया नियम स्कोप्ड बेसलाइन नियम को तब संतुष्ट कर सकता है जब
वह समान या अधिक प्रतिबंधात्मक हो। फ़ाइलों के बीच स्कोप नामों का मेल खाना
आवश्यक नहीं है; तुलना चयनकर्ता (agentIds/channelIds) और फ़ील्ड के आधार पर होती है।
रूटिंग प्रोब के लिए, प्रत्येक बेसलाइन प्रोब आईडी को उसी रूट
और अपेक्षित एजेंट के साथ रहना आवश्यक है। जाँची गई नीति प्रोब जोड़ सकती है या matchedBy को संकीर्ण कर सकती है, लेकिन
किसी प्रोब को हटाना, उसका रूट या एजेंट बदलना, या उसके स्वीकृत मिलान
प्रकारों को व्यापक करना कमज़ोर है।
स्वच्छ तुलना (--json):
policy check --json आउटपुट में स्थिर हैश शामिल होते हैं, जिन्हें ऑपरेटर या
पर्यवेक्षक रिकॉर्ड कर सकता है:
नीति कॉन्फ़िगर करें
नीति कॉन्फ़िगplugins.entries.policy.config के अंतर्गत रहता है।
Plugin को इंस्टॉल रखते हुए किसी कार्यक्षेत्र के लिए नीति
जाँच अक्षम करने हेतु
plugins.entries.policy.config.enabled को false पर सेट करें।
नीति स्थिति स्वीकार करें
उदाहरण JSON आउटपुट:attestation.policy.hash लिखित नियम आर्टिफ़ैक्ट की पहचान करता है। evidence
जाँचों द्वारा उपयोग की गई प्रेक्षित OpenClaw स्थिति दर्ज करता है, और
workspace.hash उस साक्ष्य पेलोड की पहचान करता है। findingsHash सटीक
निष्कर्ष-समुच्चय की पहचान करता है। checkedAt जाँच चलने का समय दर्ज करता है।
attestationHash स्थिर दावे (नीति हैश, साक्ष्य हैश,
निष्कर्ष हैश और स्वच्छ/अस्वच्छ स्थिति) की पहचान करता है और जानबूझकर checkedAt को
बाहर रखता है, ताकि समान नीति स्थिति हमेशा समान सत्यापन हैश उत्पन्न करे। ये
चार मान मिलकर एक नीति जाँच के लिए ऑडिट ट्यूपल बनाते हैं।
यदि कोई Gateway या पर्यवेक्षक किसी रनटाइम कार्रवाई को अवरुद्ध करने, अनुमोदित करने या उस पर टिप्पणी जोड़ने के लिए नीति का उपयोग करता है,
तो उसे पिछली स्वच्छ जाँच का सत्यापन हैश दर्ज करना चाहिए।
checkedAt ऑडिट लॉग के लिए JSON आउटपुट में रहता है, लेकिन
स्थिर हैश का भाग नहीं है।
नीति स्थिति स्वीकार करने का जीवनचक्र:
policy.jsoncलिखें या उसकी समीक्षा करें।openclaw policy check --jsonचलाएँ।- यदि स्वच्छ हो, तो
attestation.policy.hashकोexpectedHashके रूप में दर्ज करें। attestation.attestationHashकोexpectedAttestationHashके रूप में दर्ज करें।- CI या रिलीज़ गेट में
openclaw doctor --lintदोबारा चलाएँ।
expectedAttestationHash बदलता है।
agents.workspace नियमों को सक्षम या अपग्रेड करने से कार्यस्थान हैश और सत्यापन हैश में
agentWorkspace साक्ष्य जुड़ता है; नया साक्ष्य जाँचें और
सक्षम करने के बाद स्वीकृत सत्यापन हैश रीफ़्रेश करें। टूल पोस्चर नियमों को सक्षम या अपग्रेड करने से
इसी प्रकार toolPosture साक्ष्य जुड़ता है।
openclaw policy watch जाँच दोबारा चलाता है और यह रिपोर्ट करता है कि वर्तमान साक्ष्य कब
expectedAttestationHash से मेल खाना बंद कर देता है:
--once का उपयोग करें।
--once के बिना, यह डिफ़ॉल्ट रूप से हर दो सेकंड में पोल करता है; अंतराल बदलने के लिए
--interval-ms का उपयोग करें।
निष्कर्ष
किसी निष्कर्ष में
target (देखी गई कार्यस्थान वस्तु जो
अनुरूप नहीं है) और requirement (वह लिखित नियम जिसने इसे निष्कर्ष बनाया) दोनों शामिल हो सकते हैं।
आज दोनों oc:// पता स्ट्रिंग हैं, लेकिन फ़ील्ड नाम पते के प्रारूप के बजाय नीति में
भूमिका का वर्णन करते हैं।
निष्कर्षों के उदाहरण:
सुधार
doctor --lint और policy check केवल-पढ़ने योग्य हैं।
doctor --fix नीति-प्रबंधित कार्यस्थान सेटिंग्स को केवल तभी संपादित करता है, जब
workspaceRepairs स्पष्ट रूप से सक्षम हो; अन्यथा जाँचें बताती हैं कि वे क्या
सुधारेंगी और सेटिंग्स को अपरिवर्तित छोड़ देती हैं।
इस संस्करण में, सुधार channels.denyRules द्वारा अस्वीकृत चैनलों को अक्षम कर सकता है और
नीचे सूचीबद्ध स्वचालित दायरा-संकुचन सुधार लागू कर सकता है। workspaceRepairs को
नीति फ़ाइल की समीक्षा के बाद ही सक्षम करें, क्योंकि कोई मान्य नियम
कार्यस्थान कॉन्फ़िगरेशन बदल सकता है:
- जब वैश्विक नीति उन्नत टूल को प्रतिबंधित करती है, तब
tools.elevated.enabled=falseसेट करें - जब नीति के अनुसार उन टूल को अस्वीकृत करना आवश्यक हो, तब अनुपस्थित आवश्यक-अस्वीकृति टूल आईडी को
tools.denyयाagents.entries.*.tools.denyमें जोड़ें - असुरक्षित
gateway.controlUi.*टॉगल कोfalseपर सेट करें - जब नीति दूरस्थ Gateway मोड को अस्वीकृत करती है, तब
gateway.mode=localसेट करें - जब नीति Gateway HTTP API एंडपॉइंट को अस्वीकृत करती है, तब रिपोर्ट किए गए
gateway.http.endpoints.*.enabledपथों कोfalseपर सेट करें - जब नीति खुले समूह इनग्रेस को अस्वीकृत करती है, तब रिपोर्ट किए गए चैनल इनग्रेस
groupPolicyपथों कोallowlistपर सेट करें - जब नीति के अनुसार समूह उल्लेख आवश्यक हों, तब रिपोर्ट किए गए चैनल इनग्रेस
requireMentionपथों कोtrueपर सेट करें - जब नीति के अनुसार संवेदनशील लॉगिंग
रिडैक्शन आवश्यक हो, तब
logging.redactSensitive=toolsसेट करें - जब नीति टेलीमेट्री सामग्री कैप्चर को अस्वीकृत करती है, तब
diagnostics.otel.captureContent=false, या ऑब्जेक्ट-रूप टेलीमेट्री कैप्चर सेटिंग्स के लिएdiagnostics.otel.captureContent.enabled=falseसेट करें
tools.deny की रिपोर्ट करता है, तब दायरा-निर्धारित आवश्यक-अस्वीकृति सुधार छोड़ दिए जाते हैं, क्योंकि आवश्यक टूल को रूट कॉन्फ़िगरेशन में जोड़ने से
दायरा-निर्धारित नीति लक्ष्य के अतिरिक्त अन्य भी प्रभावित होंगे। एजेंट-स्थानीय आवश्यक-अस्वीकृति सुधार
रिपोर्ट किए गए agents.entries.*.tools.deny पथ को अपडेट कर सकते हैं।
जब निष्कर्ष इनहेरिट किए गए channels.defaults.* की रिपोर्ट करता है, तब दायरा-निर्धारित चैनल इनग्रेस सुधार छोड़ दिए जाते हैं, क्योंकि साझा चैनल डिफ़ॉल्ट बदलने से
दायरा-निर्धारित नीति लक्ष्य के अतिरिक्त अन्य भी प्रभावित होंगे। Gateway HTTP URL-फ़ेच अनुमतिसूची के निष्कर्ष
मैन्युअल रहते हैं, क्योंकि स्वचालित सुधार सही एंडपॉइंट URL
अनुमतिसूची मान नहीं चुन सकता।
Gateway बाइंड और Node-कमांड निष्कर्षों के लिए समीक्षा आवश्यक रहती है। जब
policy/gateway-non-loopback-bind या policy/gateway-node-command-denied
को किसी कॉन्फ़िगरेशन पथ से मैप किया जा सकता है, तब doctor --fix प्रस्तावित
gateway.bind या gateway.nodes.commands.deny परिवर्तन को छोड़े गए पूर्वावलोकन
मार्गदर्शन के रूप में रिपोर्ट करता है। यह परिवर्तन लागू नहीं करता, और निष्कर्ष को तब तक
सुधारा हुआ नहीं माना जाता, जब तक कोई ऑपरेटर कॉन्फ़िगरेशन या नीति की समीक्षा करके उसे अपडेट नहीं करता।