Skip to main content

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.denyTools exec, 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.jsonexecApprovals.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 आउटपुट में रहता है, लेकिन स्थिर हैश का भाग नहीं है। नीति स्थिति स्वीकार करने का जीवनचक्र:
  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 से मेल खाना बंद कर देता है:
एकल विचलन मूल्यांकन की आवश्यकता वाली CI या स्क्रिप्ट में --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 परिवर्तन को छोड़े गए पूर्वावलोकन मार्गदर्शन के रूप में रिपोर्ट करता है। यह परिवर्तन लागू नहीं करता, और निष्कर्ष को तब तक सुधारा हुआ नहीं माना जाता, जब तक कोई ऑपरेटर कॉन्फ़िगरेशन या नीति की समीक्षा करके उसे अपडेट नहीं करता।

निकास कोड

संबंधित