Sandbox مقابل Tool Policy مقابل Elevated
يحتوي OpenClaw على ثلاثة عناصر تحكم مترابطة (لكنها مختلفة):- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) يحدد مكان تشغيل الأدوات (Docker أم المضيف). - Tool policy (
tools.*وtools.sandbox.tools.*وagents.list[].tools.*) تحدد أي الأدوات متاحة/مسموح بها. - Elevated (
tools.elevated.*وagents.list[].tools.elevated.*) هو منفذ هروب خاص بـ exec فقط للتشغيل خارج sandbox عندما تكون داخل sandbox (gatewayافتراضيًا، أوnodeعندما يكون هدف exec مضبوطًا علىnode).
تصحيح سريع
استخدم أداة الفحص لمعرفة ما الذي يفعله OpenClaw فعليًا:- وضع/nطاق/وصول مساحة العمل الفعلي لـ sandbox
- ما إذا كانت الجلسة تعمل حاليًا داخل sandbox (main مقابل non-main)
- سياسة السماح/المنع الفعلية لأدوات sandbox (وما إذا كانت جاءت من agent/global/default)
- بوابات elevated ومسارات المفاتيح المقترحة للإصلاح
Sandbox: أين تعمل الأدوات
يتم التحكم في sandboxing بواسطةagents.defaults.sandbox.mode:
"off": كل شيء يعمل على المضيف."non-main": تُعزل فقط الجلسات غير الرئيسية (وهذا “مفاجأة” شائعة للمجموعات/القنوات)."all": كل شيء يعمل داخل sandbox.
bind mounts (فحص أمني سريع)
- يقوم
docker.bindsباختراق نظام ملفات sandbox: فكل ما تقوم بتحميله يصبح مرئيًا داخل الحاوية بالنمط الذي تضبطه (:roأو:rw). - يكون الوضع الافتراضي هو القراءة والكتابة إذا حذفت النمط؛ ويفضّل استخدام
:roللمصدر/الأسرار. - يتجاهل
scope: "shared"عمليات bind الخاصة بكل وكيل (ولا تُطبّق إلا عمليات bind العامة). - يتحقق OpenClaw من مصادر bind مرتين: أولًا على مسار المصدر الموحّد، ثم مرة أخرى بعد الحل عبر أعمق سلف موجود. ولا تتجاوز عمليات الهروب عبر symlink-parent فحوصات المسارات المحظورة أو الجذور المسموح بها.
- ما زالت مسارات الأوراق غير الموجودة تُفحص بأمان. فإذا تم حل
/workspace/alias-out/new-fileعبر parent مرتبط بـ symlink إلى مسار محظور أو خارج الجذور المسموح بها المكوّنة، فسيتم رفض bind. - يؤدي bind الخاص بـ
/var/run/docker.sockفعليًا إلى منح التحكم بالمضيف إلى sandbox؛ فلا تفعل ذلك إلا عن قصد. - يكون وصول مساحة العمل (
workspaceAccess: "ro"/"rw") مستقلاً عن أنماط bind.
Tool policy: أي الأدوات موجودة/يمكن استدعاؤها
توجد طبقتان مهمتان:- Tool profile:
tools.profileوagents.list[].tools.profile(قائمة السماح الأساسية) - Provider tool profile:
tools.byProvider[provider].profileوagents.list[].tools.byProvider[provider].profile - Global/per-agent tool policy:
tools.allow/tools.denyوagents.list[].tools.allow/agents.list[].tools.deny - Provider tool policy:
tools.byProvider[provider].allow/denyوagents.list[].tools.byProvider[provider].allow/deny - Sandbox tool policy (تنطبق فقط عند العمل داخل sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyوagents.list[].tools.sandbox.tools.*
denyيفوز دائمًا.- إذا كانت
allowغير فارغة، فسيُعامل كل ما عداها على أنه محظور. - تكون Tool policy هي نقطة التوقف الصارمة: لا يمكن لـ
/execتجاوز أداةexecالمحظورة. - يغيّر
/execالإعدادات الافتراضية للجلسة فقط للمرسلين المصرح لهم؛ ولا يمنح وصولًا إلى الأدوات. تقبل مفاتيح أدوات المزوّد إماprovider(مثلgoogle-antigravity) أوprovider/model(مثلopenai/gpt-5.4).
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العامة، ولكل وكيل، وداخل sandbox) إدخالاتgroup:* التي تتوسع إلى عدة أدوات:
group:runtime: execوprocessوcode_execution(ويُقبلbashكاسم مستعار لـexec)group:fs: readوwriteوeditوapply_patchgroup: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: cronوgatewaygroup:messaging: messagegroup:nodes: nodesgroup:agents: agents_listgroup:media: imageوimage_generateوttsgroup:openclaw: جميع أدوات OpenClaw المضمنة (باستثناء plugins الخاصة بالمزوّدين)
Elevated: “تشغيل على المضيف” خاص بـ exec فقط
لا يمنح Elevated أدوات إضافية؛ فهو يؤثر فقط فيexec.
- إذا كنت داخل sandbox، فإن
/elevated on(أوexecمعelevated: true) يعمل خارج sandbox (وقد تظل الموافقات مطلوبة). - استخدم
/elevated fullلتخطي موافقات exec للجلسة. - إذا كنت تعمل بالفعل بشكل مباشر، فإن elevated يصبح فعليًا بلا تأثير (مع استمرار التقييد).
- لا يكون Elevated ضمن نطاق Skills ولا يتجاوز allow/deny الخاصة بالأدوات.
- لا يمنح Elevated تجاوزات عشوائية عبر المضيف من
host=auto؛ بل يتبع قواعد هدف exec العادية ولا يحتفظ إلا بـnodeعندما يكون الهدف المكوّن/الخاص بالجلسة مضبوطًا أصلًا علىnode. - يختلف
/execعن elevated. فهو يضبط فقط الإعدادات الافتراضية الخاصة بـ exec لكل جلسة للمرسلين المصرح لهم.
- التمكين:
tools.elevated.enabled(واختياريًاagents.list[].tools.elevated.enabled) - allowlists الخاصة بالمرسلين:
tools.elevated.allowFrom.<provider>(واختياريًاagents.list[].tools.elevated.allowFrom.<provider>)
إصلاحات شائعة لـ “سجن sandbox"
"الأداة X محظورة بواسطة سياسة أدوات sandbox”
مفاتيح الإصلاح (اختر واحدًا):- تعطيل sandbox:
agents.defaults.sandbox.mode=off(أو لكل وكيلagents.list[].sandbox.mode=off) - السماح بالأداة داخل sandbox:
- أزلها من
tools.sandbox.tools.deny(أوagents.list[].tools.sandbox.tools.denyلكل وكيل) - أو أضفها إلى
tools.sandbox.tools.allow(أو allow الخاصة بكل وكيل)
- أزلها من
“كنت أظن أن هذه هي main، فلماذا هي داخل sandbox؟”
في وضع"non-main"، لا تُعد مفاتيح المجموعة/القناة هي main. استخدم مفتاح الجلسة الرئيسي (المعروض بواسطة sandbox explain) أو غيّر الوضع إلى "off".
راجع أيضًا
- Sandboxing — المرجع الكامل لـ sandbox (الأوضاع، والنطاقات، والواجهات الخلفية، والصور)
- Multi-Agent Sandbox & Tools — التجاوزات لكل وكيل وترتيب الأولوية
- Elevated Mode