الانتقال إلى المحتوى الرئيسي
إدراج أداة في قائمة السماح يجيب عن أي أداة يجوز لوكيل استدعاؤها. لا يمكنه الإجابة عن بأي وسائط. shell.exec جيد لـ ls؛ وهو كارثة لـ rm -rf /. db.query جيد مقابل نسخة طبق الأصل؛ ومقابل prod هو مسؤولية. الفرق يعيش في الوسائط، وقاعدة اسم أداة لا يمكنها رؤيته. عبارات الوسائط في جدار الحماية (args_match_json) تسد تلك الثغرة. تفحص الوسائط الملموسة التي اختارها النموذج لاستدعاء أداة وتقرر الحكم من قيمها — فيمكنك السماح بأداة على نطاق واسع بينما ترفض الشكل الخطر الوحيد الذي يمكن أن تتخذه. هذه الصفحة هي الدليل المركّز لتأليف تلك العبارات؛ لمفردات القواعد الكاملة انظر قواعد جدار الحماية، ولنموذج السياسة حولها، جدار الحماية.
قيم الوسائط لا توجد إلا بعد أن يختار النموذج كيف يستدعي أداة، فعبارات الوسائط تنتمي إلى مرحلتي response وmcp . على inbound — حيث يعلن الوكيل فقط عن تعريفات الأدوات — لا توجد وسائط استدعاء لفحصها.

1. متى تتحقق من وسائط استدعاء الأداة

الجأ إلى عبارة وسائط كلما كانت أداة آمنة عموماً لكن خطرة في شكل محدد:

الأوامر المدمّرة

اسمح بـ shell.exec، لكن ارفض عندما يطابق الأمر rm -rf أو mkfs أو dd if=.

نصف قطر انفجار الإنتاج

اسمح بـ db.query، لكن ارفض (أو علّق للموافقة) عندما يكون هدف الاتصال prod.

الوجهات الداخلية

اسمح بأداة جلب، لكن ارفض عندما تقع وسيطة url/ip داخل نطاق RFC-1918 أو IP بيانات تعريف السحابة.

العمليات المفرطة الحجم

اسمح بأداة دفعية، لكن ارفض عندما تتجاوز وسيطة limit أو count سقفاً رقمياً.
لا تزال القاعدة تطابق على اسم الأداة أولاً؛ تضيّق العبارات من أي أداة إلى أي استدعاء.

2. شكل مجموعة عبارات

args_match_json هي سلسلة مرمّزة بصيغة JSON قيمتها المفكوكة كائن يحمل قائمة clauses. كل عبارة ثلاثية { path, op, value }، وكل العبارات تُدمج بـ AND — تُطلق القاعدة فقط عندما تكون كل عبارة صحيحة. مفكوكة، تبدو القيمة:
{
  "clauses": [
    { "path": "$.command",    "op": "regex",      "value": "rm -rf|drop table" },
    { "path": "$.connection", "op": "in",         "value": ["prod", "replica"] },
    { "path": "$.ip",         "op": "cidr_match", "value": "10.0.0.0/8" }
  ]
}
في جسم قاعدة يحمل الحقل ذلك الـ JSON كسلسلة واحدة مهرَّبة — مثل "args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}". args_match_json فارغة أو غائبة هي صحيحة فراغياً — تطابق القاعدة على glob اسم أداتها وحده، تماماً كما تفعل قاعدة بالاسم فقط.

3. العوامل

سبعة عوامل تشكّل المفردات المغلقة. تتحقق وحدة التحكم من العامل وشكل قيمته عند الحفظ، فلا تبقى أبداً عبارة مشوّهة.
العامليطابق عندما
eqمساواة قياسية (الأرقام تُقارَن رقمياً؛ عدم تطابق النوع لا مطابقة).
containsسلسلة فرعية — يجب أن يكون كلا المعاملين سلاسل.
regexنمط Go RE2 يطابق قيمة السلسلة (زمن خطّي، لا مراجع خلفية).
inالقيمة عنصر من مصفوفة JSON المعطاة.
cidr_matchIP السلسلة يقع داخل CIDR المعطى.
gt / ltأكبر-من / أصغر-من رقمي (السلاسل لا تُقسَر).

4. صيغة المسار

path للعبارة هو مجموعة فرعية صغيرة من JSONPath على كائن وسائط الأداة:
اقرأ حقل كائن من المستوى الأعلى أو متداخل بالاسم.
فهرِس داخل مصفوفة، واختيارياً تابع إلى حقول العنصر.
طابق مقابل كتلة الوسائط كاملةً (مفيد مع contains أو regex لفحص خشن).
لا توجد أحرف بدل أو فلاتر أو شرائح أو نزول تكراري — القواعد صغيرة عمداً فتبقى المطابقة خطّية الزمن وقابلة للتنبّؤ على المسار الساخن.

5. مثال معالَج

تدع وكلاءك يشغّلون shell.exec بحرية، لكن حذفاً قسرياً تكرارياً يجب ألّا يصل أبداً إلى الـ shell. ألّف قاعدة واحدة على مرحلة response ترفض shell.exec فقط عندما تبدو وسيطة الأمر مدمّرة.
1

