Tools
موافقات التنفيذ
موافقات التنفيذ هي حاجز أمان التطبيق المرافق / مضيف Node للسماح
لوكيل داخل صندوق حماية بتشغيل أوامر على مضيف حقيقي (gateway أو node). وهي
قفل أمان: لا يُسمح بالأوامر إلا عندما تتوافق السياسة + قائمة السماح +
موافقة المستخدم (اختياريًا) جميعًا. تُطبَّق موافقات التنفيذ فوق
سياسة الأدوات وبوابة الرفع (إلا إذا ضُبط الرفع على full، إذ
يتجاوز الموافقات).
فحص السياسة الفعالة
| الأمر | ما يعرضه |
|---|---|
openclaw approvals get / --gateway / --node <id|name|ip> |
السياسة المطلوبة، ومصادر سياسة المضيف، والنتيجة الفعالة. |
openclaw exec-policy show |
العرض المدمج للجهاز المحلي. |
openclaw exec-policy set / preset |
مزامنة السياسة المحلية المطلوبة مع ملف موافقات المضيف المحلي في خطوة واحدة. |
عندما يطلب نطاق محلي host=node، يبلّغ exec-policy show عن ذلك
النطاق بوصفه مُدارًا بواسطة Node وقت التشغيل بدلًا من الادعاء بأن ملف
الموافقات المحلي هو مصدر الحقيقة.
إذا كانت واجهة مستخدم التطبيق المرافق غير متاحة، فإن أي طلب كان
سيطلب تأكيدًا عادةً يُحسم بواسطة احتياطي السؤال (الافتراضي: deny).
أين ينطبق ذلك
تُفرض موافقات التنفيذ محليًا على مضيف التنفيذ:
- مضيف Gateway → عملية
openclawعلى جهاز Gateway. - مضيف Node → مشغّل Node (تطبيق macOS المرافق أو مضيف Node بلا واجهة).
نموذج الثقة
- يُعد المتصلون المصادق عليهم عبر Gateway مشغلين موثوقين لذلك Gateway.
- توسّع العقد المقترنة قدرة المشغل الموثوق هذه إلى مضيف Node.
- تقلل موافقات التنفيذ خطر التنفيذ العرضي، لكنها ليست حدًا للمصادقة لكل مستخدم أو سياسة قراءة فقط لنظام الملفات.
- بعد الموافقة، يمكن للأمر تعديل الملفات وفق أذونات نظام الملفات للمضيف أو صندوق الحماية المحدد.
- تربط عمليات مضيف Node الموافق عليها سياق التنفيذ القياسي: دليل العمل القياسي، ووسيطات argv الدقيقة، وربط البيئة عند وجوده، ومسار الملف التنفيذي المثبّت عند انطباق ذلك.
- بالنسبة إلى سكربتات الصدفة واستدعاءات ملفات المفسر/وقت التشغيل المباشرة، يحاول OpenClaw أيضًا ربط معامل ملف محلي ملموس واحد. إذا تغيّر ذلك الملف المربوط بعد الموافقة وقبل التنفيذ، تُرفض العملية بدلًا من تنفيذ محتوى تغيّر.
- ربط الملفات مقصود أن يكون بأفضل جهد، وليس نموذجًا دلاليًا كاملًا لكل مسار تحميل لمفسر/وقت تشغيل. إذا لم يستطع وضع الموافقة تحديد ملف محلي ملموس واحد بالضبط لربطه، فإنه يرفض إنشاء تشغيل مدعوم بالموافقة بدلًا من الادعاء بتغطية كاملة.
فصل macOS
- تمرر خدمة مضيف Node
system.runإلى تطبيق macOS عبر IPC محلي. - يفرض تطبيق macOS الموافقات وينفذ الأمر في سياق واجهة المستخدم.
الإعدادات والتخزين
توجد الموافقات في ملف JSON محلي على مضيف التنفيذ:
~/.openclaw/exec-approvals.jsonمثال على المخطط:
{ "version": 1, "socket": { "path": "~/.openclaw/exec-approvals.sock", "token": "base64url-token" }, "defaults": { "security": "deny", "ask": "on-miss", "askFallback": "deny", "autoAllowSkills": false }, "agents": { "main": { "security": "allowlist", "ask": "on-miss", "askFallback": "deny", "autoAllowSkills": true, "allowlist": [ { "id": "B0C8C0B3-2C2D-4F8A-9A3C-5A4B3C2D1E0F", "pattern": "~/Projects/**/bin/rg", "source": "allow-always", "commandText": "rg -n TODO", "lastUsedAt": 1737150000000, "lastUsedCommand": "rg -n TODO", "lastResolvedPath": "/Users/user/Projects/.../bin/rg" } ] } }}عناصر ضبط السياسة
exec.security
security"deny" | "allowlist" | "full"deny- حظر كل طلبات تنفيذ المضيف.allowlist- السماح بالأوامر الموجودة في قائمة السماح فقط.full- السماح بكل شيء (مكافئ للرفع).
exec.ask
ask"off" | "on-miss" | "always"off- عدم طلب التأكيد أبدًا.on-miss- طلب التأكيد فقط عندما لا تطابق قائمة السماح.always- طلب التأكيد على كل أمر. الثقة الدائمةallow-alwaysلا تلغي طلبات التأكيد عندما يكون وضع السؤال الفعالalways.
askFallback
askFallback"deny" | "allowlist" | "full"الحسم عندما يكون طلب التأكيد مطلوبًا ولكن لا يمكن الوصول إلى واجهة مستخدم.
deny- الحظر.allowlist- السماح فقط إذا طابقت قائمة السماح.full- السماح.
tools.exec.strictInlineEval
strictInlineEvalbooleanعندما تكون true، يعامل OpenClaw صيغ تقييم الكود المضمن على أنها تتطلب موافقة فقط
حتى إذا كان ملف المفسر الثنائي نفسه في قائمة السماح. هذا دفاع متعدد الطبقات
لمحمّلات المفسرات التي لا تُطابق بوضوح معامل ملف واحدًا مستقرًا.
أمثلة يلتقطها الوضع الصارم:
python -cnode -e,node --eval,node -pruby -eperl -e,perl -Ephp -rlua -eosascript -e
في الوضع الصارم، تظل هذه الأوامر بحاجة إلى موافقة صريحة، ولا
يحفظ allow-always إدخالات قائمة سماح جديدة لها
تلقائيًا.
tools.exec.commandHighlighting
commandHighlightingbooleandefault: falseيتحكم في العرض فقط داخل مطالبات موافقة التنفيذ. عند تمكينه،
قد يرفق OpenClaw نطاقات أوامر مشتقة من المحلل بحيث تستطيع مطالبات
الموافقة عبر الويب تمييز رموز الأمر. اضبطه على true لتمكين
تمييز نص الأمر.
لا يغير هذا الإعداد security أو ask أو مطابقة قائمة السماح
أو سلوك التقييم المضمن الصارم أو تمرير الموافقات أو تنفيذ الأوامر.
يمكن ضبطه عموميًا ضمن tools.exec.commandHighlighting أو لكل
وكيل ضمن agents.list[].tools.exec.commandHighlighting.
وضع YOLO (بلا موافقة)
إذا أردت أن يعمل تنفيذ المضيف دون مطالبات موافقة، فيجب أن تفتح
كلتا طبقتي السياسة - سياسة التنفيذ المطلوبة في إعدادات OpenClaw
(tools.exec.*) و سياسة الموافقات المحلية للمضيف في
~/.openclaw/exec-approvals.json.
YOLO هو سلوك المضيف الافتراضي ما لم تشدده صراحةً:
| الطبقة | إعداد YOLO |
|---|---|
tools.exec.security |
full على gateway/node |
tools.exec.ask |
off |
askFallback للمضيف |
full |
يمكن للمزودين المدعومين بواجهة CLI الذين يعرّضون وضع أذونات غير تفاعلي خاصًا بهم
اتباع هذه السياسة. تضيف Claude CLI
--permission-mode bypassPermissions عندما تكون سياسة التنفيذ المطلوبة من OpenClaw
هي YOLO. تجاوز سلوك الخلفية هذا باستخدام وسائط Claude صريحة
ضمن agents.defaults.cliBackends.claude-cli.args / resumeArgs -
مثل --permission-mode default أو acceptEdits أو
bypassPermissions.
إذا أردت إعدادًا أكثر تحفظًا، فشدّد أيًا من الطبقتين مجددًا إلى
allowlist / on-miss أو deny.
إعداد "عدم طلب التأكيد مطلقًا" دائم لمضيف Gateway
اضبط سياسة الإعدادات المطلوبة
openclaw config set tools.exec.host gatewayopenclaw config set tools.exec.security fullopenclaw config set tools.exec.ask offopenclaw gateway restartطابق ملف موافقات المضيف
openclaw approvals set --stdin <<'EOF'{ version: 1, defaults: { security: "full", ask: "off", askFallback: "full" }}EOFاختصار محلي
openclaw exec-policy preset yoloيحدث ذلك الاختصار المحلي كليهما:
tools.exec.host/security/askالمحلي.- الإعدادات الافتراضية المحلية في
~/.openclaw/exec-approvals.json.
إنه محلي فقط عن قصد. لتغيير موافقات مضيف Gateway أو مضيف Node
عن بُعد، استخدم openclaw approvals set --gateway أو
openclaw approvals set --node <id|name|ip>.
مضيف Node
بالنسبة إلى مضيف Node، طبّق ملف الموافقات نفسه على تلك العقدة بدلًا من ذلك:
openclaw approvals set --node <id|name|ip> --stdin <<'EOF'{ version: 1, defaults: { security: "full", ask: "off", askFallback: "full" }}EOFاختصار خاص بالجلسة فقط
- يغير
/exec security=full ask=offالجلسة الحالية فقط. /elevated fullهو اختصار لكسر الحاجز يتجاوز أيضًا موافقات التنفيذ لتلك الجلسة.
إذا ظل ملف موافقات المضيف أكثر صرامة من الإعدادات، فستظل سياسة المضيف الأكثر صرامة هي الغالبة.
قائمة السماح (لكل وكيل)
قوائم السماح لكل وكيل. إذا وُجد عدة وكلاء، فبدّل الوكيل الذي تعدّله في تطبيق macOS. الأنماط هي مطابقات glob.
يمكن أن تكون الأنماط مسارات ملفات ثنائية محلولة بصيغة glob أو أسماء أوامر مجردة بصيغة glob.
الأسماء المجردة لا تطابق إلا الأوامر المستدعاة عبر PATH، لذلك يمكن أن يطابق rg
المسار /opt/homebrew/bin/rg عندما يكون الأمر rg، لكنه لا يطابق ./rg أو
/tmp/rg. استخدم نمط مسار glob عندما تريد الوثوق بموقع ملف ثنائي محدد
واحد.
تُرحّل إدخالات agents.default القديمة إلى agents.main عند التحميل.
ما زالت سلاسل الصدفة مثل echo ok && pwd تحتاج إلى أن يستوفي كل مقطع من المستوى الأعلى
قواعد قائمة السماح.
أمثلة:
rg~/Projects/**/bin/peekaboo~/.local/bin/*/opt/homebrew/bin/rg
تقييد الوسيطات باستخدام argPattern
أضف argPattern عندما يجب أن يطابق إدخال قائمة السماح ملفًا ثنائيًا وشكل
وسيطات محددًا. يقيّم OpenClaw التعبير النمطي
على وسيطات الأمر المحللة، مع استبعاد رمز الملف التنفيذي
(argv[0]). بالنسبة إلى الإدخالات المكتوبة يدويًا، تُدمج الوسيطات
بمسافة واحدة، لذلك ثبّت النمط عندما تحتاج إلى مطابقة دقيقة.
{ "version": 1, "agents": { "main": { "allowlist": [ { "pattern": "python3", "argPattern": "^safe\\.py$" } ] } }}يسمح ذلك الإدخال بـ python3 safe.py؛ أما python3 other.py فهو عدم مطابقة
لقائمة السماح. إذا كان إدخال مسار فقط للملف الثنائي نفسه موجودًا أيضًا، فقد
تظل الوسيطات غير المطابقة تعود إلى ذلك الإدخال ذي المسار فقط. احذف إدخال المسار فقط
عندما يكون الهدف هو تقييد الملف الثنائي بالوسيطات المعلنة.
تستخدم الإدخالات المحفوظة بواسطة تدفقات الموافقة تنسيق فاصل داخليًا
لمطابقة argv بدقة. فضّل استخدام واجهة المستخدم أو تدفق الموافقة لإعادة توليد تلك
الإدخالات بدلًا من تحرير القيمة المرمّزة يدويًا. إذا تعذر على OpenClaw
تحليل argv لمقطع أمر، فلن تتطابق الإدخالات التي تحتوي على argPattern.
يدعم كل إدخال في قائمة السماح ما يلي:
| الحقل | المعنى |
|---|---|
pattern |
نمط glob لمسار الملف التنفيذي المحلول أو نمط glob لاسم أمر مجرد |
argPattern |
تعبير argv نمطي اختياري؛ الإدخالات التي حُذف منها تكون للمسار فقط |
id |
UUID ثابت يُستخدم لهوية واجهة المستخدم |
source |
مصدر الإدخال، مثل allow-always |
commandText |
نص الأمر الذي تم التقاطه عندما أنشأ تدفق موافقة الإدخال |
lastUsedAt |
الطابع الزمني لآخر استخدام |
lastUsedCommand |
آخر أمر تطابق |
lastResolvedPath |
آخر مسار ملف تنفيذي محلول |
السماح التلقائي لواجهات CLI الخاصة بـ Skills
عند تفعيل السماح التلقائي لواجهات CLI الخاصة بـ Skills، تُعامل الملفات التنفيذية المشار إليها بواسطة
Skills المعروفة على أنها مدرجة في قائمة السماح على العقد (عقدة macOS أو مضيف
عقدة بلا واجهة). يستخدم هذا skills.bins عبر Gateway RPC لجلب
قائمة ملفات bin الخاصة بالمهارة. عطّل هذا إذا كنت تريد قوائم سماح يدوية صارمة.
ملفات bin الآمنة وتمرير الموافقات
لملفات bin الآمنة (المسار السريع الخاص بـ stdin فقط)، وتفاصيل ربط المفسّر، و كيفية تمرير مطالبات الموافقة إلى Slack/Discord/Telegram (أو تشغيلها كعملاء موافقة أصليين)، راجع موافقات التنفيذ - متقدم.
تحرير واجهة التحكم
استخدم بطاقة واجهة التحكم → العقد → موافقات التنفيذ لتحرير الإعدادات الافتراضية، والتجاوزات لكل وكيل، وقوائم السماح. اختر نطاقًا (الإعدادات الافتراضية أو وكيلًا)، وعدّل السياسة، وأضف/أزل أنماط قائمة السماح، ثم اضغط حفظ. تعرض واجهة المستخدم بيانات تعريف آخر استخدام لكل نمط حتى تتمكن من إبقاء القائمة مرتبة.
يختار محدد الهدف Gateway (موافقات محلية) أو Node.
يجب أن تعلن العقد عن system.execApprovals.get/set (تطبيق macOS أو
مضيف عقدة بلا واجهة). إذا لم تكن عقدة ما تعلن موافقات التنفيذ بعد،
فحرّر ملفها المحلي ~/.openclaw/exec-approvals.json مباشرةً.
CLI: يدعم openclaw approvals تحرير Gateway أو العقدة - راجع
CLI الموافقات.
تدفق الموافقة
عندما تكون المطالبة مطلوبة، يبث Gateway
exec.approval.requested إلى عملاء المشغّل. تحلها واجهة التحكم وتطبيق macOS
عبر exec.approval.resolve، ثم يمرر Gateway الطلب
الموافق عليه إلى مضيف العقدة.
بالنسبة إلى host=node، تتضمن طلبات الموافقة حمولة systemRunPlan
معيارية. يستخدم Gateway تلك الخطة باعتبارها سياق
الأمر/cwd/الجلسة المعتمد عند تمرير طلبات system.run
الموافق عليها.
وهذا مهم لزمن انتقال الموافقات غير المتزامنة:
- يجهّز مسار تنفيذ العقدة خطة معيارية واحدة مقدمًا.
- يخزن سجل الموافقة تلك الخطة وبيانات تعريف ربطها.
- بعد الموافقة، تعيد استدعاءة
system.runالنهائية المُمرّرة استخدام الخطة المخزنة بدلًا من الوثوق بتعديلات لاحقة من المستدعي. - إذا غيّر المستدعي
commandأوrawCommandأوcwdأوagentIdأوsessionKeyبعد إنشاء طلب الموافقة، يرفض Gateway التشغيل المُمرّر باعتباره عدم تطابق في الموافقة.
أحداث النظام
تظهر دورة حياة التنفيذ كرسائل نظام:
Exec running(فقط إذا تجاوز الأمر حد إشعار التشغيل).Exec finished.Exec denied.
تُنشر هذه إلى جلسة الوكيل بعد أن تبلغ العقدة عن الحدث.
تصدر موافقات التنفيذ المستضافة على Gateway أحداث دورة الحياة نفسها عند
انتهاء الأمر (واختياريًا عند استمرار التشغيل لفترة أطول من الحد).
تعيد عمليات التنفيذ المحكومة بالموافقة استخدام معرف الموافقة باعتباره runId في هذه
الرسائل لتسهيل الربط.
سلوك الموافقة المرفوضة
عند رفض موافقة تنفيذ غير متزامنة، يمنع OpenClaw الوكيل من إعادة استخدام خرج أي تشغيل سابق للأمر نفسه في الجلسة. يُمرر سبب الرفض مع إرشاد صريح بأنه لا يتوفر خرج للأمر، مما يمنع الوكيل من الادعاء بوجود خرج جديد أو تكرار الأمر المرفوض بنتائج قديمة من تشغيل سابق ناجح.
الآثار
fullقوي؛ فضّل قوائم السماح متى أمكن.askيبقيك ضمن الحلقة مع الاستمرار في إتاحة موافقات سريعة.- تمنع قوائم السماح لكل وكيل تسرب موافقات وكيل إلى وكلاء آخرين.
- تنطبق الموافقات فقط على طلبات تنفيذ المضيف من المرسلين المصرح لهم. لا يستطيع المرسلون غير المصرح لهم إصدار
/exec. - يُعد
/exec security=fullتيسيرًا على مستوى الجلسة للمشغّلين المصرح لهم ويتجاوز الموافقات بحكم التصميم. لحظر تنفيذ المضيف حظرًا صارمًا، اضبط أمان الموافقات علىdenyأو ارفض أداةexecعبر سياسة الأدوات.
ذات صلة
ملفات bin الآمنة، وربط المفسّر، وتمرير الموافقات إلى الدردشة.
أداة تنفيذ أوامر الصدفة.
مسار كسر الزجاج الذي يتجاوز الموافقات أيضًا.
أوضاع Sandbox والوصول إلى مساحة العمل.
نموذج الأمان والتقوية.
متى تستخدم كل عنصر تحكم.
سلوك السماح التلقائي المدعوم بالمهارات.