الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

موافقات التنفيذ هي حاجز أمان التطبيق المرافق / مضيف Node للسماح لوكيل داخل صندوق حماية بتشغيل أوامر على مضيف حقيقي (gateway أو node). وهي قفل أمان: لا يُسمح بالأوامر إلا عندما تتوافق السياسة + قائمة السماح + موافقة المستخدم (اختياريًا) جميعًا. تُطبَّق موافقات التنفيذ فوق سياسة الأدوات وبوابة الرفع (إلا إذا ضُبط الرفع على full، إذ يتجاوز الموافقات).
السياسة الفعالة هي الأكثر صرامة بين إعدادات tools.exec.* وقيم الموافقات الافتراضية؛ إذا حُذف حقل موافقات، تُستخدم قيمة tools.exec. يستخدم تنفيذ المضيف أيضًا حالة الموافقات المحلية على ذلك الجهاز - فوجود إعداد محلي للمضيف ask: "always" في ~/.openclaw/exec-approvals.json يستمر في طلب التأكيد حتى إذا طلبت الجلسة أو الإعدادات الافتراضية ask: "on-miss".

فحص السياسة الفعالة

الأمرما يعرضه
openclaw approvals get / --gateway / --node <id|name|ip>السياسة المطلوبة، ومصادر سياسة المضيف، والنتيجة الفعالة.
openclaw exec-policy showالعرض المدمج للجهاز المحلي.
openclaw exec-policy set / presetمزامنة السياسة المحلية المطلوبة مع ملف موافقات المضيف المحلي في خطوة واحدة.
عندما يطلب نطاق محلي host=node، يبلّغ exec-policy show عن ذلك النطاق بوصفه مُدارًا بواسطة Node وقت التشغيل بدلًا من الادعاء بأن ملف الموافقات المحلي هو مصدر الحقيقة. إذا كانت واجهة مستخدم التطبيق المرافق غير متاحة، فإن أي طلب كان سيطلب تأكيدًا عادةً يُحسم بواسطة احتياطي السؤال (الافتراضي: deny).
يمكن لعملاء موافقات الدردشة الأصليين تهيئة تسهيلات خاصة بالقناة على رسالة الموافقة المعلقة. على سبيل المثال، تهيئ Matrix اختصارات التفاعل ( السماح مرة واحدة، الرفض، ♾️ السماح دائمًا) مع إبقاء أوامر /approve ... في الرسالة كاحتياطي.

أين ينطبق ذلك

تُفرض موافقات التنفيذ محليًا على مضيف التنفيذ:
  • مضيف 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

strictInlineEval
boolean
عندما تكون true، يعامل OpenClaw صيغ تقييم الكود المضمن على أنها تتطلب موافقة فقط حتى إذا كان ملف المفسر الثنائي نفسه في قائمة السماح. هذا دفاع متعدد الطبقات لمحمّلات المفسرات التي لا تُطابق بوضوح معامل ملف واحدًا مستقرًا.
أمثلة يلتقطها الوضع الصارم:
  • python -c
  • node -e, node --eval, node -p
  • ruby -e
  • perl -e, perl -E
  • php -r
  • lua -e
  • osascript -e
في الوضع الصارم، تظل هذه الأوامر بحاجة إلى موافقة صريحة، ولا يحفظ allow-always إدخالات قائمة سماح جديدة لها تلقائيًا.

tools.exec.commandHighlighting

commandHighlighting
boolean
افتراضي:"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.securityfull على gateway/node
tools.exec.askoff
askFallback للمضيفfull
فروق مهمة:
  • tools.exec.host=auto يختار أين يعمل التنفيذ: صندوق الحماية عند توفره، وإلا Gateway.
  • يختار YOLO كيف تتم الموافقة على تنفيذ المضيف: security=full بالإضافة إلى ask=off.
  • في وضع YOLO، لا يضيف OpenClaw بوابة موافقة منفصلة لاكتشاف تمويه الأوامر بالاستدلال أو طبقة رفض تمهيدية للسكربتات فوق سياسة تنفيذ المضيف المضبوطة.
  • لا يجعل auto توجيه Gateway تجاوزًا مجانيًا من جلسة داخل صندوق حماية. يُسمح بطلب host=node لكل استدعاء من auto؛ ولا يُسمح بـ host=gateway من auto إلا عندما لا يكون وقت تشغيل صندوق الحماية نشطًا. للحصول على افتراضي ثابت غير تلقائي، اضبط tools.exec.host أو استخدم /exec host=... صراحةً.
يمكن للمزودين المدعومين بواجهة 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

1

اضبط سياسة الإعدادات المطلوبة

openclaw config set tools.exec.host gateway
openclaw config set tools.exec.security full
openclaw config set tools.exec.ask off
openclaw gateway restart
2

طابق ملف موافقات المضيف

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
قيود محلية فقط:
  • لا يزامن openclaw exec-policy موافقات Node.
  • يُرفض openclaw exec-policy set --host node.
  • تُجلب موافقات تنفيذ Node من العقدة وقت التشغيل، لذلك يجب أن تستخدم التحديثات الموجهة إلى Node الأمر openclaw approvals --node ....

اختصار خاص بالجلسة فقط

  • يغير /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 نمطي اختياري؛ الإدخالات التي حُذف منها تكون للمسار فقط
idUUID ثابت يُستخدم لهوية واجهة المستخدم
sourceمصدر الإدخال، مثل allow-always
commandTextنص الأمر الذي تم التقاطه عندما أنشأ تدفق موافقة الإدخال
lastUsedAtالطابع الزمني لآخر استخدام
lastUsedCommandآخر أمر تطابق
lastResolvedPathآخر مسار ملف تنفيذي محلول

السماح التلقائي لواجهات CLI الخاصة بـ Skills

عند تفعيل السماح التلقائي لواجهات CLI الخاصة بـ Skills، تُعامل الملفات التنفيذية المشار إليها بواسطة Skills المعروفة على أنها مدرجة في قائمة السماح على العقد (عقدة macOS أو مضيف عقدة بلا واجهة). يستخدم هذا skills.bins عبر Gateway RPC لجلب قائمة ملفات bin الخاصة بالمهارة. عطّل هذا إذا كنت تريد قوائم سماح يدوية صارمة.
  • هذه قائمة سماح ضمنية للتيسير، منفصلة عن إدخالات قائمة السماح اليدوية للمسارات.
  • وهي مخصصة لبيئات المشغّلين الموثوقة التي يكون فيها Gateway والعقدة ضمن حد الثقة نفسه.
  • إذا كنت تتطلب ثقة صريحة صارمة، فأبقِ autoAllowSkills: false واستخدم إدخالات قائمة السماح اليدوية للمسارات فقط.

ملفات 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

أوضاع Sandbox والوصول إلى مساحة العمل.

الأمان

نموذج الأمان والتقوية.

Sandbox مقابل سياسة الأدوات مقابل الوضع المرتفع

متى تستخدم كل عنصر تحكم.

Skills

سلوك السماح التلقائي المدعوم بالمهارات.