---
read_when:
    - تهيئة موافقات التنفيذ أو قوائم السماح
    - تنفيذ تجربة مستخدم للموافقة على التشغيل في تطبيق macOS
    - مراجعة مطالبات الهروب من بيئة العزل وتداعياتها
sidebarTitle: Exec approvals
summary: 'موافقات التنفيذ على المضيف: عناصر التحكم في السياسة، وقوائم السماح، وسير عمل YOLO/الصارم'
title: موافقات التنفيذ
x-i18n:
    generated_at: "2026-07-12T06:34:15Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: b44efdfe5a6c9f3cc978baef91d80d1f75d39627d3a16f5971800809a642a72c
    source_path: tools/exec-approvals.md
    workflow: 16
---

موافقات التنفيذ هي **آلية الحماية في التطبيق المرافق / مضيف Node** للسماح لوكيل
يعمل ضمن بيئة معزولة بتشغيل الأوامر على مضيف فعلي (`gateway` أو `node`). لا تُشغَّل
الأوامر إلا عند توافق السياسة + قائمة السماح + موافقة المستخدم (الاختيارية) جميعًا.
تُطبَّق الموافقات **فوق** سياسة الأدوات وبوابة الصلاحيات المرتفعة (يتجاوزها
`full` المرتفع).

للحصول على نظرة عامة مرتبة حسب الوضع حول `deny` و`allowlist` و`ask` و`auto` و`full`
وتعيين Codex Guardian وأذونات حاضنة ACPX، راجع
[أوضاع الأذونات](/ar/tools/permission-modes).

<Note>
السياسة الفعلية هي **الأكثر تقييدًا** بين `tools.exec.*` وإعدادات الموافقات
الافتراضية: لا يمكن للموافقات إلا تشديد الأمان/الاستئذان المستمد من الإعداد، ولا
يمكنها تخفيفه مطلقًا. إذا أُغفل حقل من حقول الموافقات، تُستخدم قيمة `tools.exec`.
يستخدم تنفيذ المضيف أيضًا حالة الموافقات المحلية على ذلك الجهاز؛ إذ يستمر
`ask: "always"` المحلي للمضيف في ملف موافقات مضيف التنفيذ في طلب الموافقة حتى إذا
طلبت الإعدادات الافتراضية للجلسة أو الإعداد `ask: "on-miss"`.
</Note>

## نطاق التطبيق

تُفرض موافقات التنفيذ محليًا على مضيف التنفيذ:

- **مضيف Gateway** -> عملية `openclaw` على جهاز Gateway.
- **مضيف Node** -> مشغّل Node (التطبيق المرافق لنظام macOS أو مضيف Node دون واجهة رسومية).

### نموذج الثقة

- يُعد المتصلون المصادق عليهم عبر Gateway مشغّلين موثوقين لذلك الـ Gateway.
- توسّع عُقد Node المقترنة قدرة المشغّل الموثوق هذه إلى مضيف Node.
- تقلل الموافقات مخاطر التنفيذ العرضي، لكنها **ليست** حدًا للمصادقة لكل مستخدم ولا سياسة للقراءة فقط من نظام الملفات.
- بعد الموافقة، يمكن للأمر تعديل الملفات وفق أذونات نظام ملفات المضيف أو البيئة المعزولة المحددة.
- تربط عمليات مضيف Node الموافق عليها سياق التنفيذ القياسي: دليل العمل الحالي، ووسائط `argv` الدقيقة، وربط البيئة عند وجوده، ومسار الملف التنفيذي المثبّت عند انطباقه.
- بالنسبة إلى نصوص الصدفة البرمجية والاستدعاءات المباشرة لملفات المفسّر/بيئة التشغيل، يحاول OpenClaw أيضًا ربط مُعامل واحد لملف محلي محدد. إذا تغيّر ذلك الملف بعد الموافقة وقبل التنفيذ، تُرفض العملية بدلًا من تنفيذ محتوى متغير.
- ربط الملفات هو إجراء بأفضل جهد ممكن، وليس نموذجًا شاملًا لكل مسار تحميل خاص بالمفسّرات/بيئات التشغيل. إذا تعذّر تحديد ملف محلي محدد واحد بالضبط، يرفض OpenClaw إنشاء عملية مدعومة بالموافقة بدلًا من الادعاء بتغطية كاملة.