افتح محرر القواعد

في وحدة التحكم، افتح سياسة جدار الحماية المرتبطة بمفتاح وكيلك (أو افتراضي مساحة العمل) وأضف قاعدة. تحرير السياسات إجراء Developer+ — يمكن لأعضاء Member قراءة السياسات لكن ليس كتابتها.
2

طابق الأداة على مرحلة response

اضبط المرحلة على response وglob الأداة على shell.exec. مرحلة response تحمل الوسائط التي اختارها النموذج، التي تحتاجها العبارة.
3

أضف عبارة الوسائط

أضف عبارة regex واحدة على $.command، ثم اضبط الحكم على deny:
{
  "stage": "response",
  "tool_name_glob": "shell.exec",
  "verdict": "deny",
  "args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm\\\\s+-rf|mkfs|dd\\\\s+if=\"}]}"
}
args_match_json سلسلة مرمّزة بصيغة JSON؛ قيمتها المفكوكة هي كائن { "clauses": [ … ] } المعروض في §2.
4

أجرها تجريبياً قبل أن تعتمد عليها

استخدم تبويب Test لتقييم القاعدة مقابل استدعاء shell.exec عينة. يعيد الحكم، والقاعدة المطابقة، والسبب — لا شيء يُرسَل ولا شيء يُحفظ.
الآن shell.exec بـ "command": "ls -la" يتدفّق كما من قبل، بينما "command": "rm -rf /var" يُرفض. deny على response يدع النموذج يرى خطأ أداة ويتفاعل — اختيار أداة أخرى، أو سؤال المستخدم، أو التوقف — بدلاً من الانهيار.
تريد السماح بالاستدعاء لكن تجريد قيمة مسرّبة بدلاً من الحجب؟ بدّل الحكم إلى sanitize. sanitize لا ينقّح ما طابقته العبارة — بل يجري مُنقّحاً منفصلاً (إعدادات مسبقة مسمّاة مثل openai_key وanthropic_key وssn_us، بالإضافة إلى regex مخصص خاص بك) على سلاسل الوسائط، يستبدل كل إصابة برمز [redacted:…]، ويعيد توجيه الاستدعاء المنظَّف. عبارة args_match_json لا تزال تقرر ما إذا كانت القاعدة تُطلق؛ والمُطهّر يقرر ما الذي يُفرَك. انظر تطهير الوسائط. sanitize ينقّح وسائط استدعاء الأداة فقط — وليس أبداً المحتوى الذي تعيده أداة.

6. العبارات تفشل مغلقةً — القاعدة، وليس الطلب

إذا تعذّر تقييم عبارة — لم يُحَل المسار، أو الوسائط مشوّهة، أو regex / CIDR غير صالح — تُقيَّم العبارة إلى خطأ والقاعدة ببساطة لا تُطلق. يسقط الاستدعاء إلى القاعدة التالية أو default_verdict للسياسة. عبارة معطوبة لا ترفض تلقائياً أبداً ولا تزعج الترحيل.
لأن عبارة لا يمكن تقييمها تجعل قاعدتها لا تطابق، لا تعتمد أبداً على عبارة لتفشل بطريقة معيّنة. ألّف قاعدة “اصطد كل خطر” كـ deny صريح بـ glob أداة خاص به، واستخدم عبارات الوسائط لـ تضييق تصريح — وليس كخط دفاعك الأخير.

7. دمج العبارات مع بقية قاعدة

تتراكم عبارات الوسائط مع كل ما تعبّر عنه قاعدة — إنها شرط واحد مدموج بـ AND بين عدة:
ادمج معالأثر
tool_name_globتعمل العبارة فقط بعد أن يطابق اسم الأداة — الاسم أولاً، الوسائط ثانياً.
skill_name_globاحكم وسائط نفس الأداة بشكل مختلف حسب المهارة المالكة (مثل أصرم على community.*).
verdictاقرن العبارات بـ deny أو sanitize أو pending_approval أو cap_cost، وليس deny فقط.
عبارات متعددةيجب أن تصحّ كلها — ادمج فحص أمر regex مع فحص بيئة in لقصر deny بإحكام.
لدلالات الحكم الدقيقة التي ينتجها كل اقتران، انظر الأحكام؛ ولكيفية حل استدعاء مُعلَّق، انظر الموافقات.

8. أين يقع هذا

قواعد جدار الحماية

مرجع القاعدة الكامل — globs، العبارات، المُطهّرات، egress، والتسلسلات.

كتاب طبخ الوسائط

وصفات args_match_json للنسخ واللصق للأشكال الخطرة الشائعة.

مراحل جدار الحماية

لماذا تعيش عبارات الوسائط على response وmcp، وليس inbound.

حجب الأدوات

ارفض أداة صراحةً عندما لا تكون أي وسيطة آمنة.
للصورة الأوسع، انظر استدعاءات الأدوات الخطرة و كيف يفحص OrcaRouter.