Gateway
Sandbox बनाम टूल नीति बनाम उच्चाधिकार प्राप्त
OpenClaw में तीन संबंधित (लेकिन अलग) नियंत्रण हैं:
- सैंडबॉक्स (
agents.defaults.sandbox.*/agents.list[].sandbox.*) तय करता है कि टूल कहां चलते हैं (सैंडबॉक्स बैकएंड बनाम होस्ट)। - टूल नीति (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) तय करती है कि कौन से टूल उपलब्ध/अनुमत हैं। - एलिवेटेड (
tools.elevated.*,agents.list[].tools.elevated.*) सैंडबॉक्स में होने पर सैंडबॉक्स के बाहर चलाने के लिए एक केवल-exec निकास मार्ग है (डिफ़ॉल्ट रूप सेgateway, या जब exec लक्ष्यnodeपर कॉन्फ़िगर हो तोnode)।
त्वरित डीबग
यह देखने के लिए inspector का उपयोग करें कि OpenClaw वास्तव में क्या कर रहा है:
openclaw sandbox explainopenclaw sandbox explain --session agent:main:mainopenclaw sandbox explain --agent workopenclaw sandbox explain --jsonयह प्रिंट करता है:
- प्रभावी सैंडबॉक्स मोड/स्कोप/वर्कस्पेस एक्सेस
- क्या सेशन वर्तमान में सैंडबॉक्स किया गया है (मुख्य बनाम गैर-मुख्य)
- प्रभावी सैंडबॉक्स टूल allow/deny (और क्या यह एजेंट/वैश्विक/डिफ़ॉल्ट से आया)
- एलिवेटेड गेट और fix-it key paths
सैंडबॉक्स: टूल कहां चलते हैं
सैंडबॉक्सिंग agents.defaults.sandbox.mode से नियंत्रित होती है:
"off": सब कुछ होस्ट पर चलता है।"non-main": केवल गैर-मुख्य सेशन सैंडबॉक्स किए जाते हैं (समूहों/चैनलों के लिए आम "आश्चर्य")।"all": सब कुछ सैंडबॉक्स किया जाता है।
पूर्ण मैट्रिक्स (स्कोप, वर्कस्पेस माउंट, इमेज) के लिए सैंडबॉक्सिंग देखें।
Bind mounts (सुरक्षा त्वरित जांच)
docker.bindsसैंडबॉक्स फाइलसिस्टम को भेदता है: आप जो भी माउंट करते हैं, वह कंटेनर के अंदर आपके सेट किए गए मोड (:roया:rw) के साथ दिखाई देता है।- यदि आप मोड छोड़ देते हैं तो डिफ़ॉल्ट read-write होता है; स्रोत/सीक्रेट के लिए
:roको प्राथमिकता दें। scope: "shared"प्रति-एजेंट binds को अनदेखा करता है (केवल वैश्विक binds लागू होते हैं)।- OpenClaw bind स्रोतों को दो बार वैलिडेट करता है: पहले normalized स्रोत पथ पर, फिर deepest existing ancestor के माध्यम से resolve करने के बाद फिर से। Symlink-parent escapes blocked-path या allowed-root जांचों को bypass नहीं करते।
- गैर-मौजूद leaf paths अब भी सुरक्षित रूप से जांचे जाते हैं। यदि
/workspace/alias-out/new-filesymlinked parent के माध्यम से किसी blocked path या कॉन्फ़िगर किए गए allowed roots के बाहर resolve होता है, तो bind अस्वीकार कर दिया जाता है। /var/run/docker.sockको bind करना प्रभावी रूप से सैंडबॉक्स को होस्ट नियंत्रण दे देता है; ऐसा केवल जानबूझकर करें।- वर्कस्पेस एक्सेस (
workspaceAccess: "ro"/"rw") bind modes से स्वतंत्र है।
टूल नीति: कौन से टूल मौजूद/कॉल किए जा सकते हैं
दो लेयर मायने रखती हैं:
- टूल प्रोफ़ाइल:
tools.profileऔरagents.list[].tools.profile(बेस allowlist) - प्रदाता टूल प्रोफ़ाइल:
tools.byProvider[provider].profileऔरagents.list[].tools.byProvider[provider].profile - वैश्विक/प्रति-एजेंट टूल नीति:
tools.allow/tools.denyऔरagents.list[].tools.allow/agents.list[].tools.deny - प्रदाता टूल नीति:
tools.byProvider[provider].allow/denyऔरagents.list[].tools.byProvider[provider].allow/deny - सैंडबॉक्स टूल नीति (केवल सैंडबॉक्स होने पर लागू):
tools.sandbox.tools.allow/tools.sandbox.tools.denyऔरagents.list[].tools.sandbox.tools.*
सामान्य नियम:
denyहमेशा जीतता है।- यदि
allowखाली नहीं है, तो बाकी सब blocked माना जाता है। - टूल नीति hard stop है:
/execdeniedexecटूल को override नहीं कर सकता। - टूल नीति नाम के आधार पर टूल उपलब्धता फ़िल्टर करती है; यह
execके अंदर side effects का निरीक्षण नहीं करती। यदिexecallowed है, तोwrite,edit, याapply_patchको deny करने से shell commands read-only नहीं बनतीं। /execकेवल अधिकृत senders के लिए सेशन defaults बदलता है; यह टूल एक्सेस grant नहीं करता। प्रदाता टूल keys या तोprovider(जैसेgoogle-antigravity) याprovider/model(जैसेopenai/gpt-5.4) स्वीकार करती हैं।- Gateway logs में
agents/tool-policyaudit entries शामिल होती हैं जब कोई टूल नीति चरण टूल हटाता है या कोई सैंडबॉक्स टूल नीति कॉल block करती है। rule label, config key, और प्रभावित टूल नाम देखने के लिएopenclaw logsका उपयोग करें।
टूल समूह (शॉर्टहैंड)
टूल नीतियां (वैश्विक, एजेंट, सैंडबॉक्स) group:* entries का समर्थन करती हैं जो कई टूल में expand होती हैं:
{ tools: { sandbox: { tools: { allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"], }, }, },}उपलब्ध समूह:
group:runtime:exec,process,code_execution(bashकोexecके alias के रूप में स्वीकार किया जाता है)group:fs:read,write,edit,apply_patchread-only एजेंटों के लिए, mutating filesystem tools के साथ-साथgroup:runtimeको भी deny करें, जब तक कि सैंडबॉक्स फाइलसिस्टम नीति या अलग होस्ट सीमा read-only constraint लागू न करे।group:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:heartbeat_respond,cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_list,update_plangroup:media:image,image_generate,music_generate,video_generate,ttsgroup:openclaw: सभी built-in OpenClaw टूल (provider plugins को छोड़कर)group:plugins: सभी loaded plugin-owned टूल, जिनमेंbundle-mcpके माध्यम से expose किए गए configured MCP servers शामिल हैं
सैंडबॉक्स किए गए MCP servers के लिए, सैंडबॉक्स टूल नीति दूसरा allow gate है। यदि mcp.servers configured है लेकिन सैंडबॉक्स किए गए turns में केवल built-in टूल दिखते हैं, तो tools.sandbox.tools.alsoAllow में bundle-mcp, group:plugins, या server-prefixed MCP tool name/glob जैसे outlook__send_mail या outlook__* जोड़ें, फिर gateway को restart/reload करें और tool list दोबारा capture करें। Server globs provider-safe MCP server prefix का उपयोग करते हैं: गैर-[A-Za-z0-9_-] characters - बन जाते हैं, जो नाम letter से शुरू नहीं होते उन्हें mcp- prefix मिलता है, और लंबे या duplicate prefixes truncate या suffix किए जा सकते हैं।
openclaw doctor वर्तमान में mcp.servers में OpenClaw-managed servers के लिए इस shape की जांच करता है। bundled plugin manifests या Claude .mcp.json से loaded MCP servers वही sandbox gate उपयोग करते हैं, लेकिन यह diagnostic अभी उन sources को enumerate नहीं करता; यदि उनके टूल sandboxed turns में गायब हो जाते हैं, तो वही allowlist entries उपयोग करें।
एलिवेटेड: केवल-exec "होस्ट पर चलाएं"
एलिवेटेड अतिरिक्त टूल grant नहीं करता; यह केवल exec को प्रभावित करता है।
- यदि आप सैंडबॉक्स में हैं, तो
/elevated on(याelevated: trueके साथexec) सैंडबॉक्स के बाहर चलता है (approvals फिर भी लागू हो सकते हैं)। - सेशन के लिए exec approvals छोड़ने के लिए
/elevated fullका उपयोग करें। - यदि आप पहले से direct चल रहे हैं, तो elevated प्रभावी रूप से no-op है (फिर भी gated)।
- एलिवेटेड skill-scoped नहीं है और टूल allow/deny को override नहीं करता।
- एलिवेटेड
host=autoसे arbitrary cross-host overrides grant नहीं करता; यह सामान्य exec target rules का पालन करता है और केवलnodeको तब preserve करता है जब configured/session target पहले सेnodeहो। /execelevated से अलग है। यह केवल authorized senders के लिए per-session exec defaults adjust करता है।
Gates:
- Enablement:
tools.elevated.enabled(और वैकल्पिक रूप सेagents.list[].tools.elevated.enabled) - Sender allowlists:
tools.elevated.allowFrom.<provider>(और वैकल्पिक रूप सेagents.list[].tools.elevated.allowFrom.<provider>)
एलिवेटेड मोड देखें।
आम "सैंडबॉक्स जेल" सुधार
"Tool X blocked by sandbox tool policy"
Fix-it keys (एक चुनें):
- सैंडबॉक्स disable करें:
agents.defaults.sandbox.mode=off(या प्रति-एजेंटagents.list[].sandbox.mode=off) - सैंडबॉक्स के अंदर टूल allow करें:
- इसे
tools.sandbox.tools.deny(या प्रति-एजेंटagents.list[].tools.sandbox.tools.deny) से हटाएं - या इसे
tools.sandbox.tools.allow(या प्रति-एजेंट allow) में जोड़ें
- इसे
agents/tool-policyentry के लिएopenclaw logsजांचें। यह sandbox mode और यह record करता है कि allow या deny rule ने टूल block किया।
"I thought this was main, why is it sandboxed?"
"non-main" mode में, group/channel keys main नहीं होतीं। main session key (जो sandbox explain द्वारा दिखाई जाती है) का उपयोग करें या mode को "off" पर switch करें।
संबंधित
- सैंडबॉक्सिंग -- पूर्ण sandbox reference (modes, scopes, backends, images)
- Multi-Agent Sandbox और टूल -- प्रति-एजेंट overrides और precedence
- एलिवेटेड मोड