### الفصل في macOS

- تعيد **خدمة مضيف Node** توجيه `system.run` إلى **تطبيق macOS** عبر IPC محلي.
- يفرض **تطبيق macOS** الموافقات وينفّذ الأمر ضمن سياق واجهة المستخدم.

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

| الأمر                                                             | ما يعرضه                                                                                |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `openclaw approvals get` / `--gateway` / `--node <id\|name\|ip>` | السياسة المطلوبة، ومصادر سياسة المضيف، والنتيجة الفعلية.                               |
| `openclaw exec-policy show`                                      | العرض المدمج للجهاز المحلي.                                                             |
| `openclaw exec-policy set` / `preset`                            | مزامنة السياسة المحلية المطلوبة مع ملف موافقات المضيف المحلي في خطوة واحدة.            |

<Note>
لا تُضمَّن تجاوزات `/exec` الخاصة بكل جلسة. شغّل `/exec` في الجلسة المعنية لفحص إعداداتها الافتراضية الحالية. راجع [تجاوزات الجلسة](/ar/tools/exec#session-overrides-exec).
</Note>

مرجع CLI الكامل (العلامات، ومخرجات JSON، والإضافة إلى قائمة السماح/الإزالة منها): [CLI للموافقات](/ar/cli/approvals).

عندما يطلب نطاق محلي `host=node`، يفيد `exec-policy show` بأن ذلك النطاق
تديره Node في وقت التشغيل بدلًا من اعتبار ملف الموافقات المحلي مصدر الحقيقة.

إذا كانت واجهة مستخدم التطبيق المرافق **غير متاحة**، فسيُحسم أي طلب كان سيعرض
مطالبة عادةً وفق **الإجراء الاحتياطي للاستئذان** (الافتراضي: `deny`).

<Tip>
يمكن لعملاء موافقات الدردشة الأصليين تهيئة وسائل تفاعل خاصة بالقناة في رسالة
الموافقة المعلّقة. تهيئ Matrix اختصارات التفاعل (`✅` السماح مرة واحدة،
`♾️` السماح دائمًا، `❌` الرفض)، مع إبقاء `/approve ...` في الرسالة
كخيار احتياطي.
</Tip>

## الإعدادات والتخزين

توجد الموافقات في ملف JSON محلي على مضيف التنفيذ. عند تعيين
`OPENCLAW_STATE_DIR`، يتبع الملف دليل الحالة ذاك؛ وإلا فإنه يستخدم دليل
حالة OpenClaw الافتراضي:

```text
$OPENCLAW_STATE_DIR/exec-approvals.json
# otherwise
~/.openclaw/exec-approvals.json
```

يتبع مقبس الموافقات الافتراضي الجذر نفسه:
`$OPENCLAW_STATE_DIR/exec-approvals.sock`، أو
`~/.openclaw/exec-approvals.sock` عندما لا يكون المتغير معيّنًا.

كانت الإصدارات السابقة لـ 2026.6.6 تحفظ الملف دائمًا في `~/.openclaw`. إذا كان
`OPENCLAW_STATE_DIR` يشير إلى مكان آخر وما زال ملف موافقات موجودًا في
الدليل الافتراضي، فشغّل `openclaw doctor --fix` مباشرة مرة واحدة لاستيراده
إلى دليل الحالة (تُؤرشف النسخة الأصلية بلاحقة `.migrated`).
يمكن أيضًا لأداة الفحص التفاعلية معاينة الاستيراد وتأكيده. لا تستورد عمليات
التحديث المؤتمتة وإصلاح مراقبة Gateway عبر أدلة الحالة مطلقًا: يجب ألا يستحوذ
دليل حالة مؤقت أو تجهيزي على موافقات التثبيت الافتراضي. ينطبق الحد نفسه على
استيراد ملفات `plugin-binding-approvals.json` القديمة إلى حالة SQLite المشتركة.

مثال على المخطط:

```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",
          "lastUsedAt": 1737150000000,
          "lastUsedCommand": "rg -n TODO",
          "lastResolvedPath": "/Users/user/Projects/.../bin/rg"
        }
      ]
    }
  }
}
```

## عناصر التحكم في السياسة

### `tools.exec.mode`

يمثل `tools.exec.mode` سطح السياسة الموحّد المفضّل لتنفيذ المضيف:

| القيمة      | السلوك                                                                                                                                                                                                 |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `deny`      | حظر تنفيذ المضيف.                                                                                                                                                                                       |
| `allowlist` | تشغيل الأوامر المدرجة في قائمة السماح فقط دون استئذان.                                                                                                                                                  |
| `ask`       | استخدام سياسة قائمة السماح والاستئذان عند عدم التطابق.                                                                                                                                                 |
| `auto`      | استخدام سياسة قائمة السماح، وتشغيل التطابقات الحتمية مباشرة، وإرسال حالات عدم تطابق الموافقة إلى المراجع التلقائي الأصلي في OpenClaw قبل الرجوع إلى مسار موافقة بشرية.                                   |
| `full`      | تشغيل تنفيذ المضيف دون مطالبات موافقة.                                                                                                                                                                 |

يظل `tools.exec.security` / `tools.exec.ask` القديمان مدعومين ويستمران في
التطبيق حيثما لا يكون `mode` معيّنًا في ذلك النطاق.

### `exec.security`

<ParamField path="security" type='"deny" | "allowlist" | "full"'>
  - `deny` - حظر جميع طلبات تنفيذ المضيف.
  - `allowlist` - السماح فقط بالأوامر المدرجة في قائمة السماح.
  - `full` - السماح بكل شيء (يكافئ الصلاحيات المرتفعة).

القيمة الافتراضية هي `full` لمضيفي Gateway/Node؛ أما مضيف `sandbox` فتكون
قيمته الافتراضية `deny`.
</ParamField>

### `exec.ask`

<ParamField path="ask" type='"off" | "on-miss" | "always"'>
  سياسة الاستئذان المضبوطة لتنفيذ المضيف. تتحكم في السلوك الأساسي لمطالبة
  الموافقة المستمد من `tools.exec.ask` وإعدادات موافقات المضيف الافتراضية.
  القيمة الافتراضية هي `off`. لا يمكن لمعامل الأداة `ask` الخاص بكل استدعاء
  (راجع [أداة التنفيذ](/ar/tools/exec#parameters)) إلا تشديد ذلك الأساس، وتتجاهله
  استدعاءات النموذج الناشئة من القنوات عندما تكون قيمة استئذان المضيف الفعلية `off`.

- `off` - عدم عرض مطالبة مطلقًا.
- `on-miss` - عرض مطالبة فقط عندما لا تتطابق قائمة السماح.
- `always` - عرض مطالبة عند كل أمر. لا تمنع الثقة الدائمة `allow-always` المطالبات عندما يكون وضع الاستئذان الفعلي `always`.

</ParamField>

### `askFallback`

<ParamField path="askFallback" type='"deny" | "allowlist" | "full"'>
  الإجراء المتخذ عندما تكون المطالبة مطلوبة ولكن لا يمكن الوصول إلى واجهة
  مستخدم (أو تنتهي مهلة المطالبة). القيمة الافتراضية عند الإغفال هي `deny`.

- `deny` - الحظر.
- `allowlist` - السماح فقط إذا تطابقت قائمة السماح.
- `full` - السماح.

</ParamField>

### `tools.exec.strictInlineEval`

<ParamField path="strictInlineEval" type="boolean">
  عندما تكون القيمة `true`، تُعامل صيغ تقييم الشيفرة المضمّنة على أنها تتطلب
  موافقة حتى إذا كان الملف الثنائي للمفسّر نفسه مدرجًا في قائمة السماح. وهذا
  دفاع متعدد الطبقات لمحمّلات المفسّرات التي لا يمكن تعيينها بوضوح إلى مُعامل
  ملف ثابت واحد.
</ParamField>

أمثلة يلتقطها الوضع الصارم: `python -c`، و`node -e`/`--eval`/`-p`،
و`ruby -e`، و`perl -e`/`-E`، و`php -r`، و`lua -e`، و`osascript -e`
(وكذلك الصيغ المضمّنة في `awk` و`sed` و`make` و`find -exec` و`xargs`).

في الوضع الصارم، تحتاج هذه الأوامر إلى موافقة المراجع أو موافقة صريحة. مع
`tools.exec.mode: "auto"`، قد يمنح المراجع تنفيذًا واحدًا منخفض المخاطر عندما
يكون للأمر مخطط قابل للإنفاذ؛ وإلا يطلب OpenClaw موافقة بشرية.
تطلب موافقات أوامر `Codex app-server` التي تصل إلى الإجراء الاحتياطي للمراجع
موافقة بشرية لأن طلبات الموافقة الخاصة بها لا تكشف ملفًا تنفيذيًا محلولًا
وقابلًا للإنفاذ.
لا ينشئ `allow-always` إدخالات جديدة دائمة في قائمة السماح لأوامر التقييم المضمّن.

### `tools.exec.commandHighlighting`

<ParamField path="commandHighlighting" type="boolean" default="false">
  للعرض فقط: عند التمكين، قد يرفق OpenClaw نطاقات أوامر مشتقة من المحلّل لكي
  تتمكن مطالبات الموافقة على الويب من تمييز رموز الأوامر. **لا** يغيّر ذلك
  `security` أو `ask` أو مطابقة قائمة السماح أو سلوك التقييم المضمّن الصارم
  أو إعادة توجيه الموافقة أو تنفيذ الأوامر.
</ParamField>

عيّنه عموميًا ضمن `tools.exec.commandHighlighting` أو لكل وكيل ضمن
`agents.list[].tools.exec.commandHighlighting`.

## وضع YOLO (دون موافقة)

لتشغيل تنفيذ المضيف دون مطالبات موافقة، افتح **كلتا** طبقتي السياسة:
سياسة التنفيذ المطلوبة في إعداد OpenClaw (`tools.exec.*`) **و**
سياسة الموافقات المحلية للمضيف في ملف موافقات مضيف التنفيذ.

القيمة الافتراضية لـ `askFallback` عند إغفالها هي `deny`. عيّن
`askFallback` للمضيف إلى `full` صراحةً عندما ينبغي أن يؤدي تعذر عرض مطالبة
الموافقة في واجهة المستخدم إلى السماح.

| الطبقة                | إعداد YOLO                  |
| --------------------- | --------------------------- |
| `tools.exec.security` | `full` على `gateway`/`node` |
| `tools.exec.ask`      | `off`                       |
| `askFallback` للمضيف  | `full`                      |

<Warning>
**فروق مهمة:**

- يختار `tools.exec.host=auto` **مكان** تشغيل التنفيذ: البيئة المعزولة عند توفرها، وإلا Gateway.
- يختار YOLO **كيفية** الموافقة على تنفيذ المضيف: `security=full` مع `ask=off`.
- لا يضيف YOLO بوابة موافقة استدلالية منفصلة لتمويه الأوامر أو طبقة رفض للفحص المسبق للنصوص البرمجية فوق سياسة تنفيذ المضيف المضبوطة.
- لا يجعل `auto` توجيه Gateway تجاوزًا متاحًا بلا قيود من جلسة معزولة. يُسمح بطلب `host=node` لكل استدعاء من `auto`؛ ولا يُسمح بـ `host=gateway` من `auto` إلا عند عدم وجود بيئة تشغيل معزولة نشطة. للحصول على إعداد افتراضي ثابت غير تلقائي، عيّن `tools.exec.host` أو استخدم `/exec host=...` صراحةً.

</Warning>

يمكن لموفّري الخدمات المدعومين بـ CLI، الذين يوفّرون وضع أذونات غير تفاعلي خاصًا بهم، اتباع هذه السياسة. يضيف Claude CLI الخيار
`--permission-mode bypassPermissions` عندما تكون سياسة التنفيذ الفعلية في OpenClaw هي YOLO. بالنسبة إلى جلسات Claude المباشرة التي يديرها OpenClaw، تكون سياسة التنفيذ الفعلية في OpenClaw هي المرجع الحاسم بدلًا من وضع الأذونات الأصلي في Claude:
تُوحِّد YOLO عمليات التشغيل المباشر إلى `--permission-mode bypassPermissions`، بينما تُوحِّد سياسة التنفيذ الفعلية المقيِّدة عمليات التشغيل المباشر إلى
`--permission-mode default`، حتى إذا حدّدت وسيطات الواجهة الخلفية الخام لـ Claude وضعًا آخر.

إذا أردت إعدادًا أكثر تحفظًا، فشدّد سياسة التنفيذ في OpenClaw مجددًا إلى
`allowlist` / `on-miss` أو `deny`.

### إعداد دائم «دون مطالبة مطلقًا» على مضيف Gateway

<Steps>
  <Step title="عيّن سياسة الإعداد المطلوبة">
    ```bash
    openclaw config set tools.exec.host gateway
    openclaw config set tools.exec.security full
    openclaw config set tools.exec.ask off
    openclaw gateway restart
    ```
  </Step>
  <Step title="طابِق ملف موافقات المضيف">
    ```bash
    openclaw approvals set --stdin <<'EOF'
    {
      version: 1,
      defaults: {
        security: "full",
        ask: "off",
        askFallback: "full"
      }
    }
    EOF
    ```
  </Step>
</Steps>

### اختصار محلي

```bash
openclaw exec-policy preset yolo
```

يحدّث كلًا من `tools.exec.host/security/ask` المحلي والقيم الافتراضية لملف الموافقات المحلي (بما فيها `askFallback: "full"`). وقد صُمّم عمدًا للعمل محليًا فقط. لتغيير موافقات مضيف Gateway أو مضيف Node عن بُعد، استخدم
`openclaw approvals set --gateway` أو `openclaw approvals set --node
<id|name|ip>`.

الإعدادات المسبقة المضمّنة الأخرى: `cautious` (`host=gateway`، و`security=allowlist`،
و`ask=on-miss`، و`askFallback=deny`) و`deny-all` (`host=gateway`،
و`security=deny`، و`ask=off`، و`askFallback=deny`). طبّقها بالطريقة نفسها:
`openclaw exec-policy preset cautious`.

لتعيين حقول منفردة بدلًا من إعداد مسبق كامل، استخدم
`openclaw exec-policy set --host <auto|sandbox|gateway|node> --security
<deny|allowlist|full> --ask <off|on-miss|always> --ask-fallback
<deny|allowlist|full>` مع أي مجموعة فرعية من هذه العلامات.

### مضيف Node

طبّق ملف الموافقات نفسه على Node بدلًا من ذلك:

```bash
openclaw approvals set --node <id|name|ip> --stdin <<'EOF'
{
  version: 1,
  defaults: {
    security: "full",
    ask: "off",
    askFallback: "full"
  }
}
EOF
```

<Note>
**قيود العمل المحلي فقط:**

- لا يزامن `openclaw exec-policy` موافقات Node.
- يُرفض `openclaw exec-policy set --host node`.
- تُجلب موافقات التنفيذ في Node من Node في وقت التشغيل، لذا يجب أن تستخدم التحديثات الموجّهة إلى Node الأمر `openclaw approvals --node ...`.

</Note>

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

- يغيّر `/exec security=full ask=off` الجلسة الحالية فقط.
- يمثّل `/elevated full` اختصارًا للطوارئ يتجاوز موافقات التنفيذ فقط
  عندما تُحلّ كل من السياسة المطلوبة وملف موافقات المضيف إلى
  `security: "full"` و`ask: "off"`. ويظل ملف المضيف الأكثر تقييدًا، مثل `ask:
"always"`، يطلب الموافقة.

إذا ظل ملف موافقات المضيف أكثر تقييدًا من الإعداد، فستظل سياسة المضيف الأكثر تقييدًا هي السائدة.

## قائمة السماح (لكل وكيل)

قوائم السماح **خاصة بكل وكيل**. إذا وُجد عدة وكلاء، فبدّل الوكيل الذي تعدّله في تطبيق 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 دلالات التعبيرات النمطية في ECMAScript (JavaScript) على كل مضيف، ويقيّم التعبير مقابل وسيطات الأمر المحللة، مع استبعاد رمز الملف التنفيذي (`argv[0]`).
بالنسبة إلى الإدخالات المكتوبة يدويًا، تُربط الوسيطات بمسافة واحدة، لذا ثبّت النمط عند الحاجة إلى مطابقة تامة.

```json
{
  "version": 1,
  "agents": {
    "main": {
      "allowlist": [
        {
          "pattern": "python3",
          "argPattern": "^safe\\.py$"
        }
      ]
    }
  }
}
```

يسمح هذا الإدخال بـ `python3 safe.py`؛ أما `python3 other.py` فلا يطابق قائمة السماح. إذا وُجد أيضًا إدخال يعتمد على المسار فقط للملف التنفيذي نفسه، فلا يزال بإمكان الوسيطات غير المطابقة الرجوع إلى ذلك الإدخال المعتمد على المسار فقط. احذف الإدخال المعتمد على المسار فقط عندما يكون الهدف هو تقييد الملف التنفيذي بالوسيطات المعلنة.

تستخدم الإدخالات المحفوظة بواسطة تدفقات الموافقة تنسيق فاصل داخليًا لمطابقة `argv` مطابقة تامة. يُفضّل استخدام واجهة المستخدم أو تدفق الموافقة لإعادة إنشاء هذه الإدخالات بدلًا من تحرير القيمة المرمّزة يدويًا. إذا تعذّر على OpenClaw تحليل `argv` لمقطع أمر، فلن تتطابق الإدخالات التي تحتوي على `argPattern`.

يدعم كل إدخال في قائمة السماح ما يلي:

| الحقل              | المعنى                                              |
| ------------------ | ---------------------------------------------------- |
| `pattern`          | نمط glob لمسار الملف التنفيذي المحلول أو لاسم الأمر المجرّد  |
| `argPattern`       | تعبير نمطي اختياري لـ `argv` وفق ECMAScript؛ حذفه يعني الاعتماد على المسار فقط |
| `id`               | معرّف معتم ثابت؛ يُنشأ على هيئة UUID عند غيابه    |
| `source`           | مصدر الإدخال، مثل `allow-always`                 |
| `commandText`      | إدخال نص عادي قديم؛ يُتخلّص منه أثناء التحميل        |
| `lastUsedAt`       | الطابع الزمني لآخر استخدام                                  |
| `lastUsedCommand`  | آخر أمر تمت مطابقته                            |
| `lastResolvedPath` | آخر مسار محلول للملف التنفيذي                            |

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

عند تفعيل **السماح التلقائي بواجهات CLI الخاصة بـ Skills** (`autoAllowSkills`)، تُعامل الملفات التنفيذية المشار إليها بواسطة Skills المعروفة كعناصر مسموح بها في Nodes (Node الخاصة بـ macOS أو مضيف Node دون واجهة). يستخدم ذلك `skills.bins` عبر استدعاء RPC في Gateway لجلب قائمة الملفات التنفيذية الخاصة بـ Skills. عطّل هذا الخيار إذا كنت تريد قوائم سماح يدوية صارمة.

<Warning>
- هذه **قائمة سماح ضمنية للتيسير**، منفصلة عن إدخالات قائمة السماح اليدوية للمسارات.
- وهي مخصصة لبيئات المشغّلين الموثوقة التي يكون فيها Gateway وNode ضمن نطاق الثقة نفسه.
- إذا كنت تتطلب ثقة صريحة صارمة، فأبقِ `autoAllowSkills: false` واستخدم إدخالات قائمة السماح اليدوية للمسارات فقط.

</Warning>

## الملفات التنفيذية الآمنة وإعادة توجيه الموافقات

للحصول على تفاصيل الملفات التنفيذية الآمنة (المسار السريع المعتمد على stdin فقط)، وربط المفسّر، وكيفية إعادة توجيه مطالبات الموافقة إلى Slack/Discord/Telegram (أو تشغيلها كعملاء موافقة أصليين)، راجع
[موافقات التنفيذ - متقدم](/ar/tools/exec-approvals-advanced).

## التحرير عبر واجهة التحكم

استخدم بطاقة **Control UI -> Nodes -> Exec approvals** لتحرير القيم الافتراضية، والتجاوزات الخاصة بكل وكيل، وقوائم السماح. اختر نطاقًا (Defaults أو وكيلًا)، وعدّل السياسة، وأضف أنماط قائمة السماح أو أزلها، ثم اختر **Save**. تعرض واجهة المستخدم بيانات وصفية لآخر استخدام لكل نمط كي تتمكن من إبقاء القائمة مرتبة.

يختار محدد الهدف **Gateway** (الموافقات المحلية) أو **Node**.
يجب أن تعلن Nodes دعم `system.execApprovals.get/set` (تطبيق macOS أو مضيف Node دون واجهة). إذا لم تعلن Node دعم موافقات التنفيذ بعد، فحرّر ملف الموافقات المحلي الخاص بها مباشرةً.

تمتلك بعض مضيفات Node، ومنها تطبيق Windows المرافق، تنسيقًا مختلفًا لسياسة الموافقات. تعرض واجهة التحكم هذه السياسات الأصلية للمضيف للقراءة فقط. استخدم التطبيق المرافق أو `openclaw approvals set --node <id|name|ip>` مع شكل السياسة الأصلي لتحريرها؛ راجع [CLI للموافقات](/ar/cli/approvals).

CLI: يدعم `openclaw approvals` تحرير Gateway أو Node؛ راجع
[CLI للموافقات](/ar/cli/approvals).

## تدفق الموافقة

عندما تكون المطالبة مطلوبة، يبث Gateway الحدث
`exec.approval.requested` إلى عملاء المشغّلين. تحلّه واجهة التحكم وتطبيق macOS عبر `exec.approval.resolve`، ثم يعيد Gateway توجيه الطلب المعتمد إلى مضيف Node.

بالنسبة إلى `host=node`، تتضمن طلبات الموافقة حمولة `systemRunPlan` معيارية. يستخدم Gateway هذه الخطة بوصفها السياق المرجعي للأمر/`cwd`/الجلسة عند إعادة توجيه طلبات `system.run` المعتمدة:

- يُعدّ مسار التنفيذ في Node خطة معيارية واحدة مسبقًا.
- يخزّن سجل الموافقة تلك الخطة وبيانات الربط الوصفية الخاصة بها.
- بعد الموافقة، يعيد استدعاء `system.run` النهائي المُعاد توجيهه استخدام الخطة المخزنة بدلًا من الوثوق بتعديلات لاحقة من المستدعي.
- إذا غيّر المستدعي `command` أو `rawCommand` أو `cwd` أو `agentId` أو `sessionKey` بعد إنشاء طلب الموافقة، يرفض Gateway التشغيل المُعاد توجيهه بسبب عدم تطابق الموافقة.

## أحداث النظام وحالات الرفض

تنشر دورة حياة التنفيذ رسالة نظام `Exec finished` إلى جلسة الوكيل بعد أن تبلغ Node عن الاكتمال. ويمكن لـ OpenClaw أيضًا إصدار إشعار بأن التنفيذ جارٍ بمجرد منح الموافقة، بعد انقضاء
`tools.exec.approvalRunningNoticeMs` (القيمة الافتراضية `10000`، وتؤدي `0` إلى تعطيله). تُعد موافقات التنفيذ المرفوضة نهائية لأمر المضيف: فلا يُشغّل الأمر.

- بالنسبة إلى الموافقات غير المتزامنة للوكيل الرئيسي التي لها جلسة منشأ، ينشر OpenClaw
  الرفض مجددًا داخل تلك الجلسة كمتابعة داخلية، كي يتمكن الوكيل من التوقف عن انتظار الأمر غير المتزامن وتجنب إصلاح نتيجة مفقودة.
- إذا لم توجد جلسة أو تعذّر استئنافها، فلا يزال بإمكان OpenClaw
  إبلاغ المشغّل أو مسار الدردشة المباشر برفض موجز.
- لا تُنشر حالات الرفض الخاصة بجلسات الوكلاء الفرعيين وCron مجددًا داخل تلك الجلسة.

تصدر موافقات تنفيذ مضيف Gateway حدث دورة حياة الاكتمال نفسه.
تعيد عمليات التنفيذ الخاضعة للموافقة استخدام معرّف الموافقة لربط الطلب المعلّق برسالة اكتماله/رفضه (`Exec finished (gateway
id=...)` / `Exec denied (gateway id=...)`).

## الآثار المترتبة

- يُعد **`full`** قويًا؛ فضّل قوائم السماح متى أمكن.
- يبقيك **`ask`** على اطلاع مع السماح بالموافقات السريعة.
- تمنع قوائم السماح الخاصة بكل وكيل تسرّب موافقات وكيل إلى غيره.
- لا تنطبق الموافقات إلا على طلبات تنفيذ المضيف الواردة من **مرسلين مخوّلين**. لا يمكن للمرسلين غير المخوّلين إصدار `/exec`.
- يُعد `/exec security=full` وسيلة تيسير على مستوى الجلسة للمشغّلين المخوّلين، ويتجاوز الموافقات حسب التصميم. لحظر تنفيذ المضيف حظرًا صارمًا، عيّن أمان الموافقات إلى `deny` أو ارفض أداة `exec` عبر سياسة الأدوات.

## ذو صلة

<CardGroup cols={2}>
  <Card title="موافقات التنفيذ - متقدم" href="/ar/tools/exec-approvals-advanced" icon="gear">
    الملفات التنفيذية الآمنة، وربط المفسّر، وإعادة توجيه الموافقات إلى الدردشة.
  </Card>
  <Card title="أداة التنفيذ" href="/ar/tools/exec" icon="terminal">
    أداة تنفيذ أوامر الصدفة.
  </Card>
  <Card title="الوضع المرتفع" href="/ar/tools/elevated" icon="shield-exclamation">
    مسار طوارئ يتجاوز الموافقات أيضًا.
  </Card>
  <Card title="العزل" href="/ar/gateway/sandboxing" icon="box">
    أوضاع العزل والوصول إلى مساحة العمل.
  </Card>
  <Card title="الأمان" href="/ar/gateway/security" icon="lock">
    نموذج الأمان والتقوية.
  </Card>
  <Card title="العزل مقابل سياسة الأدوات مقابل الوضع المرتفع" href="/ar/gateway/sandbox-vs-tool-policy-vs-elevated" icon="sliders">
    متى تستخدم كل عنصر تحكم.
  </Card>
  <Card title="Skills" href="/ar/tools/skills" icon="sparkles">
    سلوك السماح التلقائي المدعوم بـ Skills.
  </Card>
</CardGroup>
