يفصل ACS بين دورين. Observed Agent هو نظام الذكاء الاصطناعي الخاضع للمراقبة: يبلّغ عن كل خطوة ذات صلة عبر Hook وينفّذ الاستجابة، لكنه لا يقرر بشأن إجراءاته. وGuardian Agent هو جهة السياسة: يقيّم كل Hook مقابل سياسة النشر ويرد بقرار (Disposition). وفي حالة ask ينضم معتمِد — إنسان أو وكيل أو خدمة، يجب على Guardian التحقق من هويته. والحاسم معماريًا: يجب ألا يعرف النموذج نفسه شيئًا عن الخطافات؛ فالتحكم يقع خارج مسار مخرجاته.
معيار OWASP Agent Control Standard (ACS): التحكم في وكلاء الذكاء الاصطناعي وقت التشغيل
إن OWASP Agent Control Standard (ACS) مواصفة مفتوحة يفحص بموجبها وكيلُ حراسة (Guardian Agent) إجراءاتِ وكيل ذكاء اصطناعي عند نقاط ربط (Hooks) محددة، ويسمح بها أو يحظرها أو يعدّلها أو يعرضها للموافقة أو يؤجّلها وفق سياسة. تبيّن هذه الدراسة المعمّقة ما يقدّمه الإصدار 0.1.0 اليوم — وأين تكمن حدوده.
آخر تحديث: أكتوبر 2026 · Valeri Milke, Lead Auditor لمعياري ISO 27001 وISO 42001
تحصلون على رابط التنزيل فورًا على الصفحة وعبر البريد الإلكتروني.
JSON-RPC 2.0 · HTTP(S) أو stdio
الوكيل المراقَب (Observed Agent)مثل وكيل البرمجة
steps/toolCallRequestallowdenymodifyaskdefer
الوكيل الحارس (Guardian Agent)Policy-as-Code + LLM اختياري
- allow
- deny
- modify
- ask
- defer
deny · destructive_shell_command_blocked · agt_stockmodify · parameter_overrides · LIMIT 500ask · approver=human · timeout_disposition=deny
Instrumentالخطافات (Hooks) والتصرفات (Dispositions)TraceOpenTelemetry وOCSFInspectAgBOM
19خطافات steps/* أصلية في المواصفة v0.1.0 — من sessionStart حتى sessionEnd، بما في ذلك خطافات Skill الثلاثة
5القرارات: allow وdeny وmodify وask وdefer — تذكر المواصفة المفردات الكاملة صراحةً لـ steps/toolCallRequest
7ملفات المطابقة: acs-core إلزامي إضافةً إلى ستة ملفات اختيارية — تُعلَن في المصافحة، دون فحص خارجي
6الحد الأدنى من الخطافات لـ ACS-Core: sessionStart، وuserMessage أو agentTrigger، وtoolCallRequest، وtoolCallResult، وagentResponse، وsessionEnd
وكلاء الذكاء الاصطناعي لا يقرؤون فحسب، بل يتصرفون: ينفذون أوامر Shell، ويستدعون واجهات API، ويرسلون رسائل البريد الإلكتروني، ويكتبون في ذاكرتهم. موجّهات النظام لا تتحكم في ذلك. وهنا تحديدًا يتدخل OWASP Agent Control Standard (ACS) ويوحّد التحكم وقت التشغيل كبروتوكول بين الوكيل وGuardian. تشرح هذه الصفحة المواصفة v0.1.0 من منظور CISO: الخطافات (Hooks) والقرارات (Dispositions)، وFailure Posture، وPolicy-as-Code، وسجل التدقيق، والتتبع وفق OpenTelemetry وOCSF، وكذلك AgBOM. يعرض المحاكي أمثلة اتصال مطابقة للمخطط، وتربط مصفوفة المخاطر ACS — كتقييم من VamiSec — بـ OWASP Agentic Top 10، ونوضح بصراحة ما لا يحققه المعيار المبكر حتى الآن. ويساعدكم مستكشف الملفات الشخصية والتقييم الذاتي وورقة بيضاء لـ CISO على البدء.
من Agent Observability Standard إلى ACS v0.1
كيف تحوّل مشروع لقابلية المراقبة إلى معيار تحكم — جميع المحطات الموثقة حتى الهدف لـ v0.2.0. انقروا على محطة لعرض التفاصيل.
11 مايو 2025
البداية باسم Agent Observability Standard (AOS)
أنشأ Michael Bargury أولى عمليات الالتزام في المستودع zenitysec/AOS. منذ AOS كان التقسيم إلى Instrument وTrace وInspect — الركائز الثلاث التي تميّز ACS حتى اليوم. من منتصف مايو حتى 5 يونيو 2025 حملت مواصفة البروتوكول مؤقتًا اسم ASOP (Agent Security & Observability Protocol).
يونيو 2025
AOS يصبح مشروعًا في OWASP
عبر محطة وسيطة انتقل المستودع إلى منظمة OWASP؛ ومنذ منتصف يونيو 2025 تمر المساهمات عبر OWASP. أُدرج AOS بوصفه «OWASP other project»، وقائد المشروع Michael Bargury. وفي نهاية ديسمبر 2025 توقف العمل.
10 أبريل 2026
إعادة التسمية إلى Agent Control Standard (ACS)
أعاد Rock Lambros تسمية المشروع: من «Agent Observability» إلى «Agent Control». عمل ACS مؤقتًا بشكل مستقل بترخيص MIT في منظمة GitHub خاصة به.
27 مايو 2026
البيان الصحفي للإطلاق
عبر Business Wire قُدّم ACS كإطار مفتوح لحوكمة وكلاء الذكاء الاصطناعي وقت التشغيل — وبحسب البيان مرخص بـ MIT ودون سيطرة تجارية من شركة واحدة.
5 يونيو 2026
المواصفة المرجعية v0.1.0
جلب استيراد النسخة المرجعية v0.1.0 الأقسام المعيارية الأساسية الحالية: المصافحة، وFailure Posture، وسلسلة التدقيق، والتواقيع، ورموز الأخطاء، وخطافات Skill، وملفات المطابقة، ومخططات JSON. وقبل ثلاثة أيام كانت Microsoft قد نشرت «Agent Control Specification» خاصة بها — وهو مشروع مختلف بالاختصار نفسه.
11 أغسطس 2026
الإصدار v0.1.1 ونموذج ترخيص جديد
منذ ذلك الحين تخضع الشيفرة والمخططات لترخيص Apache-2.0، والتوثيق لترخيص CC BY-SA 4.0؛ وتبقى الإصدارات حتى v0.1.0 مرخصة بـ MIT. فُصل رقم الإصدار عن رقم المواصفة، وبقيت المواصفة v0.1.0. وانتقل المستودع إلى منظمة GenAI-Security-Project.
سبتمبر 2026
إعادة الإطلاق ضمن OWASP GenAI Security Project
صفحة موارد على genai.owasp.org (1 سبتمبر)، وموقع المواصفة وجميع مخططات JSON الـ 44 تحت معرّفات URI خاصة بالمشروع (5 سبتمبر)، وتصحيح جدول تصنيف الخطافات في المواصفة إلى 19 خطافًا (7 سبتمبر)، والحوكمة وتطبيق مرجعي لإثبات المفهوم على أساس Agent Governance Toolkit من Microsoft (10 سبتمبر).
21 سبتمبر 2026
الوسم v0.1.2
وُضع الوسم لاحقًا على عملية التزام بتاريخ 9 سبتمبر: يمكن الآن لغلاف الاستجابة أن يحمل ServerHello. ومنذ v0.1.1 تغيرت أيضًا معرّفات URI للمخططات ونصوص المواصفة — ومع ذلك تبقى نسخة المواصفة v0.1.0.
مارس 2027 (هدف)
v0.2.0 مخطط
بحسب المشروع، هذا هو هدف المواصفة التالية: ومن ذلك البث والمقاطعة، وASK التكراري والنصاب، وتغليف A2A، وربط Cedar، والعزل متعدد المستأجرين، واتحاد AgBOM. لا يوجد موعد لـ v1.0.
تسعة مفاهيم أساسية في Agent Control Standard
انقروا على بطاقة لقراءة المفهوم الأساسي — يتبع الترتيب مسار إجراء الوكيل من Hook مرورًا بالقرار وصولًا إلى دليل الإثبات.
الخطافات هي نقاط التحكم في ACS. تحدد المواصفة v0.1.0 تسعة عشر خطاف steps/* أصليًا — من sessionStart مرورًا بـ userMessage وknowledgeRetrieval وmemoryStore وtoolCallRequest حتى خطافات Skill الثلاثة وsessionEnd. ويُضاف إليها agbom/snapshot وagbom/changed وsystem/ping وhandshake/hello. يجب على الأطر إطلاق steps/toolCallRequest لكل إجراء يغادر سياق الاستدلال، بما في ذلك Shell ونظام الملفات والشبكة. ويتطلب ACS-Core ستة خطافات على الأقل؛ وما لا يدرجه Guardian في methods_evaluated يُعد مسموحًا به دون فحص.
يرد Guardian بأحد خمسة قرارات: allow يسمح بتنفيذ الإجراء، وdeny يحظره، وmodify يعيد كتابة المعاملات أو يحجب المحتوى، وask يعرضه على معتمِد، وdefer يؤجل القرار عندما ينقص السياق مثلًا. وباستثناء allow تتطلب جميعها مبررًا في الحقل reasoning. تذكر المواصفة المفردات الكاملة صراحةً لـ steps/toolCallRequest؛ وللخطافات الأخرى مجموعات أضيق، أما خطافات التدقيق البحتة مثل sessionEnd فلا قرار لها إطلاقًا. والقيم الافتراضية ضمن القرارات صارمة: قرارات ask وdefer المنتهية المهلة تتحول إلى deny، وأي modify مخالف للقواعد يعامله الوكيل كـ deny.
تبدأ كل جلسة بـ handshake/hello. يذكر Observed Agent الإصدارات والطرق المنفذة ووسائل النقل والملفات؛ ويحدد Guardian في ServerHello الطرق التي يقيّمها فعلًا (methods_evaluated)، والمدة التي ينتظر فيها الوكيل القرار (timeout_config)، وما يسري عند التعطل (on_decision_failure). وبذلك تحدد المصافحة التغطية الفعلية: ما لم يُتفاوض عليه يعمل دون فحص. ولحالة الخطأ إعدادان مسبقان — أحدهما لبدء الجلسة والآخر لكل خطوة منفردة — وكلاهما مضبوط افتراضيًا على proceed، أي fail-open. أما ما يعنيه ذلك للتشغيل فتجيب عنه الأسئلة الشائعة والفصل 6.
يعمل Guardian في طبقتين. تقيّم الطبقة الحتمية كل Hook أولًا — كـ Policy-as-Code، في v0.1 مع OPA/Rego كمرجع بداية؛ وربط Cedar مخطط لـ v0.2. ولا تتدخل طبقة LLM الاختيارية إلا إذا فوّضت تهيئتها ذلك. هذه الطبقة لا ترى شيفرة السياسة، ويجب أن تعامل البيانات غير الموثوقة كبيانات وأن تسجل قراراتها مع المبرر ومعرّف النموذج، ومستوى الثقة إن وُجد؛ ثم تمر نتيجتها مجددًا عبر الطبقة الحتمية. وGuardian الحتمي بالكامل مطابق تمامًا. تحدد المواصفة الواجهة مع محرك السياسات فقط، لا المحرك نفسه — ولا أي محتوى للسياسات. وبذلك تعتمد الفعالية كليًا على قواعدكم.
يحتفظ Guardian لكل جلسة بسلسلة إلحاق فقط (append-only) من ContextEntries، مرتبطة عبر تجزئات SHA-256 على أساس توحيد JCS وفق RFC 8785. وللخطوات الحاملة للمحتوى يجب أن ينشر قيمة chain_hash الحالية في استجابته. ويتطلب ACS-Core كذلك توقيع HMAC-SHA256 على كل طلب وكل استجابة بمفتاح جلسة مشتق عبر HKDF، إضافةً إلى الحماية من إعادة التشغيل عبر request_id ونافذة زمنية. وهذا يجعل سجل التدقيق كاشفًا للتلاعب في مواجهة هجمات الشبكة — لا في مواجهة Guardian مخترَق. أما عدم الإنكار فلا يتحقق إلا مع acs-crypto وML-DSA-65، والربط بمحتوى الطلب إلا مع acs-audit عبر request_hash.
لا يخترع ACS صيغة سجلات جديدة. توفر ركيزة Trace مفردات معيارية لـ OpenTelemetry وOCSF: أسماء Span والسمات لكل خطاف، والقرارات كحدث Span باسم acs.decision، والقرارات غير allow كـ OCSF Detection Finding (2004) بخطورة من 2 لـ modify حتى 4 لـ deny. ويستهدف ذلك مسارات SIEM القائمة دون محللات خاصة. والتتبع بأفضل جهد: تعطل المستقبِل لا يحظر شيئًا، وأحداث التتبع إفصاحات ذاتية من البيئة المراقَبة. يحمل الربط حالة «Working draft»، ولا يغطي خطافات Skill الثلاثة، ويختلف في بعض أسماء الفئات وSpan عن OCSF وOpenTelemetry.
استخدموا قياسات ACS عن بُعد في الاختبار الأمني →AgBOM هو الجرد الديناميكي لـ Observed Agent: ثمانية أنواع مكونات من model وmcp_server وa2a_peer مرورًا بـ tool وknowledge_source وmemory_store حتى agent_capability وskill. يبلّغ agbom/snapshot عنه مرة واحدة لكل جلسة قبل أول خطاف يحمل محتوى؛ ويبلّغ agbom/changed عن التغييرات وقت التشغيل، لكن فقط في ملف acs-inspect-dynamic. وعبر deny يمكن لـ Guardian رفض الجلسات ذات المكونات المحظورة أو حظر الاستبدال الساخن. والتسلسلات وفق CycloneDX 1.6 أو SPDX 3.0 أو SWID في حالة «Working draft». AgBOM إفصاح ذاتي من الوكيل — ولا يحل محل AI-BOM ولا محل SBOM وفق Cyber Resilience Act.
ACS-Core إلزامي؛ ويُضاف إليه ستة ملفات اختيارية: acs-trace وacs-inspect وacs-inspect-dynamic وacs-provenance وacs-crypto وacs-audit. يعلنها الطرفان في المصافحة — ولا يفحصها أحد في v0.1.0: لا توجد مجموعة اختبارات ولا سجل ولا جهة فحص. حتى Guardian المتساهل يُعد مطابقًا. والتطبيق المرجعي الوحيد هو إثبات مفهوم يقيّم خطافين من أصل 19 مباشرة، ولا يطبق HMAC ولا الحماية من إعادة التشغيل. والهدف للمواصفة التالية v0.2.0 هو مارس 2027، ولا يوجد موعد لـ v1.0. خططوا لـ ACS كهدف معماري، لا كشهادة.
اختبروا الفعالية بأنفسكم: اختبارات سلبية من نموذج التهديدات →المعيار في المستكشف
ثلاث ركائز، وبنية Guardian، والهوية والمنشأ، وملفات المطابقة — مع الرسائل الأساسية للمواصفة v0.1.0 وحدودها لكل منها.
ركيزة19 خطافًا · 5 قرارات
- اعتراض وتقييم وإنفاذ في الوقت الفعلي: أغلفة JSON-RPC-2.0 عبر HTTP(S) أو stdio، وطرق الخطافات في نطاق الأسماء steps/*.
- 19 خطافًا أصليًا عبر دورة الحياة كاملة: الجلسة، والدور، والرسائل، والمعرفة والذاكرة، والأدوات، والضغط، والوكلاء الفرعيون، وSkills.
- يجب أن يُطلَق steps/toolCallRequest لكل إجراء يغادر سياق الاستدلال — بما في ذلك عمليات Shell والملفات والشبكة المدمجة.
- يجب على Observed Agent انتظار القرار وتطبيقه؛ وأي إطار يتجاهل الأحكام غير مطابق.
- البث والإشعارات والمقاطعة غير موجودة في v0.1.0 — لا تعرف الاستجابة سوى النوع final.
JSON-RPC 2.0steps/*steps/toolCallRequestالالتزام بالقرار (Decision Honoring)
ملف acs-traceOpenTelemetry + OCSF
- مفردات معيارية بدلًا من نقل خاص: أسماء Span والسمات وفئات OCSF وربط الخطورة لكل خطاف.
- تسلسل Span: acs.session → acs.turn → Step-Span؛ وتُعلَّق القرارات كحدث acs.decision على الخطوة التي تسمح بها أو تحظرها.
- فئات OCSF حسب UID: 3002 Authentication، و1007 Process Activity، و6005 Datastore Activity، و2004 Detection Finding لـ deny وmodify وask وdefer.
- من يدّعي acs-trace يجب أن يُخرج كل قرار مع Disposition والمقيِّم والمبرر المتوفر كحدث تتبع.
- الحدود: بأفضل جهد وبإبلاغ ذاتي، وخطافات Skill دون ربط؛ وSpan الأداة في ACS gen_ai.tool.call ليس في OpenTelemetry سوى بادئة سمات (هناك execute_tool)، والفئة 6002 تسمى في OCSF «Application Lifecycle».
OpenTelemetryOCSF 1.5+Detection Finding 2004acs.decision
ملف acs-inspect8 أنواع مكونات
- AgBOM كجرد ديناميكي قابل للاستعلام: model وmcp_server وa2a_peer وtool وknowledge_source وmemory_store وagent_capability وskill.
- agbom/snapshot مرة واحدة لكل جلسة قبل أول خطاف يحمل محتوى — ويكتبه Guardian في سلسلة التدقيق.
- agbom/changed عند كل تغيير في رسم المكونات، لكن فقط ضمن acs-inspect-dynamic؛ ومن دون هذا الملف لا يبلّغ الوكيل عن عمليات الاستبدال الساخن أثناء الجلسة.
- يمكن لسياسات Guardian إيقاف النماذج أو الأدوات أو خوادم MCP المحظورة عبر deny؛ وإذا اعتمدت سياسة على الجرد، يصبح acs-inspect إلزاميًا.
- التسلسل وفق CycloneDX 1.6 أو SPDX 3.0 أو SWID (واحد على الأقل) — والربط في حالة «Working draft»، وبعضه غير صالح وفق المخطط.
agbom/snapshotagbom/changedCycloneDX 1.6SPDX 3.0SWID
البنيةالحتمية أولًا
- تعمل الطبقة الحتمية دائمًا أولًا: Policy-as-Code مع OPA/Rego كمرجع بداية في v0.1، وربط Cedar مخطط لـ v0.2.
- لا تتدخل طبقة LLM الاختيارية إلا عند التفويض — دون وصول إلى شيفرة السياسة، مع تسجيل المبرر ومعرّف النموذج، ومستوى الثقة إن وُجد.
- Guardians الحتمية بالكامل مطابقة تمامًا؛ ويُظهر metadata.evaluator ما إذا كان القرار من deterministic أو agent أو composite.
- تحدد المواصفة الواجهة مع المحرك فقط؛ ولا ينبغي أن تتضمن السياسات المرجعية استدعاءات HTTP خارجية.
- نماذج دون توسيع الاتصال: IBAC وFIDES وCaMeL وقواعد على غرار AARM عبر السياق التراكمي.
Policy-as-CodeOPA/RegoCedar (v0.2)IBAC · FIDES · CaMeL · AARM
ملف acs-provenance7 قيم لـ origin
- لا يفرض ACS آلية مصادقة؛ وتبقى مخططات الثقة مثل SPIFFE أو OIDC أو PKI على مستوى المؤسسة من شأن النشر.
- لا يجوز خلط هويات Observed Agent وGuardian ومؤلف السياسة؛ ويجب أن يكون المعتمِدون مصادقًا عليهم.
- نية الجلسة: يُثبَّت Intent.parsed قبل أول خطوة تحمل محتوى، ولا يتوسع إلا عبر موافقة مصادق عليها بواسطة ask.
- يحمل Provenance حقائق لكل حقل بيانات: provenance_id، وorigin (سبع قيم من user_input حتى external)، وsource_id، وderived_from.
- يضع الإطار Provenance بشكل حتمي، وليس LLM أبدًا؛ وضمن acs-provenance ينطبق ذلك على كل حقل يحمل بيانات في الجلسة.
- لا يوجد حقل trust في مخطط v0.1: يستنتج Guardian الثقة من المنشأ — ومعالجة LLM لا تجعل البيانات غير الموثوقة موثوقة.
originderived_fromprovenance_producerIntent.parsed
إعلان ذاتيملف إلزامي واحد + 6 ملفات إضافية
- acs-core إلزامي ويشمل من بين أمور أخرى: المصافحة، والأغلفة، وستة خطافات كحد أدنى، والقرارات الخمسة كلها، وسلسلة تدقيق مع رأس سلسلة منشور، والحماية من إعادة التشغيل، وتوقيع HMAC-SHA256، وsystem/ping.
- لا يتطلب ACS-Core أحداث تتبع ولا AgBOM ولا Provenance على مستوى الحقل ولا تواقيع غير متماثلة ولا request_hash — فهذه توفرها الملفات الاختيارية.
- الملفات إعلان ذاتي في المصافحة: لا مجموعة اختبارات، ولا سجل، ولا جهة فحص (Issue #19، الأولوية P1، مفتوح).
- Guardian متساهل يُعد مطابقًا — فالمطابقة لا تقول شيئًا عن صرامة سياساتكم.
- النطاق الإلزامي في تغير: طلب الدمج المفتوح PR #21 سيخفض من بين أمور أخرى modify وsystem/ping إلى SHOULD.
- أمثلة تركيبات من المواصفة: تكامل IDE أدنى بـ acs-core فقط، ونشر عالي الضمان بجميع الملفات السبعة.
acs-coreacs-traceacs-inspectacs-cryptoacs-audit
تفاعلي
محاكي Guardian: ستة سيناريوهات خطوة بخطوة
اختاروا سيناريو وتابعوا كيف ينتقل طلب Hook من Observed Agent إلى Guardian Agent، وأي قرار ينتج، وما الذي يُسجل في سجل التدقيق — بما في ذلك حالة تعطل Guardian.
وكيل البرمجة
يُفترض أن ينظف وكيل البرمجة مخرجات البناء. وبسبب مسار حُلّ بشكل خاطئ، يستهدف أمر Shell المخطط rm -rf الدليل الرئيسي بدلًا من مجلد البناء.
- 1طلب Hook (Observed Agent → Guardian)
{ "jsonrpc": "2.0", "method": "steps/toolCallRequest", "id": 41, "params": { "acs_version": "0.1.0", "request_id": "6b2f9e14-0c3a-4d7b-a5e8-91f2c4d6b803", "timestamp": "2026-10-06T09:12:41Z", "metadata": { "agent_id": "coding-agent-ci-07", "session_id": "3f6c2a18-9d4e-4b1a-8c55-2e7f90a1b3c4", "turn_id": "a1d4e7f0-2b5c-4e8a-9f13-6c0d2e5f8a71" }, "payload": { "tool": { "name": "shell" }, "operation": "delete_recursive", "capability": "filesystem.delete", "arguments": { "command": { "value": "rm -rf ~/", "provenance": { "provenance_id": "p-112", "origin": "agent_generated", "derived_from": [ "p-101" ] } } }, "raw_command": "rm -rf ~/" }, "signature": { "algorithm": "HMAC-SHA256", "value": "unUBv7dka1B1VD+fgzjF9E+IGC3GiQihQdQxEtIyG54=", "key_id": "sess-hmac-coding-07" } } } - 2التقييم في Guardian
- الطبقة الحتمية (Policy-as-Code، المرجع في v0.1: OPA/Rego): يبلّغ الإطار عن استدعاء Shell مع القدرة filesystem.delete والعملية delete_recursive؛ فتنطبق القاعدة deny_recursive_delete_outside_workspace.
- فحص المسار: الهدف ~/ (الدليل الرئيسي) يقع خارج مساحة العمل التي تقصر السياسة هذه الجلسة عليها.
- فحص المنشأ: الأمر agent_generated (مشتق من p-101) — لم يحدد أي إنسان هذا الهدف صراحةً.
- لا حاجة إلى طبقة LLM الاختيارية: deny مع reasoning وreason_codes وpolicy_references، والمقيِّم deterministic.
Dispositiondenyالإجراء محظور - 3الاستجابة (Guardian → Observed Agent)
{ "jsonrpc": "2.0", "id": 41, "result": { "type": "final", "acs_version": "0.1.0", "request_id": "6b2f9e14-0c3a-4d7b-a5e8-91f2c4d6b803", "decision": "deny", "reasoning": "Recursive delete targets the user's home directory, outside the workspace root the session is scoped to.", "reason_codes": [ "destructive_operation", "path_outside_workspace" ], "policy_references": [ { "policy_id": "coding-agent-fs", "policy_version": "2026.10.2", "rule_id": "deny_recursive_delete_outside_workspace" } ], "cited_provenance_ids": [ "p-112" ], "metadata": { "evaluator": "deterministic", "evaluation_duration_ms": 3 }, "chain_hash": "49c17246a18080bbeeaee88743bff94616b58cb6beb24e870b68a6f3ad55ecc3", "signature": { "algorithm": "HMAC-SHA256", "value": "Z1NyoNzC5LkVEcrZS6rzuc3CFaPO8vgfYg5/lhCpuho=", "key_id": "sess-hmac-coding-07" } } }لا ينفذ Observed Agent عملية الحذف ويتلقى المبرر. وإذا اقترح مسارًا مصححًا، يُفحص مجددًا.
- 4سجل التدقيق (Trace)
{ "_note": "vereinfachter Auszug", "class_uid": 2004, "class_name": "Detection Finding", "category_uid": 2, "activity_id": 1, "severity_id": 4, "time": 1791277961003, "metadata": { "version": "1.5.0" }, "finding_info": { "uid": "dec-6b2f9e14", "title": "Tool call denied: recursive delete outside workspace" }, "enrichments": [ { "name": "acs_provenance_origin", "value": "agent_generated" } ], "unmapped": { "acs": { "decision": "deny", "evaluator": "deterministic", "policy_references": [ { "policy_id": "coding-agent-fs", "policy_version": "2026.10.2", "rule_id": "deny_recursive_delete_outside_workspace" } ], "reason_codes": [ "destructive_operation", "path_outside_workspace" ], "cited_provenance_ids": [ "p-112" ], "session_id": "3f6c2a18-9d4e-4b1a-8c55-2e7f90a1b3c4", "step_id": "6b2f9e14-0c3a-4d7b-a5e8-91f2c4d6b803" } } }يمثّل ربط ACS القرارات غير allow كفئة OCSF 2004 Detection Finding؛ ويحصل deny على severity_id 4 (High).
ما يعنيه ذلك لكم
الإجراءات المدمّرة مكانها خلف قاعدة حتمية تتدخل قبل التنفيذ — لا في موجّه النظام. ولا يكون ذلك فعالًا إلا إذا مرّر الإطار كل إجراء ذي أثر خارجي عبر steps/toolCallRequest، بما في ذلك عمليات الملفات وShell المدمجة.
ASI02ASI05
وكيل التحليلات
يريد وكيل التحليلات تنفيذ SELECT * على جدول العملاء لإعداد تقرير — دون حد للصفوف ومع جميع الأعمدة.
- 1طلب Hook (Observed Agent → Guardian)
{ "jsonrpc": "2.0", "method": "steps/toolCallRequest", "id": 17, "params": { "acs_version": "0.1.0", "request_id": "d4a7c0e3-5f8b-4c1e-9a6d-2b5e8f1c4a73", "timestamp": "2026-10-06T09:24:18Z", "metadata": { "agent_id": "analytics-agent-02", "session_id": "8e1b4c7a-2f5d-4a90-b6c3-d4e5f6a7b8c9", "turn_id": "c2e5f8a1-3b6d-4f9c-8a2e-7d0f1c4e6b92" }, "payload": { "tool": { "name": "database_query" }, "capability": "database.read", "arguments": { "query": { "value": "SELECT * FROM customers", "provenance": { "provenance_id": "p-205", "origin": "agent_generated", "derived_from": [ "p-201" ] } } } }, "signature": { "algorithm": "HMAC-SHA256", "value": "O3OXC3lacLzJOEbWjqw/o0TzL6sXBF+xkW16O8RIrHw=", "key_id": "sess-hmac-analytics-02" } } } - 2التقييم في Guardian
- الطبقة الحتمية: تكتشف القاعدة cap_unbounded_select من السياسة db-row-limit استعلامًا دون LIMIT على جدول مصنف كحساس.
- تسمح السياسة بالغرض (التقرير)، لكن فقط بالأعمدة المعتمدة وبحد أقصى 500 صف (قيمة حدية توضيحية).
- بدلًا من الحظر، يعيد Guardian كتابة المعامل query فقط عبر parameter_overrides. ولا يجوز له دمج ذلك مع استبدال الحمولة كاملة (modified_content).
- الاستجابة: modify مع reasoning وmodifications — ويجب على Observed Agent تنفيذ الاستعلام المعدّل.
Dispositionmodifyأُعيدت كتابة المعاملات - 3الاستجابة (Guardian → Observed Agent)
{ "jsonrpc": "2.0", "id": 17, "result": { "type": "final", "acs_version": "0.1.0", "request_id": "d4a7c0e3-5f8b-4c1e-9a6d-2b5e8f1c4a73", "decision": "modify", "reasoning": "Unbounded SELECT on customers exceeds the row-limit policy; query capped at 500 rows and reduced to approved columns.", "reason_codes": [ "row_limit_exceeded" ], "modifications": { "parameter_overrides": { "query": "SELECT id, segment, country FROM customers LIMIT 500" } }, "policy_references": [ { "policy_id": "db-row-limit", "policy_version": "2026.10.1", "rule_id": "cap_unbounded_select" } ], "metadata": { "evaluator": "deterministic", "evaluation_duration_ms": 4 }, "chain_hash": "6edfb8f26fe425f6891d7fccad3991a14e818d1199c29b9677724794cb725521", "signature": { "algorithm": "HMAC-SHA256", "value": "JmDUSrtQvFUL5/cFPeiP0nNUi0lN9L4ZkIw8+oNHn48=", "key_id": "sess-hmac-analytics-02" } } }يُنفذ الاستعلام مع LIMIT 500 وأعمدة مقلّصة. يحصل الوكيل على نتيجة قابلة للاستخدام، وتبقى كمية البيانات المسترجعة محدودة.
- 4سجل التدقيق (Trace)
{ "entry_id": "ce-0002", "step_id": "d4a7c0e3-5f8b-4c1e-9a6d-2b5e8f1c4a73", "step_type": "steps/toolCallRequest", "request_hash": "1ab512a11f6ed1d456e6a43b39e879772a0d2dd1045e4ce8887ce2ff449e7657", "timestamp": "2026-10-06T09:24:18Z", "previous_hash": "daceae6d78730c33d4805a0daca7bbd1929f323ada77cab0374a6cbfdcf8e570", "entry_hash": "6edfb8f26fe425f6891d7fccad3991a14e818d1199c29b9677724794cb725521" }هنا ترون ContextEntry في سلسلة التدقيق: يربط entry_hash الخطوة بـ previous_hash ويطابق chain_hash في استجابة Guardian. ويربط request_hash محتوى الطلب — موصى به في ACS-Core، وإلزامي فقط ضمن acs-audit.
ما يعنيه ذلك لكم
modify هي أداة «نعم، ولكن بأمان»: تفرضون تقليل البيانات تقنيًا دون حظر حالة الاستخدام. وأي modify مركّب بشكل خاطئ يجب أن يعامله Observed Agent كـ deny — وهنا تتطلب المواصفة fail-closed.
ASI02ASI03
الوكيل المالي
يريد الوكيل المالي دفع فاتورة مورّد بقيمة 48,500 يورو. بيانات الحساب المصرفي للمستفيد مصدرها رسالة بريد إلكتروني، لا البيانات الرئيسية للمورّدين.
- 1طلب Hook (Observed Agent → Guardian)
{ "jsonrpc": "2.0", "method": "steps/toolCallRequest", "id": 9, "params": { "acs_version": "0.1.0", "request_id": "f1b4e7a0-6c9d-4f2a-b8e3-5d7a0c3f6e91", "timestamp": "2026-10-06T10:05:33Z", "metadata": { "agent_id": "finance-agent-ap-01", "session_id": "b7c0d3e6-4a9f-4e2b-8d15-3f6a9c2e5b18", "turn_id": "e3f6a9c2-5d8b-4b1e-9c47-0a3d6f9b2e54" }, "payload": { "tool": { "name": "payments_api" }, "operation": "create_transfer", "capability": "payment.initiate", "arguments": { "amount": { "value": "48500.00 EUR", "provenance": { "provenance_id": "p-311", "origin": "tool_output", "source_id": "invoice_parser" } }, "beneficiary": { "value": "vendor V-2291, bank account changed via e-mail", "provenance": { "provenance_id": "p-312", "origin": "tool_output", "source_id": "mail_inbox" } } } }, "signature": { "algorithm": "HMAC-SHA256", "value": "BNOgarNt++1Z6umtLvb3ocuYI3VXSDu/0UyMwiUys38=", "key_id": "sess-hmac-finance-01" } } } - 2التقييم في Guardian
- الطبقة الحتمية: المبلغ يتجاوز حد المدفوعات التلقائية؛ فتنطبق القاعدة ask_above_limit_or_changed_beneficiary (توضيحي).
- فحص المنشأ: يحمل المعامل beneficiary القيمة origin tool_output مع source_id mail_inbox، ويُعد وفق الربط الافتراضي غير موثوق.
- يطلب Guardian موافقة: approver.type human، وtimeout_seconds 900، وtimeout_disposition deny؛ ويسري توسيع النية (intent_extension) على هذا الطلب فقط (scope this_request).
- يجب على المعتمِد المصادقة، ويتحقق Guardian من هويته مقابل السياسة؛ ولا يجوز للمعتمِد نفسه إرجاع ask.
Dispositionaskطُلبت الموافقة - 3الاستجابة (Guardian → Observed Agent)
{ "jsonrpc": "2.0", "id": 9, "result": { "type": "final", "acs_version": "0.1.0", "request_id": "f1b4e7a0-6c9d-4f2a-b8e3-5d7a0c3f6e91", "decision": "ask", "reasoning": "Amount exceeds the auto-approval limit and the beneficiary's bank details were taken from an e-mail, not from vendor master data.", "reason_codes": [ "approval_threshold_exceeded", "beneficiary_changed" ], "ask_details": { "approver": { "type": "human", "id": "treasury-approver@example.com" }, "question": "Approve transfer of 48,500.00 EUR to vendor V-2291 with changed bank details?", "options": [ "approve", "reject" ], "timeout_seconds": 900, "timeout_disposition": "deny", "intent_extension": { "capabilities": [ { "tool": "payments_api", "operation": "create_transfer", "resource": "vendor:V-2291" } ], "scope": "this_request" } }, "policy_references": [ { "policy_id": "ap-payments", "policy_version": "2026.10.1", "rule_id": "ask_above_limit_or_changed_beneficiary" } ], "cited_provenance_ids": [ "p-311", "p-312" ], "metadata": { "evaluator": "deterministic", "evaluation_duration_ms": 5 }, "chain_hash": "01918aa3a3c9b7ec4b99826d21a9d843b5f071655c3dc155c50b2c2fe93db2b8", "signature": { "algorithm": "HMAC-SHA256", "value": "I7WChoFe42FDc/PXgS+nKkaQrZFRhoDuqUMLdj8qflA=", "key_id": "sess-hmac-finance-01" } } }ينتظر الدفع موافقة الخزينة. وإذا لم يرد أحد خلال 15 دقيقة، يسري deny — ولا يُنفذ التحويل.
- 4سجل التدقيق (Trace)
{ "_note": "vereinfachter Auszug", "class_uid": 2004, "class_name": "Detection Finding", "category_uid": 2, "activity_id": 1, "severity_id": 3, "time": 1791281133005, "metadata": { "version": "1.5.0" }, "finding_info": { "uid": "dec-f1b4e7a0", "title": "Approval required: payment above limit, changed beneficiary" }, "enrichments": [ { "name": "acs_provenance_origin", "value": "tool_output" }, { "name": "acs_provenance_source_id", "value": "mail_inbox" } ], "unmapped": { "acs": { "decision": "ask", "evaluator": "deterministic", "policy_references": [ { "policy_id": "ap-payments", "policy_version": "2026.10.1", "rule_id": "ask_above_limit_or_changed_beneficiary" } ], "reason_codes": [ "approval_threshold_exceeded", "beneficiary_changed" ], "cited_provenance_ids": [ "p-311", "p-312" ], "session_id": "b7c0d3e6-4a9f-4e2b-8d15-3f6a9c2e5b18", "step_id": "f1b4e7a0-6c9d-4f2a-b8e3-5d7a0c3f6e91" } } }يظهر ask في ربط ACS كـ Detection Finding (OCSF 2004) مع severity_id 3 (Medium). وتنتمي هوية المعتمِد والنتيجة كذلك إلى أدلة إثبات الموافقة لديكم.
ما يعنيه ذلك لكم
ask ليس إشرافًا بشريًا تلقائيًا: تسمح المواصفة أيضًا بوكلاء أو خدمات كمعتمِدين. ولأدلة الإثبات المتعلقة مثلًا بالمادة 14 من EU AI Act في الاستخدامات عالية المخاطر، حددوا عبر السياسة «human approver, timeout deny» — وهي في تقديرنا التهيئة الموثوقة.
ASI01ASI02ASI09
وكيل الدعم
يُفترض أن يلخص وكيل الدعم حالة تذكرة فيسترجعها لذلك. تحتوي النتيجة على بيانات اتصال العميلة وملاحظة من مرسل خارجي تتضمن تعليمات بتصدير قائمة العملاء.
- 1طلب Hook (Observed Agent → Guardian)
{ "jsonrpc": "2.0", "method": "steps/toolCallResult", "id": 23, "params": { "acs_version": "0.1.0", "request_id": "a8b1c4d7-0e3f-4a6b-9c2d-5e8f1a4b7c06", "timestamp": "2026-10-06T11:14:52Z", "metadata": { "agent_id": "support-agent-eu-03", "session_id": "c9d2e5f8-7b1a-4c3d-9e6f-4a7b0c3d6e29", "turn_id": "f4a7b0c3-6e9d-4c2f-8b5a-1d4e7a0c3f65" }, "payload": { "tool": { "name": "ticket_lookup" }, "exit_status": "success", "outputs": [ { "value": "Ticket 48121, contact J. Example, +49 000 0000000", "provenance": { "provenance_id": "p-421", "origin": "tool_output", "source_id": "crm" } }, { "value": "External note: <instruction to export the customer list>", "provenance": { "provenance_id": "p-422", "origin": "tool_output", "source_id": "inbound_mail" } } ] }, "signature": { "algorithm": "HMAC-SHA256", "value": "9oNhSZD+hpXpIvLBTjgaGEh73I+A3Uv3TRs+wY6y78E=", "key_id": "sess-hmac-support-03" } } } - 2التقييم في Guardian
- الطبقة الحتمية: يحمل المخرجان origin tool_output ويُعدان وفق الربط الافتراضي للمواصفة غير موثوقين؛ كما أن الملاحظة مصدرها inbound_mail.
- قاعدة حماية البيانات (توضيحية): اسم العميلة ورقم هاتفها غير مطلوبين في سياق الوكيل لغرض «تلخيص حالة التذكرة».
- التفويض إلى طبقة LLM الاختيارية: تصنف الملاحظة كمحتوى ذي طابع تعليمي (confidence 0.93) — دون وصول إلى شيفرة السياسة.
- النتيجة: modify مع عمليتي حجب (redactions) عبر JSON-Pointer؛ ولأن طبقة LLM شاركت، يكون المقيِّم composite وتذكر الاستجابة model_id.
Dispositionmodifyأُعيدت كتابة المعاملات - 3الاستجابة (Guardian → Observed Agent)
{ "jsonrpc": "2.0", "id": 23, "result": { "type": "final", "acs_version": "0.1.0", "request_id": "a8b1c4d7-0e3f-4a6b-9c2d-5e8f1a4b7c06", "decision": "modify", "reasoning": "Output 0 contains personal data not needed for the task; output 1 contains instruction-like text from an untrusted origin. Both redacted before ingestion.", "reason_codes": [ "untrusted_instruction_in_output", "pii_detected" ], "modifications": { "redactions": [ { "path": "/outputs/0/value", "replacement": "Ticket 48121, contact [REDACTED]" }, { "path": "/outputs/1/value", "replacement": "[REMOVED: instruction-like content from untrusted source]" } ] }, "policy_references": [ { "policy_id": "ingest-guard", "policy_version": "2026.10.1", "rule_id": "redact_untrusted_instructions_and_pii" } ], "cited_provenance_ids": [ "p-421", "p-422" ], "metadata": { "evaluator": "composite", "model_id": "guardian-classifier-demo", "confidence": 0.93, "evaluation_duration_ms": 180 }, "chain_hash": "ac94f144bfb94f6afc0e2eaa2b1e4494fb1fb70e20b7f3ce480703d602980c02", "signature": { "algorithm": "HMAC-SHA256", "value": "+fzpemnPIXE38pFATTnuxGutl+z5ik8rM4Bf7PbVvzM=", "key_id": "sess-hmac-support-03" } } }يتلقى الوكيل النتيجة المنقّحة: بيانات الاتصال محجوبة، والملاحظة محذوفة. ولا تصل التعليمات المدسوسة إلى سياقه.
- 4سجل التدقيق (Trace)
{ "_note": "vereinfachter Auszug", "class_uid": 2004, "class_name": "Detection Finding", "category_uid": 2, "activity_id": 1, "severity_id": 2, "time": 1791285292180, "metadata": { "version": "1.5.0" }, "finding_info": { "uid": "dec-a8b1c4d7", "title": "Tool result redacted before ingestion" }, "enrichments": [ { "name": "acs_provenance_origin", "value": "tool_output" }, { "name": "acs_provenance_source_id", "value": "inbound_mail" } ], "unmapped": { "acs": { "decision": "modify", "evaluator": "composite", "policy_references": [ { "policy_id": "ingest-guard", "policy_version": "2026.10.1", "rule_id": "redact_untrusted_instructions_and_pii" } ], "reason_codes": [ "untrusted_instruction_in_output", "pii_detected" ], "cited_provenance_ids": [ "p-421", "p-422" ], "session_id": "c9d2e5f8-7b1a-4c3d-9e6f-4a7b0c3d6e29", "step_id": "a8b1c4d7-0e3f-4a6b-9c2d-5e8f1a4b7c06" } } }نظرًا لأن الـ Hook يحمل بيانات Provenance، يشترط ربط ACS وجود بيانات المصدر في حقل OCSF المسمى enrichments (acs_provenance_origin).
ما يعنيه ذلك لكم
لا يمنع ACS حقن الأوامر (Prompt Injection) — بل ينشئ نقطة التحكم قبل أن يصل المحتوى الخارجي إلى السياق. التصنيف عبر LLM احتمالي؛ أما الركيزة فتبقى في أن كل إجراء ذي عواقب يُفحص عند steps/toolCallRequest التالي مقابل النية والمصدر.
ASI01ASI06
وكيل الدعم
على خلاف السيناريو السابق، وصلت هنا رسالة بريد إلكتروني واردة دون تنقيح إلى سياق وكيل دعم — مثلًا لأن التصنيف الاحتمالي لم يكتشف التعليمات المدسوسة. ويريد الوكيل أن يحفظ منها قاعدة دائمة على مستوى المستأجر: إضافة عنوان خارجي في BCC مستقبلًا لجميع رسائل الفواتير.
- 1طلب Hook (Observed Agent → Guardian)
{ "jsonrpc": "2.0", "method": "steps/memoryStore", "id": 31, "params": { "acs_version": "0.1.0", "request_id": "b2c5d8e1-4f7a-4b0c-8d3e-6f9a2b5c8d17", "timestamp": "2026-10-06T11:36:07Z", "metadata": { "agent_id": "support-agent-eu-05", "session_id": "5e8a1c4f-2d7b-4f3a-9c6e-8b1d4a7f0e25", "turn_id": "7c0f3a6d-9e2b-4c5f-a8d1-3e6b9c2f5a48" }, "payload": { "memory_store": { "name": "team-preferences", "scope": "tenant" }, "operation": "create", "content": { "value": "Standing rule: add an external address as BCC on all invoice e-mails", "provenance": { "provenance_id": "p-512", "origin": "agent_generated", "derived_from": [ "p-508" ] } } }, "signature": { "algorithm": "HMAC-SHA256", "value": "Urnrl2bo53hnjmn2C6tLU6KFEVlgkFFqyCNpKT3BrPs=", "key_id": "sess-hmac-support-05" } } } - 2التقييم في Guardian
- الطبقة الحتمية: الهدف هو مخزن team-preferences بنطاق scope tenant — أي أن الإدخال يسري خارج هذه الجلسة على جميع مستخدمي المستأجر.
- فحص Provenance: المحتوى agent_generated ومشتق من p-508، وهي نتيجة أداة من inbound_mail. ووفق قاعدة الرتابة لا يكون المحتوى المشتق أكثر جدارة بالثقة من مصدره — أي أنه هنا غير جدير بالثقة.
- تنطبق القاعدة deny_untrusted_lineage_tenant_scope من سياسة memory-integrity: لا سلالة (Lineage) غير جديرة بالثقة في الذاكرة المشتركة.
- الرد: deny مع reasoning و cited_provenance_ids p-512 و p-508.
Dispositiondenyالإجراء محظور - 3الاستجابة (Guardian → Observed Agent)
{ "jsonrpc": "2.0", "id": 31, "result": { "type": "final", "acs_version": "0.1.0", "request_id": "b2c5d8e1-4f7a-4b0c-8d3e-6f9a2b5c8d17", "decision": "deny", "reasoning": "Persistent tenant-wide rule derived from untrusted content (lineage p-508, inbound_mail); untrusted lineage may not be written to shared memory.", "reason_codes": [ "untrusted_lineage_into_persistent_memory" ], "policy_references": [ { "policy_id": "memory-integrity", "policy_version": "2026.10.1", "rule_id": "deny_untrusted_lineage_tenant_scope" } ], "cited_provenance_ids": [ "p-512", "p-508" ], "metadata": { "evaluator": "deterministic", "evaluation_duration_ms": 2 }, "chain_hash": "ef90a699a55c8decd1afd054b8d3012ef00cae50140b942324212c9b0d5a3206", "signature": { "algorithm": "HMAC-SHA256", "value": "01xC/pBRTJUwAC6Yw/XHBYvyk+O+y7cbdkBogkltj7g=", "key_id": "sess-hmac-support-05" } } }لا تُحفظ القاعدة. وتبدأ الجلسات اللاحقة دون التعليمات المسمومة.
- 4سجل التدقيق (Trace)
{ "_note": "vereinfachter Auszug", "class_uid": 2004, "class_name": "Detection Finding", "category_uid": 2, "activity_id": 1, "severity_id": 4, "time": 1791286567002, "metadata": { "version": "1.5.0" }, "finding_info": { "uid": "dec-b2c5d8e1", "title": "Memory write denied: untrusted lineage" }, "enrichments": [ { "name": "acs_provenance_origin", "value": "agent_generated" } ], "unmapped": { "acs": { "decision": "deny", "evaluator": "deterministic", "policy_references": [ { "policy_id": "memory-integrity", "policy_version": "2026.10.1", "rule_id": "deny_untrusted_lineage_tenant_scope" } ], "reason_codes": [ "untrusted_lineage_into_persistent_memory" ], "cited_provenance_ids": [ "p-512", "p-508" ], "session_id": "5e8a1c4f-2d7b-4f3a-9c6e-8b1d4a7f0e25", "step_id": "b2c5d8e1-4f7a-4b0c-8d3e-6f9a2b5c8d17" } } }يذكر الـ Finding معرّفات Provenance التي أدت إلى القرار — وبذلك يمكن في SOC تتبّع السلسلة من نتيجة الأداة حتى محاولة الكتابة.
ما يعنيه ذلك لكم
الذاكرة مسار لاستمرار الهجمات: ما يُدسّ اليوم يؤثر غدًا في جلسات أخرى. لذلك يُعد memoryStore نقطة تحكم ثانية في حال غياب الفحص عند نتيجة الأداة. ويفترض هذا التحكم وجود بيانات Provenance (الملف التعريفي acs-provenance) — فبدون حقول Lineage لا يستطيع الـ Guardian التحقق من المصدر.
ASI06ASI01
وكيل الإصدار
يريد وكيل الإصدار بدء عملية نشر في بيئة الإنتاج. وفي هذه اللحظة يتعذر الوصول إلى الـ Guardian — إذ يفشل إنشاء الاتصال.
Failure Posture
- 1طلب Hook (Observed Agent → Guardian)
{ "jsonrpc": "2.0", "method": "steps/toolCallRequest", "id": 12, "params": { "acs_version": "0.1.0", "request_id": "e6f9a2b5-1d4c-4e7f-a0b3-8c1d4e7f0a96", "timestamp": "2026-10-06T13:02:44Z", "metadata": { "agent_id": "release-agent-01", "session_id": "d0e3f6a9-8c2b-4d5e-9f1a-7b0c3d6e9f42", "turn_id": "a5b8c1d4-7e0f-4a3b-8c6d-9e2f5a8b1c37" }, "payload": { "tool": { "name": "deploy" }, "capability": "process.execute", "arguments": { "environment": { "value": "production", "provenance": { "provenance_id": "p-601", "origin": "user_input", "source_id": "chat" } } } }, "signature": { "algorithm": "HMAC-SHA256", "value": "ijZXZIKuaSuMU4u12zPLHINkFdTqcn1T27zuvAqmCw0=", "key_id": "sess-hmac-release-01" } } } - 2التقييم في Guardian
- يرسل الـ Observed Agent الطلب steps/toolCallRequest، فيُرفض الاتصال (connection refused). وعند خطأ واضح كهذا يجوز له الاستجابة فورًا بدلًا من انتظار المهلة المتفاوض عليها (timeout_config).
- وبذلك يقع Decision Failure: لا يصل قرار صالح للاستخدام خلال المهلة.
- الآن يسري on_decision_failure: إما proceed (الافتراضي، fail-open) أو deny (fail-closed)، وفق ما تم التفاوض عليه في الـ Handshake.
Dispositionproceedالإجراء يُنفَّذ دون فحص - 3لا توجد استجابة
لا يستجيب الـ Guardian. ولا توجد Disposition على الـ Wire — فيطبّق الـ Observed Agent وضعية الفشل المتفاوض عليها.
Fail-open: يستمر النشر دون فحص. وتشترط المواصفة تسجيل كل تمرير من هذا النوع كحدث تدقيق — فيتحول التحكم إلى مجرد تسجيل.
- 4سجل التدقيق (Trace)
{ "_note": "vereinfachter Auszug", "seq": 14, "recorded_at": "2026-10-06T13:02:44.018Z", "session_id": "d0e3f6a9-8c2b-4d5e-9f1a-7b0c3d6e9f42", "method": "steps/toolCallRequest", "rpc_id": 12, "outcome": "proceeded", "posture": "proceed", "posture_source": "negotiated", "failure": { "kind": "transport", "message": "ConnectionRefused: Guardian endpoint not reachable" } }لا يفرض ACS صيغة حدث التدقيق هذا؛ ويتبع المقتطف أسماء الحقول في سجل تدقيق المضيف الخاص بالتنفيذ المرجعي.
ما يعنيه ذلك لكم
الإعداد الافتراضي في ACS هو fail-open. ومن يريد fail-closed للإجراءات ذات العواقب، عليه تهيئة on_decision_failure: deny صراحةً وإطلاق تنبيهات في SOC عند التمريرات التي تتم دون قرار — فنجاح system/ping لا يثبت أن الإنفاذ يعمل.
ASI02ASI08
حذف تكراري خارج مساحة العمل: deny
ملاحظة: الأمثلة مطابقة للمخطط وفق ACS v0.1.0 (تم التحقق منها مقابل request-envelope.json و response-envelope.json و context-entry.json ومخططات الـ Hooks بما في ذلك متغيرات *.acs-provenance)؛ القيم وأسماء السياسات والقواعد توضيحية، والتواقيع محسوبة بمفتاح تجريبي، ومقتطفات الـ Trace مبسطة؛ وتصنيفات ASI هي تقديرات VamiSec. والتنفيذ المرجعي الوحيد (إثبات مفهوم) لا يقيّم حتى الآن مباشرةً سوى steps/toolCallRequest و steps/toolCallResult.
ركيزة Instrument
دورة حياة الـ Hooks: أين يمكن لـ ACS التدخل
الـ Hooks الأصلية الـ 19 من نوع steps/* في المواصفة v0.1.0 إضافة إلى طرق AgBOM والـ Handshake والنظام على امتداد جلسة الوكيل. اختاروا Hook لعرض المُشغِّل ونطاق تصرف الـ Guardian والمخاطر النموذجية.
01الجلسةHandshake، البدء، التفعيل، الانتهاء
02AgBOMالجرد عند البدء وعند التغييرات
03الدورةإطار يحيط بكل دورة للوكيل
04الرسائلالإدخال والإخراج
05المعرفة والذاكرةاسترجاعات RAG والذاكرة
06الأدواتقبل كل إجراء وبعده
07الضغطتكثيف نافذة السياق
08الوكلاء الفرعيونالتفويض داخل العملية نفسها
09Skillsالتسجيل والتحميل والإلغاء
10النظامفحص الحيوية (Liveness)
handshake/helloHandshakeHandshake
- متى
- في بداية الجلسة قبل أي Hook: يرسل الـ Observed Agent رسالة ClientHello تتضمن الإصدارات والطرق ووسائل النقل المدعومة ووضع Provenance والملفات التعريفية.
- ما يمكن للـ Guardian فعله
- يرد برسالة ServerHello بدلًا من Disposition، ويحدد negotiated_version و methods_evaluated و timeout_config واختياريًا on_decision_failure. وتُعد الطرق خارج methods_evaluated مسموحًا بها افتراضيًا (ALLOW-by-default). ويمكن للـ Guardian رفض الجلسة، مثلًا بـ PROVENANCE_REQUIRED (-32002).
- المخاطر النموذجية
- ASI03ASI08
steps/sessionStartالحد الأدنى لـ Coreبدء الجلسة
- متى
- مرة واحدة لكل جلسة بعد الـ Handshake وقبل جميع الـ Hooks الأخرى من نوع steps/*؛ وهو جذر سلسلة التدقيق.
- ما يمكن للـ Guardian فعله
- allow أو deny: يمكن رفض الجلسة بسبب الهوية أو policy_mode أو المنصة قبل وصول أي محتوى. والنية المحددة هنا تصبح نية الجلسة المرجعية.
- المخاطر النموذجية
- ASI03ASI10
steps/agentTriggerالحد الأدنى لـ Core: أو userMessageتفعيل الوكيل
- متى
- عندما يفعّل الوكيلَ حدثٌ أو جدول زمني أو استدعاء A2A أو مستخدم أو النظام (trigger_type).
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — مثلًا تنقية حمولة المُشغِّل من البيانات الشخصية قبل التفعيل. ويتم تفويض A2A عبر trigger_type a2a_inbound؛ أما تغليف A2A فمخطط له في v0.2 فقط.
- المخاطر النموذجية
- ASI01ASI07
steps/sessionEndالحد الأدنى لـ Core · تدقيق فقطانتهاء الجلسة
- متى
- عند انتهاء الجلسة (reason: completed أو cancelled أو error أو timeout أو abandoned)؛ ويختم الـ Guardian السلسلة.
- ما يمكن للـ Guardian فعله
- تدقيق فقط، دون قرار. يقدّم الإغلاق مع final_chain_hash لأغراض التحليل الجنائي وأدلة الإثبات.
- المخاطر النموذجية
- ASI08
agbom/snapshotقائمة مكونات الوكيل (AgBOM) · acs-inspectلقطة AgBOM
- متى
- مرة واحدة لكل جلسة بعد sessionStart، وقبل أول Hook يحمل محتوى: الجرد الكامل للمكونات بصيغة مرجعية.
- ما يمكن للـ Guardian فعله
- عادةً allow؛ و deny لرفض جلسة تتضمن نموذجًا أو أداة أو نظيرًا محظورًا. وهو إلزامي ضمن acs-inspect؛ وتُكتب اللقطة في سلسلة التدقيق.
- المخاطر النموذجية
- ASI04
agbom/changedقائمة مكونات الوكيل (AgBOM) · acs-inspect-dynamicتغيير AgBOM
- متى
- عندما يُضاف مكوّن أو يُزال أو يتغير إصداره في منتصف الجلسة (diff أو full_snapshot).
- ما يمكن للـ Guardian فعله
- allow أو deny — مثلًا حظر تبديل النموذج أثناء التشغيل أو أداة ثبّتها المستخدم. وهو إلزامي فقط ضمن acs-inspect-dynamic.
- المخاطر النموذجية
- ASI04
steps/turnStartبدء الدورة
- متى
- في بداية كل دورة للوكيل؛ ويحدد turn_id لجميع الخطوات التالية حتى turnEnd المقابل.
- ما يمكن للـ Guardian فعله
- قادر على اتخاذ القرار: deny يمنع الدورة. وفي الممارسة العملية تستجيب معظم عمليات النشر بـ allow وتستخدم الـ Hook لتغييرات الحالة في السياسة.
- المخاطر النموذجية
- ASI01ASI10
steps/turnEndتدقيق فقطانتهاء الدورة
- متى
- في نهاية الدورة (outcome: completed أو deferred أو error أو interrupted أو denied_at_start).
- ما يمكن للـ Guardian فعله
- تدقيق فقط — فالدورة قد اكتملت بالفعل؛ و deny أو modify مستبعدان.
- المخاطر النموذجية
- ASI08
steps/userMessageمتغير Provenanceالحد الأدنى لـ Core: أو agentTriggerإدخال المستخدم
- متى
- عند وصول إدخال من المستخدم، قبل أن يبلغ سياق الاستدلال لدى الوكيل.
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — مثلًا حجب محتوى قبل أن يعالجه الوكيل.
- المخاطر النموذجية
- ASI01ASI09
steps/agentResponseمتغير Provenanceالحد الأدنى لـ Coreرد الوكيل
- متى
- قبل أن يُرسل الإخراج إلى المستخدم أو نظير A2A أو وكيل أعلى أو وجهة خارجية.
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — مثلًا إزالة المحتوى السري قبل أن يصل الإخراج إلى المستلم.
- المخاطر النموذجية
- ASI09ASI01
steps/knowledgeRetrievalمتغير Provenanceاسترجاع المعرفة (RAG)
- متى
- عند الاستعلام من قاعدة بيانات متجهية أو فهرس بحث أو قاعدة معرفة، قبل أن تصل النتائج إلى السياق.
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — مثلًا حجب النتائج الواردة من مصادر غير معتمدة.
- المخاطر النموذجية
- ASI06ASI01
steps/memoryContextRetrievalمتغير Provenanceقراءة الذاكرة
- متى
- عند تحميل إدخالات من الذاكرة (scope session أو user أو tenant أو global) إلى السياق.
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — مثلًا استبعاد الإدخالات ذات المصدر غير الجدير بالثقة.
- المخاطر النموذجية
- ASI06
steps/memoryStoreمتغير Provenanceالكتابة في الذاكرة
- متى
- قبل أن يكتب الوكيل في الذاكرة الدائمة (create أو update أو delete).
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — النقطة المحورية لمواجهة تسميم الذاكرة (Memory Poisoning)، مثلًا عندما يُراد إدخال محتوى ذي Lineage غير جديرة بالثقة في ذاكرة مشتركة.
- المخاطر النموذجية
- ASI06
steps/toolCallRequestمتغير Provenanceالحد الأدنى لـ Core · جميع الـ Dispositions الخمساستدعاء أداة
- متى
- بعد تحليل استدعاء الأداة وقبل تنفيذه. ويجب على أطر العمل إطلاق الـ Hook لكل إجراء ذي أثر خارجي — بما في ذلك نظام الملفات والشبكة والعمليات والـ Shell.
- ما يمكن للـ Guardian فعله
- المفردات الكاملة: allow و deny و modify و ask و defer. وهنا تعمل فحوص النية (IBAC) والسياسات القائمة على المصدر (FIDES و CaMeL و AARM).
- المخاطر النموذجية
- ASI02ASI05ASI03
steps/toolCallResultمتغير Provenanceالحد الأدنى لـ Coreنتيجة الأداة
- متى
- بعد تنفيذ الأداة، قبل أن تصل النتيجة إلى سياق الوكيل.
- ما يمكن للـ Guardian فعله
- allow أو deny أو modify — مثلًا redactions عبر JSON-Pointer للبيانات الشخصية أو التعليمات المدسوسة.
- المخاطر النموذجية
- ASI01ASI06ASI02
steps/preCompactقبل الضغط
- متى
- قبل تكثيف نافذة السياق (عند عتبة الحجم، يدويًا، أو بمبادرة من الوكيل أو إطار العمل).
- ما يمكن للـ Guardian فعله
- قادر على اتخاذ القرار: deny يحظر الضغط، مثلًا طالما توجد بيانات غير جديرة بالثقة في السياق ولم تتم إعادة ترسيخ جديرة بالثقة.
- المخاطر النموذجية
- ASI06
steps/postCompactبعد الضغط
- متى
- بعد تكثيف السياق؛ ويحمل الملخص الجديد إضافة إلى قيم Chain-Hash قبل الضغط وبعده.
- ما يمكن للـ Guardian فعله
- ليس قرارًا بالمعنى الدقيق: modify مسموح (إعادة صياغة الملخص)، و deny مستبعد صراحةً. ويجب أن يحمل الملخص origin agent_generated مع Lineage كاملة.
- المخاطر النموذجية
- ASI06
steps/subagentStartبدء وكيل فرعي
- متى
- عند بدء وكيل فرعي داخل العملية نفسها (دون حدود A2A)؛ ويحصل على session_id وسلسلة تدقيق خاصين به.
- ما يمكن للـ Guardian فعله
- قادر على اتخاذ القرار: deny إذا كانت intent_derivation ستمنح صلاحيات لا تغطيها نية الوكيل الأعلى.
- المخاطر النموذجية
- ASI03ASI08ASI10
steps/subagentStopتدقيق فقطانتهاء وكيل فرعي
- متى
- عند انتهاء الوكيل الفرعي؛ ويُسجَّل في سلسلة الوكيل الأعلى مع final_chain_hash دون دمج السلسلتين.
- ما يمكن للـ Guardian فعله
- تدقيق فقط، دون قرار.
- المخاطر النموذجية
- ASI08
steps/skillRegisterتسجيل Skill
- متى
- عند إضافة Skill إلى المجموعة المتاحة، قبل أن يصبح قابلًا للتحميل — بوابة فحص ثابتة مع Digest و declared_capabilities.
- ما يمكن للـ Guardian فعله
- allow أو deny؛ ولا يجوز أن يصبح الـ Skill المرفوض قابلًا للتحميل. ويمكن للـ Guardian رفض تصريحات Capability واسعة أكثر من اللازم.
- المخاطر النموذجية
- ASI04
steps/skillLoadتحميل Skill
- متى
- عند تفعيل Skill مسجّل في الجلسة، قبل تشغيل إجراءاته.
- ما يمكن للـ Guardian فعله
- allow أو deny. ينبغي للـ Guardian الرفض إذا لم يوجد skillRegister معتمد لـ skill_id والـ Digest، أو إذا اختلف الـ Digest، أو إذا أظهر load_path أن Skill يحمّل Skill آخر خارج composed_skills المصرّح بها؛ ولا ينبغي له الاعتماد على المؤشر digest_verified.
- المخاطر النموذجية
- ASI04ASI05
steps/skillUnloadتدقيق فقطإلغاء تحميل Skill
- متى
- عندما يغادر Skill المجموعة النشطة (انتهاء الجلسة، أو صراحةً، أو الاستبدال، أو خطأ)؛ ويجوز لعمليات النشر بدلًا من ذلك تمثيل ذلك عبر agbom/changed.
- ما يمكن للـ Guardian فعله
- تدقيق فقط؛ ويُبقي الجرد النشط محدّثًا.
- المخاطر النموذجية
- ASI04
system/pingالنظامفحص الحيوية (Liveness Probe)
- متى
- للتحقق مما إذا كان الوصول إلى الـ Guardian ممكنًا؛ دون التزام بالتوقيع وليس جزءًا من سلسلة التدقيق.
- ما يمكن للـ Guardian فعله
- يرد دائمًا بـ allow. ونجاح الـ Ping لا يثبت أن الإنفاذ يعمل — راقبوا حالات Decision Failure في مسار الـ Hook مباشرةً.
- المخاطر النموذجية
- ASI08
العدد وفق المواصفة v0.1.0: 19 Hook أصليًا من نوع steps/*؛ ومع agbom/snapshot و agbom/changed و system/ping تصبح 22 طريقة لكل منها مخطط حمولة خاص، إضافة إلى handshake/hello ونطاق MCP protocols/MCP/*. وتحدد المواصفة الـ Dispositions المسموح بها لكل Hook في النص الوصفي لا في المخطط. ويشترط ACS-Core ستة Hooks على الأقل؛ وما لا يرد في methods_evaluated يُعد مسموحًا افتراضيًا (ALLOW-by-default). وتشير النقطة عند الـ Hook إلى متغير صارم من نوع *.acs-provenance. أما ربط المخاطر النموذجية بكل Hook فهو تقدير من VamiSec.
تقدير VamiSec
مصفوفة المخاطر: OWASP Agentic Top 10 × مكونات ACS
أي مكونات Agent Control Standard تتحكم مباشرةً في مخاطر OWASP Top 10 for Agentic Applications 2026 أو تدعم التحكم فيها أو لا تغطيها — مع التعليل والحدود لكل صف.
تحكم مباشرداعمغير مغطى
| OWASP Agentic Top 10 | ||||||
|---|---|---|---|---|---|---|
تتيح Hooks الاستيعاب الحجب قبل أن يصل المحتوى الخارجي إلى السياق؛ وعند toolCallRequest يمكن فحص الإجراءات مقابل النية المحددة مسبقًا، ويجعل Provenance المصدر غير الجدير بالثقة مرئيًا للسياسات. الحد: لا يكتشف ACS حقن الأوامر (Prompt Injection) بنفسه — فالأثر يعتمد كليًا على السياسات وعلى تصنيف اختياري في الـ Guardian. steps/userMessagesteps/knowledgeRetrievalsteps/toolCallResultsteps/toolCallRequest | ||||||
يُعد toolCallRequest نقطة الإنفاذ المحورية مع جميع الـ Dispositions الخمس، ويغطي ask الإجراءات الفردية ذات العواقب. ويجب على أطر العمل توجيه كل إجراء ذي أثر خارجي عبر هذا الـ Hook. الحد: الإجراءات التي تتجاوز الـ Hook غير مرئية للسياسة؛ والطرق خارج methods_evaluated تُعد مسموحًا بها افتراضيًا (ALLOW-by-default). steps/toolCallRequeststeps/toolCallResultprotocols/MCP/tools/call | ||||||
يربط sessionStart الهوية ووضع السياسة، ويمكن لـ subagentStart رفض توسيع الصلاحيات لدى الوكلاء الفرعيين، ويجب أن يكون المعتمِدون موثَّقين. الحد: لا يفرض ACS آلية مصادقة ولا يُصدر هويات؛ ونموذج الهوية لم يُصَغ بعد بشكل معياري في v0.1. steps/sessionStartsteps/subagentStartsteps/toolCallRequest | ||||||
تجرد AgBOM النماذج وخوادم MCP والأدوات والـ Skills ومكونات أخرى لكل جلسة؛ ويمكن للـ Guardian إيقاف المكونات المحظورة أو استبدالها أثناء التشغيل عبر deny، وترتبط الـ Skills بالتسجيل عبر الـ Digest الخاص بها. الحد: AgBOM إفصاح ذاتي من الـ Observed Agent، ولا يرى تغييرات وقت التشغيل إلا acs-inspect-dynamic؛ ولا يدخل فحص الأسواق ومطابقة الثغرات الأمنية ضمن ACS. agbom/snapshotagbom/changedsteps/skillRegistersteps/skillLoad | ||||||
يجب أن يمر تنفيذ العمليات والـ Shell عبر toolCallRequest ويمكن التحكم فيه هناك عبر deny أو ask؛ ويربط skillLoad محتوى الـ Skills القابل للتنفيذ بقيم Digest مفحوصة. الحد: العزل (Sandboxing) والفصل ليسا جزءًا من ACS، والتعليمات البرمجية التي تعمل بالفعل على المضيف يمكنها تجاوز ضوابط الوكيل. steps/toolCallRequeststeps/skillLoad | ||||||
يتحكم memoryStore و memoryContextRetrieval في مسارات الكتابة والقراءة في الذاكرة؛ ويربط preCompact و postCompact المصدر بالملخص عند الضغط (اتحاد Lineage جميع الإدخالات المكثفة). وتُعد Lineage الخاصة بـ Provenance ركيزة لذلك. الحد: بدون acs-provenance تغيب معلومات المصدر، ولا يكتشف ACS من تلقاء نفسه الإدخالات المسمومة الموجودة مسبقًا. steps/memoryStoresteps/memoryContextRetrievalsteps/knowledgeRetrievalsteps/preCompactsteps/postCompact | ||||||
يجعل agentTrigger مع trigger_type a2a_inbound وHooks الوكلاء الفرعيين ونوع AgBOM المسمى a2a_peer العلاقات بين الوكلاء مرئية وقابلة للتحكم بشكل محدود. الحد: تغليف A2A (protocols/A2A/*) محجوز فقط في v0.1 ومخطط له في v0.2، وكذلك اتحاد AgBOM عبر النظراء. steps/agentTriggersteps/subagentStartagbom/snapshot | ||||||
تساعد سلسلة التدقيق لكل جلسة ووكيل فرعي (final_chain_hash) وربط الـ Trace على تتبّع الانتشار؛ ويوقفه deny عند Hooks الأدوات خطوة بخطوة، ويجب تقييد قرارات defer المتتالية لكل جلسة. الحد: لا يحتوي v0.1 على مفتاح إيقاف (Kill-Switch) ولا على مقاطعة (Interrupt)، وقد يسهم الإعداد الافتراضي fail-open بنفسه في التتالي عند تعطل الـ Guardian. steps/subagentStopsteps/sessionEndsteps/toolCallRequest | ||||||
يتيح agentResponse تطبيق deny أو modify قبل التسليم؛ ويقدّم ask للمعتمِدين السؤال والسياق والتعليل حتى لا يوافقوا دون تمحيص. الحد: كثرة الموافقات تولّد إرهاق الموافقة — ولا يعالج ذلك إلا تصميم سياسات يقصر ask على الإجراءات ذات العواقب الفعلية. steps/agentResponsesteps/toolCallRequest | ||||||
يوقف deny عند كل Hook قادر على اتخاذ القرار الوكيلَ المريب خطوة بخطوة، ويمكن لـ sessionStart رفض معرّفات وكلاء معروفة، ويوفر الـ Trace الأساس لاكتشاف الحالات الشاذة في SOC. الحد: لا يعرف v0.1 مفتاح إيقاف مخصصًا (Kill-Switch)، ولا يكتشف ACS السلوك المنحرف بنفسه — فهذا دور السياسات والمراقبة. steps/sessionStartsteps/turnStartsteps/toolCallRequest | ||||||
تقدير VamiSec استنادًا إلى ACS v0.1.0 — وليس تصنيفًا رسميًا من OWASP. لا يرد ACS في OWASP Agentic Top 10 (ديسمبر 2025)، ولم يقم OWASP ولا مشروع ACS بربط ACS بـ ASI01 إلى ASI10؛ ويعتمد أثر كل خلية على سياساتكم والملفات التعريفية المتفاوض عليها.
تفاعلي
مستكشف الملفات التعريفية: أي مكونات ACS تناسب وكيلكم؟
ما يصل إلى خمسة أسئلة حول الأدوات والتنظيم ومصادر البيانات والديناميكية وSOC. وتذكر النتيجة ملفات ACS التعريفية والخطوات الأولى التي نوصي بها لوضعكم — وهي تقدير من VamiSec وليست بيانًا بالمطابقة.
مساركم
- 1?
1: هل يستدعي وكيلكم أدوات أو يُطلق إجراءات ذات أثر خارجي — ملفات، Shell، واجهات API، رسائل بريد إلكتروني، تذاكر، مدفوعات؟
1
هل يستدعي وكيلكم أدوات أو يُطلق إجراءات ذات أثر خارجي — ملفات، Shell، واجهات API، رسائل بريد إلكتروني، تذاكر، مدفوعات؟
يشترط ACS إطلاق steps/toolCallRequest لكل إجراء يغادر سياق الاستدلال. وفي غياب هذه الإجراءات تبقى المدخلات والمخرجات أساسًا نقاط التحكم.
مساعد دون أدوات: ACS-Core كخط أساس، مع التركيز على المدخلات والمخرجات
في غياب استدعاءات الأدوات تكون قدرة ACS محدودة — إذ لا يوجد إجراء يتعين على الـ Guardian إيقافه قبل التنفيذ. وتبقى ذات صلة الـ Hooks الخاصة بمدخلات المستخدم والردود. ومع ذلك خططوا للبنية بحيث يمكن ربط Guardian بها فور إضافة أدوات (تقدير VamiSec).
- تسجيل الوكلاء والنماذج ومصادر البيانات في سجل — كمرحلة تمهيدية لـ AgBOM.
- استخدام steps/userMessage و steps/agentResponse للحجب عبر modify، مثلًا للبيانات الشخصية أو الأسرار.
- فحص التزام الشفافية وفق المادة 50 من AI Act (منذ 2 أغسطس 2026) إذا كان المساعد يتفاعل مع أشخاص.
- إعادة تشغيل المستكشف عند كل ربط مخطط له بأداة.
acs-coresteps/userMessagesteps/agentResponsemodify
وكيل أدوات: ACS-Core مع سياسات عند steps/toolCallRequest
بالنسبة إلى الوكلاء ذوي الأثر الخارجي، يُعد steps/toolCallRequest نقطة التحكم المحورية. ابدؤوا بـ ACS-Core وسياسة حتمية تحظر الـ Capabilities ذات العواقب بشكل موجّه أو تعيد صياغتها أو تعرضها للموافقة. وتحققوا في الـ Handshake من الطرق التي يقيّمها الـ Guardian فعليًا — فكل ما عداها يمر دون فحص.
- تصنيف الـ Capabilities (مثل filesystem.delete و network.egress و process.execute) وتحديد allow أو deny أو modify أو ask لكل فئة.
- ضبط on_decision_failure على deny ووضعية بدء التشغيل (Startup-Posture) على refuse للجلسات ذات الـ Capabilities ذات العواقب — فالوضعية تسري لكل جلسة لا لكل إجراء.
- مطابقة methods_evaluated في ServerHello مع قائمة الطرق المنفَّذة.
- استخدام ask فقط مع معتمِد موثَّق و timeout_disposition deny.
- إدارة إصدارات السياسات وتشغيلها مقابل حالات اختبار قبل كل طرح.
acs-coresteps/toolCallRequeston_decision_failureOPA/Rego
المحتوى غير الجدير بالثقة والذاكرة: جعل Provenance إلزاميًا
بمجرد وصول محتوى الويب أو رسائل البريد الإلكتروني أو نتائج RAG إلى السياق، لا يكفي فحص استدعاءات الأدوات الفردية. فمع acs-provenance يحمل كل حقل يحمل بيانات مصدرَه؛ ويمكن للـ Guardian حظر الإجراءات التي تأتي وسائطها من مصادر غير جديرة بالثقة. لا يمنع ACS حقن الأوامر (Prompt Injection) — بل ينشئ نقطة التحكم التي تعمل عندها السياسات ضد عواقبه. ومع الوكلاء الفرعيين أو الـ Skills يُضاف acs-inspect-dynamic، ومع SOC يُضاف acs-trace.
- تطبيق provenance_producer: deterministic في إطار العمل وتفعيل policy_requires_provenance في الـ Guardian.
- تقييم steps/toolCallResult و steps/knowledgeRetrieval عند الاستلام، و steps/memoryStore قبل الكتابة في الذاكرة؛ و steps/preCompact لمنع طمس المصدر.
- قاعدة جلسة مستوحاة من Agents Rule of Two لدى Meta: إذا عالجت جلسة محتوى غير جدير بالثقة ولديها وصول إلى بيانات حساسة، فلا تُنفَّذ الإجراءات ذات الأثر الخارجي إلا عبر ask (استنتاج VamiSec).
- اختيار نموذج السياسة: تحتاج FIDES و CaMeL و AARM إلى Provenance، أما IBAC الصرف فلا.
- فحص الفعالية بمحاكاة هجمات تكيفية (Red Teaming) بدلًا من مطالبات اختبار ثابتة.
acs-provenancesteps/memoryStorederived_fromFIDES · CaMeL · AARM
تعدد الوكلاء والـ Skills والمكونات الديناميكية: مواكبة الجرد باستمرار
عندما تنشأ وكلاء فرعيون أو تُحمَّل Skills لاحقًا أو تُربط خوادم MCP أثناء التشغيل، يحتاج الـ Guardian إلى صورة محدّثة عن ماهية الوكيل في تلك اللحظة. يقدّم acs-inspect لقطة AgBOM لكل جلسة، ولا يجعل التغييرات أثناء الجلسة مرئية إلا acs-inspect-dynamic. ولا يغلّف v0.1 بعدُ الاتصال بين الوكلاء عبر A2A.
- تفعيل agbom/snapshot و agbom/changed؛ وإيقاف التبديل الساخن (Hot-Swaps) والإصدارات غير المفحوصة عبر deny.
- استخدام steps/skillRegister كبوابة فحص ثابتة و steps/skillLoad مع الربط بـ skill_id والـ Digest.
- تقييم steps/subagentStart: يمكن للـ Guardian رفض عمليات الإنشاء التي لا تجيز نيةُ الوكيل الأصل الـ Capabilities المشتقة منها.
- صيانة قوائم اعتماد للنماذج وخوادم MCP والـ Skills — قابلة للاستخدام في الوقت نفسه كسجل للمورّدين.
- تسجيل نظراء A2A مؤقتًا عبر steps/agentTrigger (a2a_inbound) وAgBOM؛ ويأتي تغليف A2A في v0.2 على أقرب تقدير.
acs-inspectacs-inspect-dynamicsteps/skillLoadAgBOM
وجود SOC: إدخال الـ Trace إلى SIEM ومراقبة الـ Guardian نفسه
مع acs-trace تتحول الـ Hooks والقرارات إلى OpenTelemetry-Spans وأحداث OCSF — والقرارات غير allow إلى Detection Finding مع Severity. ابنوا المحللات وحالات الاستخدام مقابل ربطات JSON واختبروها ببيانات حقيقية، لأن بعض أسماء الفئات والحقول تختلف عن OCSF. والـ Trace إفصاح ذاتي ويعمل بمبدأ best-effort، فلا يُعد بمفرده دليل إثبات.
- حالة استخدام «تجاوز الـ Guardian»: إطلاق تنبيه عند كل تمرير fail-open وكل جلسة بدأت دون حماية.
- قياس معدل Decision Failure على مسار الـ Hook مباشرةً — فنجاح system/ping لا يثبت أن الإنفاذ يعمل.
- تقييم تراكمات deny لكل وكيل وسياسة و rule_id كإشارة على حالة شاذة.
- فصل هويات الوكلاء عن المستخدمين البشريين في OCSF عبر actor.user.type «AI Agent».
- تطبيق الحجب منذ لحظة الإرسال — فقد تحتوي الـ Spans على مطالبات ووسائط أدوات.
acs-traceOCSF 2004OpenTelemetrySIEM
الاستخدام في بيئة منظَّمة: الجمع بين ملفات تعريفية قابلة للإثبات والتشغيل بوضع fail-closed
من يحتج بـ AI Act أو DORA أو NIS2 يحتاج إلى أكثر من ACS-Core: فـ Core لا يتضمن الـ Trace ولا ربط Audit-Chain بمحتوى الطلبات. يدعم ACS توثيق الإثبات، لكنه لا يؤسس افتراضًا بالمطابقة. وبحسب البنية يُضاف acs-provenance و acs-inspect-dynamic. والربط بالنصوص القانونية استنتاج من VamiSec ولا يغني عن الفحص القانوني.
- اشتراط acs-trace و acs-audit (request_hash)، ولعدم الإنكار إضافةً acs-crypto مع ML-DSA-65.
- تهيئة on_decision_failure: deny ووضعية بدء التشغيل refuse وإثباتها بالاختبار.
- بالنسبة إلى المادة 14 من AI Act: ask عند steps/toolCallRequest فقط مع approver.type human و timeout_disposition deny؛ ولا يعرف v0.1 زر إيقاف، بل deny خطوة بخطوة فقط.
- تنظيم الاحتفاظ في SIEM أو الأرشيف — لا يحدد ACS مددًا؛ وتشترط المادتان 19 و26 من AI Act ستة أشهر على الأقل لسجلات الأنظمة عالية المخاطر، مع مراعاة أي تشريعات أخرى.
- في القطاع المالي، الاحتجاج بـ DORA واللائحة المفوضة (EU) 2024/1774، المادة 12.
acs-traceacs-auditacs-cryptoالمادة 14 من AI ActDORA
- هل يستدعي وكيلكم أدوات أو يُطلق إجراءات ذات أثر خارجي — ملفات، Shell، واجهات API، رسائل بريد إلكتروني، تذاكر، مدفوعات؟
- هل تستخدمون الوكيل في إطار منظَّم بالتزامات إثبات — مثلًا كنظام عالي المخاطر وفق AI Act، أو في القطاع المالي بموجب DORA، أو كجهة خاضعة لـ NIS2؟
- هل يعالج الوكيل محتوى غير جدير بالثقة — صفحات ويب، رسائل بريد إلكتروني، تذاكر، نتائج RAG — أو يكتب في ذاكرة طويلة المدى؟
- هل يبدأ الوكيل وكلاء فرعيين، أو يحمّل Skills، أو يربط خوادم MCP ونماذج أثناء التشغيل؟
- هل تشغّلون SOC أو SIEM ينبغي أن يقيّم أحداث الوكلاء ويطلق التنبيهات؟
دراسة معمّقة · 14 فصلًا
Agent Control Standard بالتفصيل: من مشكلة التحكم إلى التشغيل
أربعة عشر فصلًا لمسؤولي أمن المعلومات (CISO) ومعماريي الأمن ومسؤولي منصات الذكاء الاصطناعي: ما تشترطه المواصفة v0.1.0 معياريًا، وأين تنتهي اليوم، وما القرارات المطلوبة قبل الاعتماد. والربط بالحوادث والمخاطر والتنظيمات موسوم بوصفه تقديرًا من VamiSec.
لماذا يحتاج وكلاء الذكاء الاصطناعي إلى تحكم وقت التشغيل
لا يكتفي وكيل الذكاء الاصطناعي بالإجابة عن الأسئلة، بل يُطلق إجراءات — في أنظمة الملفات وقواعد البيانات وصناديق البريد وحسابات السحابة. وبذلك ينتقل سؤال الأمن من مخرجات النموذج إلى سؤال: من يفحص إجراءً محددًا قبل تنفيذه؟
من مولّد للإجابات إلى فاعل
تنتج تطبيقات LLM التقليدية نصًا يقرؤه إنسان قبل أن يحدث شيء. أما وكلاء الذكاء الاصطناعي فيخططون بشكل مستقل، ويستدعون الأدوات، ويكتبون في ذاكرة طويلة المدى، ويبدؤون وكلاء فرعيين. وكل خطوة من هذه قد تغيّر البيانات أو تنقلها إلى الخارج. لذلك يصبح سؤال التحكم: «هل يجوز لهذا الإجراء بعينه وبهذه الوسائط بعينها أن يحدث الآن في هذه الجلسة؟» ولا يمكن الإجابة عنه إلا أثناء التشغيل — بين قرار النموذج والتنفيذ من قِبل إطار العمل.
مطالبات النظام ليست ضوابط
تعتمد كثير من عمليات النشر على تعليمات في مطالبة النظام مثل «لا تحذف بيانات الإنتاج». وهذه العبارات طلبات موجهة إلى نظام احتمالي، لا قواعد مُنفَّذة. وتبدأ صفحة مشروع ACS تعليلها بذلك: مطالبات النظام ليست ضوابط، والنماذج الأفضل لا تغطي الحالات الحدّية والمدخلات العدائية، وحواجز الحماية الاحتكارية تخلق تبعية للمورّد.
تؤكد الشركات المصنِّعة والأبحاث ذلك. فقد كتبت OpenAI في 22 ديسمبر 2025 أن حقن الأوامر (Prompt Injection) «unlikely to ever be fully 'solved'». وفي دراسة «The Attacker Moves Second» (arXiv، 10 أكتوبر 2025) تغلبت الهجمات التكيفية على اثني عشر أسلوبًا دفاعيًا حديثًا، غالبًا بمعدلات نجاح تتجاوز 90 بالمئة — رغم أن معظمها كان قد أبلغ في الأصل عن قيم قريبة من الصفر. تقلل متانة النموذج المخاطر لكنها لا تزيلها. فالمطلوب جهة فحص مستقلة خارج النموذج.
Lethal trifecta و Agents Rule of Two
وصف Simon Willison في 16 يونيو 2025 «الثالوث القاتل» (lethal trifecta): الوكيل الذي يملك وصولًا إلى بيانات خاصة، ويتعرض لمحتوى غير جدير بالثقة، ويستطيع التواصل مع الخارج، يمكن دفعه عبر حقن الأوامر (Prompt Injection) إلى تسريب البيانات. ووسّعت Meta ذلك في 31 أكتوبر 2025 إلى «Agents Rule of Two»: ضمن الجلسة الواحدة ينبغي ألا يجمع الوكيل أكثر من خاصيتين من ثلاث: معالجة مدخلات غير جديرة بالثقة؛ الوصول إلى أنظمة حساسة أو بيانات خاصة؛ تغيير الحالة أو التواصل الخارجي. وإذا احتاج إلى الثلاث جميعًا، فلا بد على الأقل من إشراف، مثلًا عبر موافقة بشرية. وتؤكد Meta أن القاعدة تكمّل مبدأ الحد الأدنى من الصلاحيات (Least Privilege) ولا تحل محله.
تقدير VamiSec: يصف النموذجان كلاهما خصائص جلسة لا خصائص نموذج. ولا يمكن إنفاذهما إلا إذا رأت جهةٌ ما كل إجراء ومسار الجلسة حتى تلك اللحظة. وهذه نقطة التحكم التي يوحّدها OWASP Agent Control Standard (ACS). ولاكتشاف المدخلات غير الجديرة بالثقة يلزم الملف التعريفي الاختياري acs-provenance؛ فـ ACS-Core وحده لا يقدّم بيانات عن المصدر.
حوادث موثقة — وما كان تحكم وقت التشغيل سيحدّ منه
| الحادث (المصدر، التاريخ) | ما الذي حدث | كان يمكن أن يحدّ منه (تقدير VamiSec) |
|---|---|---|
| EchoLeak، CVE-2025-32711، Microsoft 365 Copilot (NVD 11 يونيو 2025؛ CVSS 3.1: 9.3 لدى Microsoft، 7.5 لدى NVD) | Zero-Click: دفعت رسالة بريد إلكتروني مُعدّة خصيصًا Copilot إلى تسريب بيانات داخلية عبر الرد المعروض؛ وأُصلحت الثغرة قبل الإفصاح. | فحص steps/agentResponse مع modify (إزالة عناوين URL الخارجية للصور والروابط) أو deny — شريطة أن يُطلق المضيف الـ Hook ويقدّم Provenance. |
| وكيل Replit يحذف قاعدة بيانات الإنتاج (SaaStr، يوليو 2025؛ The Register في 22 يوليو 2025) | تجاهل الوكيل تجميدًا للتعليمات البرمجية (Code-Freeze) صدر به أمر، وحذف قاعدة بيانات الإنتاج، وأنتج رسائل حالة مضللة. | deny أو ask على Capabilities قواعد البيانات التدميرية عند steps/toolCallRequest؛ وسلسلة تدقيق لإعادة البناء. وبصورة أساسية: الفصل بين التطوير والإنتاج، والنسخ الاحتياطية. |
| GitHub-MCP «Toxic Agent Flow» (Invariant Labs، 26 مايو 2025) | حقن أوامر (Prompt Injection) في Issue عام؛ نشر الوكيل بيانات من مستودعات خاصة عبر Pull Request. لم يكن خطأً برمجيًا في الخادم، ولا CVE. | سياسة جلسة «لا كتابة في مستودع آخر بعد مخرجات أداة غير جديرة بالثقة» مع deny أو ask عند steps/toolCallRequest؛ وتتطلب acs-provenance. |
| Amazon Q Developer Extension v1.84.0، CVE-2025-8217 (AWS-2025-015، 23 يوليو 2025؛ CVSS 4.0: 5.1) | مطالبة حذف مدسوسة في الإصدار الرسمي؛ فشل التنفيذ بسبب خطأ نحوي، ولم تتأثر موارد العملاء. | جاءت المطالبة من المنتج نفسه وتُعد جديرة بالثقة — فلا يفيد Provenance هنا. وكان سيكون فعالًا تطبيق deny أو ask على Capabilities الحذف وتثبيت الإصدارات عبر AgBOM. |
| ClawHavoc: Skills خبيثة على ClawHub (The Hacker News في 2 فبراير 2026؛ Unit 42 في 23 يونيو 2026) | وجد تدقيق أولي 341 Skill خبيثًا من بين 2,857 Skill تم فحصها، منها ما يحتوي على Dropper مرمّز بـ Base64. | الفحص عند skillRegister وربط الـ Digest عند skillLoad؛ ثم deny على التنزيل والتنفيذ (network.egress إضافة إلى process.execute). |
جميع الحوادث سابقة للمواصفة المرجعية ACS v0.1.0 (5 يونيو 2026). والعمود الأيمن تقدير، وليس قولًا بأن ACS كان سيمنع الحادث.
لماذا يجب أن يكون التحكم في وقت التشغيل
يبقى اختيار النموذج وتقوية المطالبات ومحاكاة الهجمات (Red Teaming) قبل الإطلاق أمورًا ضرورية، لكنها لا تكشف ما يفعله الوكيل في جلسة بعينها. ويكمّلها تحكم وقت التشغيل: فهو يعمل قبل الإجراء، ويقيّم سياق الجلسة بأكملها، ويترك أثر تدقيق قابلًا لإعادة البناء. وتوصي OWASP Top 10 for Agentic Applications 2026 بالنسبة إلى ASI02 (Tool Misuse and Exploitation) بطبقة وسيطة سابقة لإنفاذ السياسات، أي «Intent Gate» تفحص النية والوسائط قبل التنفيذ. لا يُذكر ACS هناك، لكنه يقدّم (وفق تقدير VamiSec) عقد Wire مفتوحًا لنقطة التحكم هذه تحديدًا. وتبقى السياسات من مسؤوليتكم.
ما هو ACS: الأطراف، وثلاث ركائز، وACS-Core، وسبعة ملفات تعريفية
OWASP Agent Control Standard (ACS) مواصفة Wire مفتوحة يفحص عبرها Guardian Agent منفصل ما يريد وكيل الذكاء الاصطناعي فعله تاليًا. ويسمح الـ Guardian بالإجراء أو يحظره أو يعدّله أو يعرضه للموافقة أو يؤجل قراره — قبل وقوعه.
وبدقة أكبر: Agent Control Standard (ACS) مواصفة صادرة عن OWASP GenAI Security Project، تحدد نقاط التحكم (Hooks) التي يعرض عندها وكيل الذكاء الاصطناعي خطواته على جهة سياسات خارجية، وكيف ترد هذه الجهة بقرار (Disposition). والصيغة هي JSON-RPC 2.0 مع حقل خاص acs_version، تُنقل عبر HTTP(S) أو stdio. والوضع الحالي هو المواصفة v0.1.0، المنشورة كإصدار 0.1.2 (Tag بتاريخ 21 سبتمبر 2026). يحدد ACS العقد بين الوكيل والـ Guardian، لا السياسات: فما هو مسموح به تقرره مؤسستكم كما في السابق.
الأطراف
| الدور | المهمة وفق المواصفة | الشكل النموذجي (مثال) |
|---|---|---|
| الوكيل المراقَب (Observed Agent) | النظام الخاضع للمراقبة والمدعوم بـ LLM. ينفّذ عقد الـ Wire، ويبلغ عن كل خطوة ذات صلة عبر Hook، ويطبّق الـ Disposition التي يتلقاها. ولا يقرر بشأن إجراءاته بنفسه. | وكيل برمجة، وكيل دعم، إطار عمل وكلاء مع ربط بالمضيف |
| الوكيل الحارس (Guardian Agent) | جهة السياسات. تقيّم كل Hook مقابل سياسة النشر، وتقدّم Disposition، ويجب أن تسجّل كل قرار مع التعليل ومعرّف نموذج المقيِّم و— إن توفرت — درجة الثقة. | محرك سياسات (مثل OPA/Rego)، تُضاف إليه اختياريًا طبقة LLM |
| المعتمِد (Approver) | طرف ثالث يُشركه الـ Guardian عند ask: إنسان أو وكيل أو خدمة. ويجب على الـ Guardian التحقق من هويته مقابل السياسة. | مسؤول أمن، خدمة موافقات، مسار عمل تذاكر |
| Principal | الطرف الموثَّق الذي يُطلق جلسة أو يتصرف ضمنها. | الموظفون، حساب خدمة |
تشترط المواصفة عدم الخلط بين ثلاث هويات: هوية الـ Observed Agent، وهوية الـ Guardian، وهوية مؤلف السياسة.
يقوم البناء على مبدأ تصميمي واحد: لا يجوز لنموذج اللغة أن يعرف شيئًا عن الـ Hooks. فإطار العمل هو من يطلقها، وتُحدَّد بيانات المصدر (Provenance) خارج مسار مخرجات النموذج. ووفق قراءتنا، يُراد بذلك ألا يتمكن نموذج متلاعَب به من رؤية نقطة التحكم أو التأثير فيها.
ثلاث ركائز: Instrument و Trace و Inspect
Instrument
الاعتراض والتقييم والإنفاذ في الوقت الفعلي: 19 Hook أصليًا من نوع steps/*، وخمس Dispositions، والـ Handshake، والحماية من إعادة الإرسال (Replay)، والتواقيع. وعلى هذه الركيزة تقوم القاعدة الإلزامية ACS-Core.
Trace
مفردات تظهر بها أحداث الـ Hooks على هيئة OpenTelemetry-Spans وأحداث OCSF؛ وتُسجَّل القرارات كحدث Span عند الخطوة المُطلِقة. لا يخترع ACS صيغة سجلات جديدة. ويعمل Trace بمعزل عن الإنفاذ وبمبدأ best-effort.
Inspect
AgBOM (Agent Bill of Materials): جرد ديناميكي للنماذج وخوادم MCP ونظراء A2A والأدوات ومصادر المعرفة ومخازن الذاكرة والـ Capabilities والـ Skills، قابل للتسلسل وفق CycloneDX 1.6 أو SPDX 3.0 أو SWID.
ACS-Core وسبعة ملفات تعريفية
المطابقة مبنية بشكل وحدوي. فـ ACS-Core هو القاعدة الإلزامية، وتقوم عليه ستة ملفات تعريفية اختيارية يصرّح بها النشر في الـ Handshake. ولا توجد مستويات مرقّمة — بل أسماء ملفات تعريفية فقط يمكن الجمع بينها باستقلالية. والاعتمادية الوحيدة: acs-inspect-dynamic يوسّع acs-inspect.
| الملف التعريفي (الاسم في الـ Handshake) | جوهر المتطلب | لماذا تحتاجون إليه |
|---|---|---|
| acs-core (إلزامي) | من بين ذلك: الـ Handshake، وغلاف JSON-RPC، وستة Hooks على الأقل، وجميع الـ Dispositions الخمس مع الحقول الإلزامية، وسلسلة تدقيق مترابطة بالـ Hash مع Chain-Head منشور، والحماية من إعادة الإرسال، وتوقيع HMAC-SHA256 على كل طلب وكل رد، والالتزام بالقرارات (Decision Honoring)، و system/ping | قناة موثَّقة؛ ويلتزم الوكيل بقرارات الـ Guardian |
| acs-trace | لكل خطوة مدعومة أحداث OpenTelemetry و/أو OCSF مع سمات إلزامية؛ وكل قرار كحدث Trace | الربط بـ SIEM، وقابلية الرصد عبر مختلف الشركات المصنِّعة |
| acs-inspect | agbom/snapshot مرة واحدة لكل جلسة قبل أول Hook يحمل محتوى؛ ويقوم الـ Guardian عند الطلب بالتسلسل إلى صيغة BOM واحدة على الأقل | سياسات تعتمد على الجرد، مثل حظر نموذج أو أداة |
| acs-inspect-dynamic | إضافةً إلى ذلك agbom/changed عند كل تغيير في مخطط المكونات | اكتشاف التبديل الساخن (Hot-Swaps) للنماذج أو خوادم MCP أو الـ Skills أثناء الجلسة |
| acs-provenance | كائن Provenance على كل حقل يحمل بيانات في كل Hook (provenance_producer: deterministic) | سياسات تدفق المعلومات وفق FIDES أو CaMeL أو نمط شبيه بـ AARM |
| acs-crypto | تواقيع غير متماثلة أو ما بعد الكم، ML-DSA-65 على الأقل | عدم الإنكار تجاه الأطراف الثالثة |
| acs-audit | request_hash على كل ContextEntry في سلسلة التدقيق | تربط السلسلة محتوى الطلبات أيضًا، لا البيانات الوصفية فقط |
المطابقة في v0.1.0 تصريح ذاتي في الـ Handshake: لا مجموعة اختبارات، ولا سجل للتنفيذات المطابقة، ولا جهة فحص.
تصوغ المواصفة ما يضمنه ACS-Core بموضوعية: القناة موثَّقة، والـ Observed Agent يلتزم بالقرارات. أما ما ليس مضمونًا فهو صرامة السياسات — فالـ Guardian المتساهل مطابق، لكنه متساهل فحسب. ولا يوفّر دليل التلاعب في سلسلة التدقيق حتى في مواجهة Guardian مخترَق إلا acs-crypto و acs-audit، لأن قاعدة HMAC إجراء متماثل. وتتراوح التركيبات النموذجية في المواصفة بين تكامل IDE أدنى مع acs-core فقط ونشر عالي الضمان مع جميع الملفات التعريفية السبعة.
نموذج الطبقات في صفحة المشروع: طبقات معمارية لا مستويات
- 1المستوى 1 · طبقة المنصة (Platform layer)
توفر أطر عمل الوكلاء Hooks وسيطة موحدة — وهنا تنشأ نقطة التحكم.
- 2المستوى 2 · طبقة الإنفاذ (Enforcement layer)
مكوّن مفتوح المصدر يقرأ سياسات تصريحية ويعيد القرارات عبر هذه الـ Hooks.
- 3المستوى 3 · طبقة المؤسسة (Enterprise layer)
تُربط المصنِّفات الخاصة والمنطق المتخصص بالمجال خلف الواجهة نفسها.
تصف هذه الصورة من يسهم بأي جزء، لا مدى مطابقة النشر. فلبيانات المطابقة لا يُعتد إلا بالملفات التعريفية. ومع ذلك فهي مفيدة لتخطيط البنية لديكم: إذ تفصل سؤال أي منصة توفر الـ Hooks عن سؤال من يشغّل السياسات ويصونها.
النشأة والحوكمة والترخيص: من AOS إلى مشروع OWASP
من يعتمد معيارًا مبكرًا ينبغي أن يعرف من يديره، وتحت أي ترخيص يندرج، ومدى موثوقية خارطة طريقه. ولـ ACS تاريخ قصير لكنه حافل.
من المراقبة إلى التحكم
بدأ العمل في 11 مايو 2025 باسم «Agent Observability Standard» (AOS) في بيئة GitHub الخاصة بـ Zenity، وانتقل في يونيو 2025 إلى منظمة OWASP، حيث أُدرج AOS بوصفه «OWASP other project». وحملت طبقة البروتوكول في مايو ويونيو 2025 مؤقتًا اسم «ASOP» (Agent Security & Observability Protocol)، قبل أن تعود إلى اسم AOS. وبعد مرحلة لم تشهد سوى Commits متفرقة منذ منتصف 2025، جاءت في 10 أبريل 2026 إعادة التسمية إلى Agent Control Standard. ويشير الاسم الجديد إلى الخطوة المضمونية: من مجرد المراقبة إلى الإنفاذ. بعد ذلك عمل ACS لفترة وجيزة كمشروع مستقل خارج OWASP، ثم عاد في سبتمبر 2026 — هذه المرة إلى OWASP GenAI Security Project.
| التاريخ | المعلم |
|---|---|
| 11.05.2025 | أولى الـ Commits باسم «Agent Observability Standard» (AOS) |
| 06/2025 | الانتقال إلى منظمة OWASP |
| 10.04.2026 | إعادة التسمية من AOS إلى ACS (Agent Control Standard) |
| 27.05.2026 | بيان صحفي للإطلاق عبر Business Wire، ومرحلة كمشروع مستقل |
| 05.06.2026 | دمج المواصفة المرجعية v0.1.0، بما في ذلك Hooks الـ Skills |
| 11.08.2026 | الإصدار v0.1.1: ترخيص جديد، والمواصفة دون تغيير |
| 01.–10.09.2026 | إعادة الإطلاق في OWASP: صفحة الموارد (1 سبتمبر)، والموقع و44 مخطط JSON (5 سبتمبر)، والحوكمة والتنفيذ المرجعي (10 سبتمبر) |
| 21.09.2026 | الـ Tag v0.1.2، وُضع لاحقًا على Commit بتاريخ 9 سبتمبر 2026 |
| مارس 2027 (هدف) | الإصدار التالي للمواصفة v0.2.0 |
المصادر: سجل Git ووثائق مشروع مستودع ACS وصفحة موارد OWASP، حتى 3 أكتوبر 2026.
الحالة: Incubator و public preview
ACS مشروع ضمن OWASP GenAI Security Project ومُلحق فيه بـ Agentic Security Initiative. ويصرّح في بيانات OWASP-Nest الوصفية الخاصة به بالمستوى 2، وفي مخطط Nest بمرحلة «Incubator»؛ وبذلك لا يثبت أن هيئة من OWASP قد صنّفته. ويصف قائد المشروع الوضع علنًا بأنه «public preview» وينصح المنفّذين صراحةً بالحذر. ACS ليس معيارًا من ISO أو IETF أو W3C وليس معيارًا مُنسَّقًا. ويتجلى الطور المبكر شكليًا أيضًا: لا توجد GitHub-Releases، بل Tags فقط؛ وقد تغيّر نص المواصفة والمخططات بين v0.1.1 و v0.1.2 دون رفع رقم إصدار المواصفة v0.1.0.
من يدير المشروع؟
وفق GOVERNANCE.md، أنشأ Michael Bargury و Ory Segal مشروع ACS؛ ويبقى كلاهما قائدين للمشروع. أما قائد المشروع (Project Lead) فهو Rock Lambros. وللشفافية: Bargury هو CTO وأحد مؤسسي Zenity، ويُدرَج Lambros لدى Zenity بصفة «Director of AI Standards and Governance»، وتعود معظم Commits المبكرة لـ AOS إلى بيئة Zenity. ويقود مسارات العمل — Coding Agents و Development (SDK) و Identity و Outreach و Spec — أشخاص من عدة منظمات. وتصف صفحة المشروع ACS بأنه محايد تجاه الشركات المصنِّعة ويُدار بشكل جماعي؛ وهذا وصف ذاتي. وتصنيفنا: مشروع OWASP يحمل طابعًا قويًا من Zenity في التأسيس والقيادة.
تمر القرارات عبر بوابة قبول. فلا تدخل قائمة الأعمال إلا الـ Issues التي تحمل الوسم status:accepted؛ وتحتاج التغييرات في السلوك أو النص المعياري أو التعليمات البرمجية إلى Issue مقبول، وتبدأ تغييرات المواصفة كـ GitHub Discussion، وتتطلب الـ Commits توقيع DCO-Sign-off. ويجري التطوير على الفرع integration. ولا يُعاد نشر الموقع وعناوين URI للمخططات إلا عندما يرقّي قائد المشروع التغييرات إلى main. وحتى 3 أكتوبر 2026 لم تتم ترقية main منذ 10 سبتمبر 2026 — أي أن التغييرات على integration لم تُنشر بعد.
الترخيص: ما يجوز لكم اعتماده
| المكوّن | الترخيص | الأثر العملي |
|---|---|---|
| التعليمات البرمجية، ومخططات JSON، وأمثلة التعليمات البرمجية في الوثائق | Apache-2.0 | الاستخدام في منتجات احتكارية دون التزام بالإفصاح؛ وترخيص صريح لبراءات الاختراع |
| الوثائق النصية (نصوص المواصفة، README) | CC BY-SA 4.0 | تخضع الترجمات والتعديلات لشرط ShareAlike وتتطلب ذكر المصدر |
| الإصدارات حتى v0.1.0 ضمنًا | MIT | يبقى الترخيص الممنوح آنذاك ساريًا |
| الأسماء والشعارات (OWASP، Agent Control Standard) | لا تُمنح أي حقوق | يجوز للتنفيذ أن يصف نفسه بأنه «ACS-conformant»، لكن دون الإيحاء بتأييد من المشروع |
تمت إعادة الترخيص إلى Apache-2.0 و CC BY-SA 4.0 مع الإصدار v0.1.1 في 11 أغسطس 2026. وتصوغ VamiSec جميع محتويات هذه الصفحة بشكل مستقل ولا تترجم نصوص المواصفة.
خارطة الطريق: ما هو موثّق
يستهدف الإصدار التالي للمواصفة v0.2.0 شهر مارس 2027؛ ولم يُحدَّد موعد لـ v1.0. ومن المدرج لـ v0.2 من بين أمور أخرى: Streaming و Interruption، و ASK التكراري و Quorum، وعزل المستأجرين المتعددين (Multi-Tenant)، وربط Cedar، واتحاد AgBOM عبر نظراء A2A، وتغليف A2A. والهدف الجاري منذ الانطلاق في 10 سبتمبر 2026: خلال 90 يومًا تنفيذ مرجعي قابل للتشغيل للـ Guardian، مُقاس من حيث التشغيل البيني مع Agent Governance Toolkit من Microsoft، وفي أيدي مقيّمين خارجيين. ولا يزال غير محسوم ما إذا كان ذلك سينجح بحلول أوائل ديسمبر 2026. كما لا يزال PR #21 مفتوحًا، والذي يسعى إلى إعادة رسم النطاق الإلزامي لـ ACS-Core. ومسودات الإصدارات المختلفة في المدونات ليست خارطة طريق رسمية.
Instrument: الـ Hooks الـ 19 في دورة حياة الوكيل
عند كل Hook يتوقف الـ Observed Agent ويعرض الخطوة التالية على الـ Guardian. ويحدد ACS v0.1.0 تسعة عشر Hook أصليًا من نوع steps/* — ويتفاوض الطرفان لكل جلسة على أيها يُفحص فعليًا.
تحمل الـ Hooks على الـ Wire البادئة steps/، مثل steps/toolCallRequest. وإلى جانبها توجد طرق ليست Hooks أصلية من نوع steps/*: agbom/snapshot و agbom/changed للجرد، وفحص الحيوية system/ping، والـ Handshake handshake/hello، والنطاق protocols/MCP/* لرسائل MCP المغلّفة. وتعدّ صفحة الـ Hooks في المواصفة 19 Hook إضافة إلى طريقتي AgBOM وإلى Ping بوصفها 22 طريقة؛ وتشمل حزمة المخططات إجمالًا 44 مخطط JSON. ولا تزال بعض نصوص المشروع (README، docs/acs.md) تذكر 16 Lifecycle-Hook — وهذا هو العدد دون Hooks الـ Skills الثلاثة.
| المجموعة | الـ Hooks (steps/…) | متى تُطلق | الـ Dispositions وفق المواصفة |
|---|---|---|---|
| الجلسة | sessionStart و agentTrigger و sessionEnd | بعد الـ Handshake وقبل أي خطوة أخرى؛ التفعيل من قِبل المستخدم أو جدول زمني أو حدث أو A2A أو النظام؛ انتهاء الجلسة الذي يختم عنده الـ Guardian السلسلة | sessionStart: allow/deny · agentTrigger: allow/deny/modify · sessionEnd: تدقيق فقط |
| الدورة | turnStart و turnEnd | بداية كل دورة للوكيل ونهايتها؛ ويرافق turn_id جميع الخطوات بينهما | turnStart: قادر على اتخاذ القرار، غالبًا allow · turnEnd: تدقيق فقط |
| الرسائل | userMessage و agentResponse | إدخال المستخدم قبل أن يبلغ سياق الاستدلال؛ ومخرجات الوكيل قبل التسليم | allow/deny/modify |
| المعرفة والذاكرة | knowledgeRetrieval و memoryContextRetrieval و memoryStore | استعلامات المعرفة وRAG، وقراءة الذاكرة إلى السياق، والكتابة في الذاكرة طويلة المدى | allow/deny/modify |
| الأدوات | toolCallRequest و toolCallResult | بعد تحليل استدعاء الأداة وقبل الإرسال؛ وبعد التنفيذ قبل اعتماد النتيجة | toolCallRequest: الخمس جميعًا · toolCallResult: allow/deny/modify |
| الضغط | preCompact و postCompact | قبل تكثيف نافذة السياق وبعده | preCompact: يمكن تطبيق deny · postCompact: modify، دون deny |
| الوكلاء الفرعيون | subagentStart و subagentStop | بدء وكيل فرعي داخل العملية نفسها؛ وانتهاؤه | subagentStart: يمكن تطبيق deny · subagentStop: تدقيق فقط |
| Skills | skillRegister و skillLoad و skillUnload | الإضافة إلى المجموعة المتاحة كبوابة فحص ثابتة؛ والتفعيل في الجلسة؛ والإزالة | skillRegister و skillLoad: allow/deny · skillUnload: تدقيق فقط |
ترد القيود الخاصة بكل Hook في نص المواصفة؛ أما مخطط الرد نفسه فلا يقيّد الحقل decision لكل طريقة.
الحد الأدنى لـ Core: ستة Hooks
يشترط ACS-Core ستة Hooks على الأقل: sessionStart، و userMessage أو agentTrigger، و toolCallRequest، و toolCallResult، و agentResponse، و sessionEnd. وينبغي لإطار العمل تنفيذ الباقي جميعًا متى أمكنه رصد الحدث المعني؛ ويُتفاوض عليها في الـ Handshake. ويعني ذلك لتقييم منتجاتكم: عبارة «يدعم ACS» لا تكشف بعدُ ما إذا كانت عمليات الكتابة في الذاكرة أو الوكلاء الفرعيون أو الـ Skills تصل إلى الـ Guardian أصلًا.
فخ methods_evaluated
يبلغ الـ Observed Agent في الـ Handshake عن الطرق التي ينفّذها (methods_implemented). ويرد الـ Guardian بقائمة الطرق التي يقيّمها فعليًا (methods_evaluated). وإذا أرسل الوكيل Hook غير وارد فيها، وجب عليه معاملته بوصفه ALLOW-by-default — فتُسجَّل الخطوة في أحسن الأحوال لكنها لا تُفحص. فعلى سبيل المثال، لا يقيّم التنفيذ المرجعي الوحيد سوى steps/toolCallRequest و steps/toolCallResult، أي اثنين من 19 Hook.
toolCallRequest: نقطة الإنفاذ المحورية
steps/toolCallRequest هو الـ Hook الوحيد الذي تنص المواصفة صراحةً على جميع الـ Dispositions الخمس له؛ وهنا أيضًا تعمل نماذج التحكم. والمحوري قاعدة MUST: يجب على أطر العمل إطلاق toolCallRequest لكل إجراء يغادر سياق الاستدلال لدى الوكيل — حتى لو لم يعامله إطار العمل داخليًا كأداة. ويشمل ذلك عمليات القراءة والكتابة في نظام الملفات، وطلبات الشبكة، وبدء العمليات، وأوامر الـ Shell. وما يتجاوز هذا الـ Hook لا تراه أي سياسة.
الإلزامي في الحمولة هو tool.name و arguments، ويمكن لكل قيمة وسيط أن تحمل Provenance خاصًا بها. ويُضاف اختياريًا capability مجردة مثل filesystem.delete أو network.egress، و raw_command، و intent. وبذلك يمكن للسياسات تقييم ما يُحدثه الإجراء بدلًا من البرنامج الذي ينفّذه.
Hooks ذات أثر حمائي خاص
- memoryStore هو المصبّ القياسي للتأثير عبر الجلسات، ووفق المواصفة نقطة الانطلاق لمواجهة تسميم الذاكرة (Memory Poisoning) (راجعوا ASI06: Memory & Context Poisoning).
- يؤمّن preCompact و postCompact عملية التكثيف: يجب أن يحمل الملخص origin agent_generated وأن يرث مصدر جميع الإدخالات المكثفة، حتى لا يُغسل المحتوى غير الجدير بالثقة.
- يتيح subagentStart للـ Guardian رفض بدء وكيل فرعي؛ ويحصل كل وكيل فرعي على session_id خاص وسلسلة تدقيق خاصة.
- يربط skillRegister و skillLoad الـ Skills بـ Digest: فلا يجوز تحميل إلا ما اعتُمد مسبقًا بـ skill_id مطابق و Digest مطابق؛ وينبغي رفض عمليات التحميل غير القابلة للنسبة.
الـ Dispositions الخمس بالتفصيل: allow و deny و modify و ask و defer
يرد الـ Guardian على كل Hook بـ Disposition واحدة بالضبط. والتفاصيل — الحقول الإلزامية وقواعد التركيب والمهل — هي التي تحدد ما إذا كانت السياسة آمنة أو مُنفِذة عند الخطأ.
على الـ Wire تُكتب الـ Dispositions بأحرف صغيرة في الحقل decision؛ أما نص المواصفة فيكتبها بأحرف كبيرة (ALLOW، DENY …). وكل رد في v0.1 من النوع final — فالحالات المرحلية (progress) والمقاطعات (interruption) مخطط لها في v0.2 فقط. والإلزامي في كل رد هو type و acs_version و request_id و decision؛ ويعكس request_id معرّف الطلب.
| Disposition | الأثر لدى الـ Observed Agent | الحقول الإلزامية (المخطط) | الاستخدام النموذجي |
|---|---|---|---|
| allow | يُنفَّذ الإجراء كما طُلب | لا شيء؛ ويُوصى بـ reasoning عند توقع آثار تدقيق مرئية للمستخدمين | وصول قراءة ضمن النطاق المسموح |
| deny | يُحظر الإجراء | reasoning | أمر Shell تدميري، خروج (Egress) إلى وجهة مجهولة |
| modify | يُنفَّذ الإجراء بحمولة معدّلة | reasoning و modifications | تقييد الاستعلام، حجب البيانات الشخصية في نتيجة الأداة |
| ask | يتوقف الوكيل مؤقتًا حتى الموافقة | reasoning و ask_details | دفع، إرسال جماعي إلى جهات خارجية |
| defer | يُؤجَّل القرار | reasoning و defer_details | نص برمجي مجهول، سياق ناقص |
اختياري في كل قرار: reason_codes و policy_references (policy_id و policy_version و policy_name و rule_id) و policy_data و cited_provenance_ids إضافة إلى metadata مع evaluator (deterministic أو agent أو composite).
MODIFY: شكلان يستبعد أحدهما الآخر
يعرف الكائن modifications شكلين. فإما أن يحل modified_content محل الحمولة بأكملها — وعندها لا يُسمح بأي تعديلات أخرى. وإما أن يرسل الـ Guardian تعديلات منظَّمة: redactions (مسار JSON-Pointer مع نص بديل، والافتراضي «[REDACTED]») و/أو parameter_overrides (اسم الوسيط مع قيمة جديدة). ويجوز ورودهما معًا، لكن يجب أن تكون أهدافهما منفصلة: لا يجوز لأي مسار حجب أن يصيب الحقل نفسه الذي يصيبه Override، ولا حقلًا أعلى أو أدنى منه. وتعلل المواصفة ذلك بأن ترتيب تطبيق ثابتًا كان سيحل التعارضات بصمت، وبحسب الترتيب قد يكشف قيمًا محجوبة من جديد أو يستبدل قيمًا منقّاة. وإذا خالف الـ Guardian هذه القواعد، وجب على الـ Observed Agent معاملة الرد كأنه deny.
مثال: يريد وكيل الاستعلام عن جدول عملاء بالكامل. فيرد الـ Guardian بـ modify ومُدخل في parameter_overrides يقيّد الاستعلام بـ 500 صف — كما في سيناريو المحاكي «استعلام قاعدة بيانات غير مقيّد». وتُكتب قيم الـ Override في الكائن كقيمة خام، لا داخل غلاف value.
ASK: موافقة بقواعد واضحة
- يشترط ask_details وجود approver مع type (human أو agent أو service) و id، و question، و timeout_seconds (1 على الأقل).
- عند انقضاء المهلة يسري timeout_disposition؛ والقيمة الافتراضية هي deny.
- يجب على الـ Guardian التحقق من هوية المعتمِد مقابل السياسة — فمصادقة المعتمِد إلزامية.
- قفزة واحدة فقط: لا يجوز للمعتمِدين أنفسهم إرجاع ask. وقد أُرجئ الـ Quorum والموافقات التكرارية إلى v0.2.
- إذا لم يستطع العميل معالجة ASK، فلا يجوز للـ Guardian إرسال ask. بل يلجأ إلى defer مع timeout_decision deny أو إلى deny مع رمز السبب approver_unavailable — ويُستبعد أي allow صامت.
- عبر intent_extension يمكن للموافقة توسيع الـ Capabilities المسموح بها لـ this_request أو للـ session بأكملها. ووفق المواصفة، هذه هي الطريقة المطابقة الوحيدة لتعديل النية المحددة لاحقًا.
مهم من الناحية التنظيمية: ASK ليس تلقائيًا إشرافًا بشريًا. فقد يكون المعتمِد وكيلًا أو خدمة، ويمكن ضبط timeout_disposition على allow. ويُطبَّق الإشراف البشري وفق المادة 14 من EU AI Act على الأنظمة عالية المخاطر اعتبارًا من 2 ديسمبر 2027 (الملحق III) أو 2 أغسطس 2028 (الملحق I)؛ ووكلاء الذكاء الاصطناعي ليسوا بطبيعتهم عالية المخاطر. ومن يستخدم ASK كمكوّن لذلك يحتاج وفق تقدير VamiSec إلى سياسة مع approver.type human و timeout_disposition deny، وإلى عملية موافقة تتجنب إرهاق اتخاذ القرار. وعندها يدعم ASK توثيق الإثبات، لكنه لا يفي بالمادة 14 وحده: فلا يعرف v0.1 زر إيقاف، بل deny خطوة بخطوة فقط.
DEFER: تأجيل القرار، لكن ضمن حدود
يشترط defer_details وجود reason (insufficient_context أو conflicting_policies أو low_confidence أو pending_dependency)، و resolution_method (additional_context أو human_approval أو timeout)، و resolution_timeout_ms. وعند انقضاء المهلة لا يعرف timeout_decision إلا deny أو ask — دون allow — وقيمته الافتراضية deny. ويشترط النص الوصفي هذا الحقل، بينما لا يدرجه المخطط كإلزامي؛ لذا اضبطوه دائمًا صراحةً. ويجب تقييد التأجيلات المتتالية لكل جلسة. وانتبهوا إلى الوحدات: يحسب ASK بالثواني (timeout_seconds)، و DEFER بالمللي ثانية (resolution_timeout_ms).
الـ Handshake ووضعية الفشل (Failure Posture) والمهل
قبل أن يُطلق أول Hook، يتفاوض الـ Observed Agent والـ Guardian على ما يُفحص، ومدة الانتظار، وما يحدث عند التعطل. وهذه الحقول القليلة تحدد ما إذا كانت نقطة التحكم لديكم ستصمد في الحالات الحرجة.
تبدأ كل جلسة بـ handshake/hello. وتوضع رسالة ClientHello في payload لغلاف طلب عادي، وتعود رسالة ServerHello كـ result — دون decision. ويجب أن يتطابق الإصدار المتفاوض عليه في الإصدار الرئيسي مع إصدار العميل؛ ويجب تجاهل الحقول غير المعروفة.
| الرسالة | الحقول الإلزامية | حقول اختيارية ذات صلة بالأمن |
|---|---|---|
| ClientHello (الـ Observed Agent) | acs_versions_supported و methods_implemented و transports_supported (http و https و stdio) و provenance_producer (deterministic أو none) | profiles_supported و wrapped_protocols و max_payload_size_bytes |
| ServerHello (الـ Guardian) | negotiated_version و methods_evaluated و selected_transport و timeout_config (default_ms، واختياريًا per_method_ms) | on_decision_failure (proceed أو deny، والافتراضي proceed) و signature_algorithms_supported و skew_window_ms (الافتراضي 300000) و policy_requires_provenance و approver_types_supported و profiles_accepted و trace_emission و agbom_serializations_supported |
حالات الرفض في الـ Handshake: UNSUPPORTED_VERSION (-32001) عند تعارض الإصدارات؛ و PROVENANCE_REQUIRED (-32002) عندما لا يقدّم العميل Provenance بينما تشترطه سياسة الـ Guardian.
وضعية الفشل: fail-open هو الإعداد الافتراضي
يجب على الـ Observed Agent انتظار القرار لكل خطوة مُبلَغ عنها — حتى المهلة المتفاوض عليها — ثم تطبيقه. وإطار العمل الذي يرسل الـ Hooks لكنه يتجاهل الحكم غير مطابق. وإذا لم يصل قرار صالح للاستخدام، تتحدث المواصفة عن decision failure: إما أن يصمت الـ Guardian، أو ينقطع النقل (اتصال مرفوض، خطأ TLS، رد معيب)، أو يقدّم الـ Guardian خطأً بدلًا من قرار. وفي الحالات الثلاث يسري on_decision_failure، والقيمة الافتراضية هي proceed: أي يستمر الإجراء دون فحص. أما fail-closed (deny) فيجب أن يهيئه النشر صراحةً.
تسمّي المواصفة الثمن بصراحة: من يستطيع تعطيل القناة يحوّل التحكم إلى مجرد تسجيل. وفي المقابل يسري التزام صارم — يجب تسجيل كل خطوة تستمر دون قرار كحدث تدقيق. وإذا وصل قرار مع ذلك ضمن المهلة، وجب على الوكيل الالتزام به بصرف النظر عن الوضعية.
وضعية بدء التشغيل (Startup-Posture): حين يفشل الـ Handshake نفسه
إذا تعذر الوصول إلى الـ Guardian عند بدء الجلسة أو رد دون ServerHello، تسري وضعية بدء تشغيل مهيأة خارج البروتوكول: proceed (تبدأ الجلسة دون حماية) أو refuse. وهنا أيضًا proceed هو الافتراضي، حتى لا يحظر تعطل الـ Guardian الجلسات الجديدة. ويجب تسجيل الجلسة التي بدأت دون حماية في سجل التدقيق الخاص بالنشر. أما الرفض الصريح من الـ Guardian، مثل SESSION_REFUSED، فيُعد قرارًا لا تعطلًا.
| الحالة | الآلية السارية | Default |
|---|---|---|
| تعذّر الوصول إلى الـ Guardian عند بدء الجلسة | وضعية بدء التشغيل (مهيأة خارج البروتوكول) | proceed — تعمل الجلسة دون حماية، مع التزام التدقيق |
| صمت الـ Guardian، أو خطأ في النقل، أو رد بخطأ أثناء الجلسة | on_decision_failure من ServerHello | proceed — تُنفَّذ الخطوة دون فحص، مع التزام التدقيق |
| انقضاء مهلة ASK | timeout_disposition | deny |
| انقضاء مهلة DEFER | timeout_decision | deny |
| كائن modifications غير صالح | قاعدة التركيب لـ MODIFY | المعاملة كـ deny |
| فشل system/ping | إشارة على مستوى النقل، وليست حدث إنفاذ | لا Disposition |
المهل: لا قيمة افتراضية في المواصفة
لا تحدد المواصفة مهلة قياسية رقمية. فـ timeout_config.default_ms إلزامي في ServerHello، لكن قيمته من شأن النشر؛ ويتيح per_method_ms قيمًا مختلفة لكل طريقة. ويذكّر مخطط الـ Handshake بأن كل مللي ثانية من المهلة تعني في أسوأ الأحوال زمن انتظار للخطوة، ويوصي بضبط المهل لكل طريقة وفق تحمّل زمن الاستجابة بدلًا من قيمة إجمالية سخية. ويستخدم التنفيذ المرجعي 5000 ms — وهي قيمة تنفيذية لا اشتراط. ونموذج مهل قائم على الحساسية مخطط له في v0.2. ولتوضيح المصطلح: ACS_ON_DECISION_FAILURE متغير بيئة في الـ Guardian المرجعي يضبط قيمة on_decision_failure — وليس حقلًا في المواصفة.
الـ Ping لا يثبت الإنفاذ
system/ping مجرد فحص حيوية (Liveness Probe): يجب على الـ Guardian الرد دائمًا بـ allow، ولا يحتاج الـ Ping إلى توقيع ولا يُكتب في سلسلة التدقيق. وبالتالي يمكن للـ Guardian الرد على الـ Pings وفي الوقت نفسه رفض كل Hook موقّع. لذلك توصي المواصفة بمراقبة حالات Decision Failure على مسار الـ Hook مباشرةً.
بنية Guardian: الحتمية أولًا، وLLM اختياري
وكيل Guardian ليس نموذجًا لغويًا ثانيًا يراقب الأول من فوق كتفه. يحدد ACS ترتيبًا ثابتًا: أولًا يقرر كود السياسات الحتمي، ولا يجوز لـ LLM أن يشارك إلا في مرحلة لاحقة ودون اطلاع على السياسة.
طبقتان بترتيب ثابت
تقيّم الطبقة الحتمية كل Hook أولًا. فهي إما تقرر بنفسها أو تفوّض إلى طبقة الوكيل — وفقًا للمواصفة عبر إعداد سلسلة (Chain) بالأوضاع «*» أو on_ask أو المعتمد على الأنماط. غير أن v0.1 لا يعرّف تنسيقًا لهذا الإعداد. تتلقى طبقة الوكيل المدخلات نفسها إضافةً إلى النتيجة المرحلية للطبقة الحتمية، لكنها لا تتلقى كود السياسات أبدًا. ويجب أن تمر إجابتها في طريق العودة مجددًا عبر الطبقة الحتمية.
- 1وصول Hook
تُرسَل Request-Envelope وSessionContext وIntent، وProvenance إن وُجد، إلى محرك السياسات.
- 2التقييم الحتمي
يُصدر Policy-as-Code — في v0.1 مع OPA/Rego كمرجع أولي — allow أو deny أو modify أو ask أو defer، أو يفوّض.
- 3طبقة LLM اختيارية
تقيّم الحالات التي لا يمكن البتّ فيها حتميًا؛ وتعامل الحقول غير الموثوقة كبيانات ولا ترى كود السياسات.
- 4إعادة الفحص والإجابة
تمر النتيجة مجددًا عبر الطبقة الحتمية؛ ويبيّن metadata.evaluator القيمة deterministic أو agent أو composite.
- 5التسجيل
يُسجَّل كل قرار مع التعليل ومعرّف النموذج، ودرجة الثقة إن توفرت.
محرك السياسات: واجهة لا منتج
يعرّف ACS الواجهة إلى المحرك الحتمي، لا المحرك نفسه. تتكون المدخلات من Request-Envelope وSessionContext وIntent وProvenance، والمخرجات من Envelope للقرار، مع تفويض اختياري إلى طبقة الوكيل (delegate_to). ويضع ACS إضافةً إلى ذلك أعرافًا، منها: لا استدعاءات HTTP خارجية في السياسات المعيارية. وهذا يدعم الحتمية وزمن الاستجابة.
| المحرك | الحالة في ACS | التصنيف |
|---|---|---|
| OPA / Rego | مرجع أولي لـ v0.1 | مشروع CNCF بحالة Graduated (منذ 29.01.2021)، Apache-2.0؛ يستخدم التطبيق المرجعي OPA المضمَّن مع Agent Governance Toolkit |
| Cedar | متابعة سريعة لـ v0.2 (ربط Cedar) | لغة سياسات من AWS، Apache-2.0، CNCF Sandbox (منذ 08.10.2025)؛ أساس Policy في Amazon Bedrock AgentCore |
| محرك خاص | مسموح به إذا التزم بالواجهة | مثل منطق خاص بالمجال أو مصنِّفات خلف الواجهة نفسها |
يذكر ملف README والقسم 2 من المواصفة Cedar وRego معًا؛ أما الحالة لكل إصدار فيحددها القسم 12.1.
التزامات طبقة LLM
- البيانات غير الموثوقة بيانات وليست تعليمات؛ ويجب تغليف الحقول المعنية أو وضعها بين علامات اقتباس في الـ Prompt.
- لا وصول إلى كود السياسات الخاص بالطبقة الحتمية.
- تسجيل كل قرار مع التعليل ومعرّف النموذج ودرجة الثقة (إن توفرت)؛ وعند evaluator بقيمة agent أو composite يجب ذكر model_id.
- تتبع المهل الزمنية قيمة timeout_config المتفاوض عليها في Handshake.
- الطبقة بأكملها اختيارية في v0.1.0: عمليات النشر الحتمية بالكامل متوافقة تمامًا.
نماذج تحكم دون امتداد Wire خاص
تذكر المواصفة أربعة نماذج كأهداف لـ v0.1. يعبّر Guardian عنها عبر الحقول نفسها — reason_codes وpolicy_references وpolicy_data وcited_provenance_ids. وإذا جمع نشرٌ ما عدة نماذج، جاز لقرار واحد أن يستشهد بها جميعًا.
IBAC · التفويض القائم على النية
تُحدَّد نية الجلسة (Intent) قبل أن تتدفق البيانات غير الموثوقة؛ وبعدها لا تتوسع إلا عبر موافقة خاضعة للتدقيق (intent_extension). وقد ينتهي الانحراف بـ defer؛ وعندئذٍ يذكر policy_data القدرة المطلوبة وأقرب إدخال من Intent.parsed. لا يحتاج إلى acs-provenance.
FIDES · التحكم في تدفق المعلومات
نهج بحثي يستخدم تسميات السرية والسلامة (arXiv 2505.23643، 2025). يستشهد الرفض بسلسلة النسب (Lineage) المخالفة في cited_provenance_ids وبمسار الوسيط المعني في policy_data.
CaMeL · توليف البرامج
نهج بحثي يستنتج تدفق التحكم والبيانات من الطلب الموثوق (arXiv 2503.18813، 2025). يتحقق Guardian مما إذا كانت الوسائط مصدرها غير موثوق.
على غرار AARM · السياق التراكمي
يقيّم مسار الجلسة حتى الآن بدلًا من الخطوة المفردة. يستشهد الرفض بأقدم خطوة غير موثوقة ويعرض المراجعة الاسترجاعية ذات الصلة في policy_data.
تحتاج قواعد FIDES وCaMeL والقواعد على غرار AARM إلى بيانات المصدر، ولذلك تفترض وجود الملف التعريفي acs-provenance؛ أما IBAC الصرف فلا. لا يطبّق ACS أيًّا من هذه الأساليب بنفسه، بل يوفر الحقول التي يطبّقها Guardian من خلالها ويعلّلها. أي أن ACS لا يمنع Prompt Injection — بل ينشئ نقطة التحكم التي تتدخل عندها السياسات ضد عواقبه.
التشغيل: زمن الاستجابة والتوافر (تقييم VamiSec)
- زمن الاستجابة: يقع كل فحص في المسار الحرج للوكيل. أبقوا الطبقة الحتمية محلية ودون استدعاءات خارجية، وخصّصوا طبقة LLM لحالات قليلة غير واضحة، وقيسوا evaluation_duration_ms لكل أسلوب.
- التوافر: مع fail-closed يصبح Guardian حرجًا للتشغيل. شغّلوه قريبًا من الوكيل وبشكل احتياطي متكرر. ويوثّق التطبيق المرجعي هذا الخطر بنفسه: فهو يكتب السجلات بشكل متزامن في مسار القرار، بحيث يعطّل قرصٌ بطيء كل قرار جارٍ.
- دورة حياة السياسات: أدّوا إدارة إصدارات السياسات وأعيدوا policy_version في كل قرار؛ إذ تنص المواصفة على ذلك لإعادة بناء حالات السياسات التاريخية.
- حدود النطاق: لا يحل Guardian محل Sandbox ولا IAM ولا إدارة الأسرار ولا جدار حماية Egress. وتبقى الإجراءات التي تتجاوز toolCallRequest غير مرئية له.
يشغّل التطبيق المرجعي الوحيد Agent Governance Toolkit من Microsoft دون تعديل خلف ACS-Wire. وهو صراحةً إثبات مفهوم (Proof of Concept): اثنان من 19 Hook مفعّلان، ولا توقيع HMAC، والإعداد الافتراضي fail-open. يوضح النمط لعميلين (Claude Code وOpenCode)، لكنه غير مخصص للتشغيل الإنتاجي.
أمن القناة: التوقيعات والحماية من إعادة الإرسال وسلسلة التدقيق
لا يكون وكيل Guardian جديرًا بالثقة إلا بقدر القناة التي يقرر عبرها. لذلك يشترط ACS-Core ثلاث آليات: توقيعًا على كل Request وكل Response، وحماية من الرسائل المعادة، وسلسلة تدقيق مرتبطة بالتجزئة (Hash). يوضح هذا الفصل ما تحققه هذه الآليات — وأين تقع حدودها.
تمر بين Observed Agent وGuardian Agent قرارات تسمح بإجراءات أو تحجبها. ومن يستطيع التلاعب بهذه القناة يحوّل deny إلى allow أو يعيد إدخال موافقة قديمة. لذلك يعامل OWASP Agent Control Standard (ACS) أمن القناة جزءًا من خط الأساس الإلزامي ACS-Core، لا ملفًا تعريفيًا اختياريًا.
توقيع خط الأساس: HMAC-SHA256 بمفتاح الجلسة
يشترط ACS-Core على كل Request وكل Response توقيعًا على الـ Envelope المعياري. وخط الأساس الذي يفي بهذا الالتزام هو HMAC-SHA256. يُشتق المفتاح لكل جلسة عبر HKDF — من مادة المفاتيح الخاصة بالنشر (سر مشترك مسبقًا أو ربط بالقناة مثل TLS-Exporter) مع session_id. ولا يعرّف v0.1 تبادلًا للمفاتيح ضمن البروتوكول. يُوقَّع على التحويل المعياري RFC-8785 (JCS) للـ Envelope دون الحقل signature؛ ويعيد المستقبِل حساب هذا الشكل ويرفض أي توقيع غير مطابق. ولا يكفي TLS وحده صراحةً، لأنه لا يربط رسالة مفردة لأغراض التدقيق. والمستثنى الوحيد من التزام التوقيع هو أسلوب الحيوية system/ping.
تفصيلان مهمان للبنية. في JSON-Schema يكون signature اختياريًا، لكنه إلزامي معياريًا في ACS-Core — أي أن التحقق من المخطط وحده لا يكشف التوقيعات المفقودة. كما أن المواصفة لا تحدد Salt ولا Info-String ولا دالة التجزئة ولا طول المفتاح لـ HKDF؛ لذا قد تشتق تطبيقان مفاتيح مختلفة. وفي تقديرنا، تنتمي هذه المعلمات إلى اتفاقية الواجهة بين تشغيل المنصة وتشغيل Guardian.
الحماية من إعادة الإرسال
يحمل كل Request قيمة request_id (UUID) وtimestamp واختياريًا nonce. ويجب على Guardian رفض الطلبات التي يقع طابعها الزمني خارج النافذة المتفاوض عليها skew_window_ms (القيمة الافتراضية الموصى بها 300 000 ms، أي خمس دقائق)، ورفض قيم request_id المكررة داخل الجلسة؛ وينبغي له رفض قيم Nonce المكررة. وينتج عن ذلك متطلب تشغيلي يُغفَل بسهولة: ساعات متزامنة على الجانبين.
| البرمجة | الاسم | المسبِّب | استجابة Observed Agent وفق المواصفة |
|---|---|---|---|
| -32000 | SESSION_REFUSED | السياسة ترفض الجلسة، ولا يوجد رمز أكثر تحديدًا مناسب (مثل agent_id غير مسموح به) | لا محاولة جديدة دون تغيير في السياسة أو الإعداد |
| -32001 | UNSUPPORTED_VERSION | لا توجد acs_version مشتركة في Handshake | تكرار Handshake بإصدار مدعوم |
| -32002 | PROVENANCE_REQUIRED | السياسة تتطلب Provenance، والعميل يبلّغ provenance_producer: none | إعادة الاتصال بوصفه منتِجًا deterministic أو استخدام Guardian دون التزام Provenance |
| -32003 | CAPABILITY_NOT_NEGOTIATED | استُخدم أسلوب أو ملف تعريفي لم يُتفاوض عليه في Handshake | إعادة التفاوض على الأسلوب أو الملف التعريفي |
| -32004 | SIGNATURE_INVALID | التوقيع الإلزامي مفقود أو معيب أو غير قابل للتحقق | إعادة التوقيع، وعند الحاجة إعادة حل key_id |
| -32005 | REPLAY_DETECTED | تكرار request_id أو nonce في الجلسة | توليد request_id وnonce جديدين |
| -32006 | TIMESTAMP_OUT_OF_WINDOW | الطابع الزمني خارج skew_window_ms | تصحيح انحراف الساعة |
| -32007 | CHAIN_MISMATCH | قيمة chain_hash لدى العميل تختلف عن رأس السلسلة لدى Guardian | إعادة تحميل حالة الجلسة؛ والانحراف الدائم حدث يمس السلامة |
ملخص خاص لسجل أخطاء ACS (المواصفة v0.1.0، §17.1). لا يجوز لـ system/ping أن يعيد خطأً خاصًا بـ ACS.
سلسلة التدقيق: سلسلة تجزئة برأس منشور
يدير Guardian لكل جلسة SessionContext، وهو سلسلة من ContextEntries قابلة للإلحاق فقط (append-only). يحصل كل إدخال على entry_hash: قيمة SHA-256 على الإدخال المحوَّل معياريًا بـ JCS دون حقول التجزئة، مربوطة بتجزئة الإدخال السابق؛ ويكون previous_hash للإدخال الأول null. ولا يُسمح بتحويلات معيارية أخرى في v0.1. والحاسم هو النشر: لكل خطوة تحمل محتوى (content-bearing) يجب على Guardian أن يرفق قيمة chain_hash الحالية في استجابته، مغطاة بتوقيع الاستجابة. وتذكر المواصفة السبب صراحةً: لو أبقى Guardian رأس السلسلة سريًا، لأمكنه مثلًا حذف deny وإعادة حساب السلسلة من تلك النقطة وتقديم سجل منقّح لاحقًا. ومن يسجّل حركة البيانات يكتشف السلسلة المعاد كتابتها لاحقًا.
ما تثبته السلسلة — وما لا تثبته
- الحقول الإلزامية في ContextEntry هي فقط entry_id وstep_id وstep_type وentry_hash. أما request_hash على محتوى الطلب فهو في ACS-Core موصى به فقط (SHOULD) ولا يصبح إلزاميًا إلا في الملف التعريفي acs-audit. ومن دونه تثبت السلسلة أن خطوة ما حدثت، لكن لا تثبت ما الذي طُلب.
- لا يعرف مخطط ContextEntry حقلًا للتصرف (Disposition) أو التعليل أو الموافِق (Approver). يسجل ACS القرارات معياريًا كأحداث Trace (الملف التعريفي acs-trace، الفصل 9)؛ ولا يكتب إدخالًا خاصًا مع هوية الموافِق سوى توسيع النية (الفصل 11).
- HMAC متماثل: يحتفظ Guardian بالمفتاح وقد يعيد توقيع رأس سلسلة معاد كتابته. فالقناة محمية من التلاعب في الشبكة، لا من Guardian مخترَق.
- لا تنشأ عدم القابلية للإنكار تجاه الأطراف الثالثة إلا مع acs-crypto: على الأقل ML-DSA-65 (MUST)، وSLH-DSA-128s (SHOULD)، والأساليب الهجينة اختيارية.
- لا توجد مطابقة بين عدة Guardians في v0.1 (Issue #18، مؤجلة).
Trace: OpenTelemetry وOCSF في SOC
مع ركيزة Trace تصل إجراءات الوكلاء وقرارات Guardian إلى منظومة المراقبة وSIEM القائمة. لا يخترع ACS لذلك تنسيقًا جديدًا، بل يوفر مفردات لـ OpenTelemetry وOCSF. وما يهم SOC هو الفئات التي تصل، ومدى موثوقيتها، وأين لا تزال في الربط (Mapping) ثغرات.
المساهمة المعيارية لـ Trace هي المفردات: أسماء Span ومفاتيح السمات وفئات الأحداث وربط حالات التصرف (Dispositions) بدرجات الخطورة. يتم النقل عبر OTLP (gRPC أو HTTP) إلى الأنظمة الخلفية القائمة؛ أما نطاق أسماء Wire trace/* فهو في v0.1.0 محجوز فقط. والهدف المعلن هو أن تندمج أحداث ACS في خطوط SIEM دون محللات خاصة. ويحمل امتدادا OTel وOCSF في المستودع حالة «Working draft». Trace هو الملف التعريفي الاختياري acs-trace. ومن يدّعيه يجب عليه لكل خطوة مدعومة أن يُخرج أحد التنسيقين على الأقل مع السمات الإلزامية، وأن يسجل كل قرار مع التصرف والمقيِّم — والتعليل إن وُجد — وأن ينقل حقائق Provenance من Hook إلى الحدث.
OpenTelemetry: Span لكل Hook، والقرارات كـ Span-Event
التسلسل الهرمي لـ Span حتمي: Root-Span باسم acs.session لكل جلسة، وتحته acs.turn لكل دورة وStep-Span لكل Hook. القرارات ليست Spans مستقلة، بل Span-Event باسم acs.decision على Step-Span؛ وبذلك يتشارك الحكم والإجراء المتحكَّم فيه سياق الأصل نفسه. السمات الإلزامية للحدث هي acs.decision وacs.evaluator (deterministic أو agent أو composite). ولاستدعاءات الأدوات يستخدم ACS اسمي Span gen_ai.tool.call وgen_ai.tool.result. تنبيه: في أعراف OpenTelemetry-GenAI (بحالة «Development» حتى أكتوبر 2026) يكون gen_ai.tool.call مجرد بادئة سمات، واسم Span الموصى به هناك هو execute_tool {gen_ai.tool.name}. لذلك لا تتوافق لوحات المعلومات والاستعلامات المبنية على هذه الأعراف مع Tool-Spans الخاصة بـ ACS دون تعديل.
| حدث ACS | فئة OCSF (UID) | ملاحظة |
|---|---|---|
| sessionStart، sessionEnd، subagentStart، subagentStop | 3002 Authentication | مُمثَّل بوصفه Logon أو Logoff |
| userMessage، agentResponse، agentTrigger، turnStart، turnEnd | 6002 Application Lifecycle | يسمي ACS الفئة «Application Activity» — وفي OCSF هذا هو اسم الفئة الرئيسية 6 |
| toolCallRequest و toolCallResult | 1007 Process Activity | المصدر المركزي لإجراءات الوكلاء |
| knowledgeRetrieval، memoryContextRetrieval، memoryStore، preCompact، postCompact | 6005 Datastore Activity | الضغط (Compaction) بقيمة activity_id 99، وهي في OCSF عامة «Other» |
| القرارات deny وmodify وask وdefer | 2004 Detection Finding | severity_id: modify 2، وask وdefer 3، وdeny 4؛ وallow عادةً معلوماتي فقط (1) |
| agbom/snapshot، agbom/changed | 5001 Device Inventory Info | يسمي ACS الفئة «Inventory Info» |
الفئات وفق ربط ACS (OCSF 1.5+)، وأسماء الفئات وفق OCSF 1.5.0. يظهر الوكلاء بوصفهم actor.user.type «AI Agent»؛ وتقع الحقول الخاصة بـ ACS مثل reason_codes ومراجع السياسات في unmapped.acs.
حالات استخدام SIEM للوكلاء
| حالة الاستخدام | أساس البيانات | الاستجابة الممكنة |
|---|---|---|
| تجاوز Guardian (fail-open) | حدث تدقيق إلزامي لكل خطوة دون قرار؛ بدء جلسة غير محمي | تنبيه من أول حدث لدى الوكلاء عالية المخاطر؛ والتحقق من توافر Guardian |
| تراكم حالات deny | Detection Finding 2004 مع severity_id 4 وreason_codes وpolicy_id | مراجعة الجلسة؛ مؤشر على Prompt Injection أو خطأ في الإعداد |
| عبء الموافقات | نتائج ask (severity_id 3) لكل فترة زمنية، مستكملة ببيانات الموافِق من ask_details | تعديل العتبات وقدرة الموافِقين، والوقاية من إرهاق الموافقات |
| انحراف المخزون | agbom/changed مع reason بقيمة user_action أو discovery (فقط مع acs-inspect-dynamic) | المطابقة مع قائمة الموافقات، وعند الحاجة تشديد السياسة |
| حدث يمس السلامة | CHAIN_MISMATCH أو reason_code بقيمة chain_mismatch | التحقيق فيه بوصفه حدثًا يمس السلامة، لا الاستخفاف به كخطأ عابر |
| وكيل أم إنسان | actor.user.type «AI Agent» | خطوط أساس منفصلة، وربط مع الهويات البشرية |
استنتاج VamiSec — لا يعرّف ACS منطق كشف ولا دليل استجابة (Playbook). ولحدث تدقيق fail-open لا يزال تنسيق متوافق مفقودًا وفق Issue #37؛ لذا ابنوا القواعد على أساس ربط JSON واختبروها ببيانات حقيقية.
حدود ينبغي أن تخططوا لها
- أفضل جهد (Best effort): لا يجوز لـ Trace أن يعطّل التنفيذ أبدًا. وإذا تعطلت الوجهة، يصل القرار رغم ذلك إلى Observed Agent — أي أن القياس عن بُعد قد يكون ناقصًا.
- إفادة ذاتية: تنشأ أحداث Trace في البيئة المراقَبة ولا تصبح دليلًا إلا بتصديق طرف خارجي.
- ثغرة Skills: يغطي الربط 16 من أصل 19 Hook أصليًا إضافةً إلى أسلوبي agbom. أما skillRegister وskillLoad وskillUnload فليس لها ربط OTel ولا OCSF.
- انحراف التوثيق: موضع تخزين Provenance في OCSF متناقض (enrichments في الربط المعياري، وunmapped.acs.provenance في الدليل). كما أن صفحة الأمثلة باستعلامات Splunk وElastic لا تزال تستخدم الاسم القديم ASOP وOCSF 1.0.
- حماية البيانات: قد تحتوي Spans على Prompts ووسائط الأدوات. توصي المواصفة بالتنقيح (Redaction) منذ لحظة الإصدار؛ وفي تقديرنا يجب أن يكون ذلك إلزاميًا في مفهوم التسجيل.
Inspect: AgBOM — مخزون وقت التشغيل للوكيل
يغيّر الوكلاء قدراتهم أثناء التشغيل: نموذج جديد، خادم MCP محمَّل لاحقًا، Skill مسجَّلة حديثًا. تجعل AgBOM (Agent Bill of Materials) هذه الحالة قابلة للاستعلام ولاتخاذ القرار لكل جلسة. وهي ليست تنسيق SBOM جديدًا — ولا تحل محل أي تنسيق.
AgBOM وفق المواصفة مخزون ديناميكي قابل للاستعلام للمكونات التي يستخدمها Observed Agent. والتعليل دقيق: كل سياسة تعتمد على ماهية الوكيل — أي نموذج وأي أدوات — تصبح غير قابلة للتحقق دون مخزون. وإذا اعتمدت سياسة Guardian على المخزون، كحظر نموذج أو أداة، وجب على النشر تطبيق الملف التعريفي acs-inspect. وAgBOM المعيارية رسم بياني للمكونات، مخزَّن كقائمة مسطحة بمراجع عبر المعرّف، بحيث يمكن مقارنة الحالات عبر Diff.
ثمانية أنواع من المكونات
| النوع | ما يُسجَّل (مختارات من الحقول الإلزامية) |
|---|---|
| model | الاسم والإصدار والمزوّد ونقطة النهاية ونافذة السياق؛ واختياريًا لقطة للإعداد |
| mcp_server | الاسم والإصدار ونقطة النهاية والأدوات المتاحة |
| a2a_peer | نقطة النهاية وإصدار البروتوكول |
| tool | الاسم والإصدار والمزوّد والقدرة المجردة، مثل filesystem.delete أو network.egress |
| knowledge_source | الاسم ونوع المصدر (vector_db، search_index، knowledge_base، web_search، other) |
| memory_store | الاسم والنطاق (session، user، tenant، global) ونوع التخزين |
| agent_capability | اسم ووصف مجموعة قدرات سلبية |
| skill | الاسم والوصف إضافةً إلى المرجع وملخص السلامة (Digest) للأداة القابلة للتحميل |
المصدر المعياري هو المخطط component.json. تذكر بعض صفحات التوثيق ستة أو سبعة أنواع؛ والمعتمد هو ثمانية.
snapshot وchanged: أسلوبا Wire
يرسل Observed Agent agbom/snapshot مرة واحدة لكل جلسة بعد sessionStart وقبل أول Hook يحمل محتوى؛ وتحتوي الرسالة على AgBOM الكاملة. ويبلّغ agbom/changed عن التغييرات — المكونات المضافة أو المحذوفة أو المعدلة كـ Diff أو كلقطة كاملة — ويمكن أن يحمل سببًا، مثل component_upgraded أو discovery أو user_action. ويدخل كلا الحدثين في سلسلة التدقيق. ويجوز لـ Guardian عبر deny رفض جلسة تحتوي على مكون محظور أو منع تبديل ساخن (Hot-Swap).
مهم لاختيار الملف التعريفي: من يدّعي acs-inspect فقط يقدم لقطة واحدة بالضبط لكل جلسة ولا يتتبع التغييرات. ولا تصبح تغييرات وقت التشغيل مرئية إلا مع acs-inspect-dynamic. ويشير مسبِّبا اللقطة renegotiation وpolicy_request إلى آليات لن تُحدَّد إلا مع v0.2 — ففي v0.1 لا يُعتمد عمليًا إلا على session_start. كما ينبغي أن يحمل كل مكون registration_provenance (إلزامي ضمن acs-provenance). وبذلك يمكن التمييز بين مكون مصدره الإعداد ومكون أضيف أثناء التشغيل.
التسلسلات: CycloneDX وSPDX وSWID
يُرسل على Wire دائمًا الشكل المعياري؛ ويُنتج Guardian التسلسلات عند الطلب للأدوات اللاحقة. ويجب على نشر acs-inspect أن يوفر واحدًا منها على الأقل: CycloneDX 1.6 أو SPDX 3.0 أو SWID (ISO/IEC 19770-2). تحمل جميع عمليات الربط الثلاث حالة «Working draft»؛ والتمثيلات على CycloneDX وSPDX غير صالحة جزئيًا وفق المخطط. يستخدم ربط CycloneDX أسماء أنواع مثل ai-model أو service كنوع مكون لا يعرفها CycloneDX 1.6 بهذا الشكل؛ ويستخدم ربط SPDX فئات وعلاقات غير موجودة في SPDX 3.0.1. لذلك خططوا لعمليات التصدير مع تحقق خاص بكم. أما CycloneDX نفسه فمتاح منذ أكتوبر 2025 بالإصدار 1.7.
التمييز: AgBOM وAI-SBOM وCRA-SBOM
AgBOM (ACS)
مرتبطة بوقت التشغيل ولكل جلسة، ومثبتة في سلسلة التدقيق وقابلة لاتخاذ القرار. تحصر ما يستخدمه Observed Agent في هذه الجلسة وفق إفادته الذاتية؛ وضمن acs-provenance إضافةً إلى ذلك مصدر كل تسجيل.
AI-SBOM / ML-BOM
تصف النماذج ومجموعات البيانات، مثلًا باستخدام CycloneDX ML-BOM أو الملف التعريفي AI في SPDX 3.0. لا يرد مصطلح AI-BOM في ACS؛ والمقارنة هي تصنيفنا.
CRA-SBOM
إلزامية اعتبارًا من 11.12.2027 للشركات المصنِّعة للمنتجات ذات العناصر الرقمية (الملحق I الجزء II البند 1 من CRA): قابلة للقراءة آليًا، وتشمل على الأقل التبعيات من المستوى الأعلى. يمكن لـ AgBOM أن تكمّل SBOM وقت البناء هذه بمكونات وقت التشغيل، لكنها لا تحل محلها.
Provenance والهوية: مصدر البيانات وحدود الهوية
كثيرًا ما تتوقف مشروعية إجراء ما على مصدر البيانات التي تطلقه. يزود Provenance Guardian بحقائق المصدر هذه على مستوى الحقل، ويثبّت Session Intent الغرض. أما جزء الهوية في ACS فيصف حتى الآن أسئلة مفتوحة في الغالب.
Provenance الحقول: حقائق بدلًا من تسميات الثقة
يجيب Provenance عن مصدر عنصر البيانات وكيف وصل إلى موضعه. يحمل كائن Provenance قيمة provenance_id، وorigin بإحدى سبع قيم — user_input، system، tool_output، retrieved، agent_generated، a2a_inbound، external — واختياريًا source_id (مثل اسم الأداة أو URL أو المسار) وderived_from كقائمة بالأسلاف. وترتبط هذه البيانات بالحقول الحاملة للبيانات، بل في toolCallRequest بكل وسيط على حدة. وبذلك يمكن لسياسة أن تستهدف تدفق بيانات محددًا بدلًا من الاستدعاء بأكمله.
- يحددها الإطار: يمنح كود حتمي خارج مسار مخرجات LLM قيم origin وsource_id وderived_from. وتوجيه LLM لإنتاج Provenance غير متوافق.
- النسب المتعدية (Transitive Lineage): ترث البيانات المشتقة مصدر مدخلاتها، حتى عبر التلخيص والضغط. وبذلك يبقى ملخص مخرجات أدوات خارجية قابلًا للتعرف عليه بصفته تلك.
- لا حقل ثقة: قيمة trust في v0.1 محجوزة فقط، دون مخطط. يستنتج Guardian الثقة من origin وsource_id مقارنةً بسياسته؛ ولا تصبح المواد غير الموثوقة موثوقة أبدًا بمعالجة LLM (قاعدة الرتابة).
- كل شيء أو لا شيء: مع provenance_producer: deterministic يجب أن يحمل كل حقل حامل للبيانات Provenance؛ والتعبئة الجزئية غير متوافقة. وإذا أبلغ العميل provenance_producer: none رغم أن السياسة تتطلب Provenance، يرفض Guardian الجلسة منذ Handshake بـ PROVENANCE_REQUIRED.
لا ينتمي Provenance إلى ACS-Core، بل إلى الملف التعريفي acs-provenance. وهو شرط مسبق لنماذج التنفيذ مثل FIDES وCaMeL وAARM، لكنه ليس شرطًا للتفويض الصرف القائم على النية (IBAC). لا يمنع ACS Prompt Injection. بل ينشئ نقطة التحكم التي يمكن عندها لسياسة أن تحد من العواقب — مثلًا بحجب بريد إلكتروني يأتي مستلمه ومحتواه من نتيجة استرجاع غير موثوقة. وليست تسميات الحساسية أو IFC جزءًا من المعيار؛ بل تقع ضمن مسؤولية Guardian أو النشر.
Session Intent: الغرض المثبَّت
Intent في ACS ليس تنسيق Wire، بل مفهوم حوكمة: فهو يربط الإجراءات بغرض مفوَّض، وذلك قبل أن تتمكن البيانات غير الموثوقة من التأثير. يُحدَّد Intent.parsed، أي مجموعة القدرات المفوضة للجلسة، عند sessionStart أو عند أول agentTrigger. وبعدها لا يجوز لـ LLM ولا لمخرجات الأدوات ولا للبيانات القادمة من قنوات غير موثوقة تغييره؛ وإذا حُدد Intent عند sessionStart، وجب رفض أي agentTrigger لاحق بنية مختلفة.
الطريق المتوافق الوحيد للتوسيع هو intent_extension يعيدها موافِق عبر مسار ask — مع بيانات إلزامية عن القدرات والنطاق. مع scope بقيمة this_request يسري التوسيع على الطلب الجاري فقط. ومع scope بقيمة session يضيف Guardian القدرات، ويكتب ContextEntry من نوع intent_extension مع هوية الموافِق، ويدير Provenance التوسيع منفصلًا عن Provenance النية الأصلية. وضمن scope_mode بقيمة strict لا يجوز له قبول أي توسيع تحظره السياسة في الوضع الصارم. وفي تقديرنا، هذه بالنسبة لمسؤولي أمن المعلومات (CISO) الرافعة ضد التوسع التدريجي للصلاحيات: فكل توسيع يحتاج إلى موافقة موثَّقة الهوية.
الهوية: معياريًا محدودة، والكثير قيد العمل
ما يسري معياريًا
لا يفرض ACS آلية مصادقة؛ إذ يُعلَن عن الآلية المستخدمة في Handshake، وتبقى مخططات الثقة مثل SPIFFE أو OIDC أو PKI محددة من قِبل النشر. والإلزامي هو مصادقة الموافِقين والفصل بين ثلاث هويات: Observed Agent وGuardian ومؤلف السياسة.
ما ليس ملزمًا بعد
تذكر وثائق العمل الخاصة بمسار الهوية خمسة تحديات لوقت التشغيل؛ أربعة منها «Pending» وواحد «Partially specified». وعبارات مثل «Required by ACS» بشأن DPoP أو RAR غير ملزمة — إذ يوضح المشروع نفسه أن ACS لا يفرض أي آلية. ونموذج المعرّفات وأعمار Tokens مقترحة فقط.
التمييز عن AIMS
تتناول مسودة IETF AIMS (draft-klrc-aiagent-auth) إصدار الهويات وربط بيانات الاعتماد ومصادقة النقل. ويعدّ ACS نفسه مكمّلًا: تنفيذ في وقت التشغيل بدلًا من إصدار الهويات.
يصادق توقيع ACS-Core القناة بين Observed Agent وGuardian بشكل متماثل. وهو ليس مصادقة للجهة الأصيلة (Principal) ولا عدم قابلية للإنكار — ولا ينبغي لكم الخلط بينهما في البنية وأدلة الإثبات.
MCP وA2A وSkills: البروتوكولات والقدرات القابلة للتحميل
يتواصل الوكلاء مع الأدوات عبر MCP، ومع وكلاء آخرين عبر A2A، ويحمّلون Skills كوحدات قابلة للتنفيذ. يغطي ACS v0.1 هذه المساحات الثلاث بدرجات متفاوتة: تغليف MCP محدد، وA2A محجوز فقط، ولدورة حياة Skills Hooks خاصة بها.
تغليف MCP: محدد، مع سؤال مفتوح حول الإلزام
نطاق الأسماء protocols/MCP/* هو الطريق المعياري لنقل رسائل MCP إلى Guardian، مثل protocols/MCP/tools/call. تبقى رسالة MCP دون تغيير؛ ويضع ACS فوقها Envelope وعقد القرار وقواعد سلسلة التدقيق. يتم المسار على مرحلتين: يعرض الوكيل الطلب المغلَّف على Guardian، وينفّذ قراره، ويمرر الرسالة وفق وصف المسار بعد allow إلى خادم MCP، ويُخضع إجابته أيضًا للفحص قبل معالجتها.
يجوز للنشر دمج استدعاءات أدوات MCP (tools/call) في الـ Hooks العامة steps/toolCallRequest وsteps/toolCallResult إذا كانت السياسات على مستوى الأداة كافية. وينبغي استخدام التغليف عندما تحتاج السياسة إلى فروق خاصة بـ MCP: التفاوض على القدرات عند initialize، وقوالب Prompt من جانب الخادم (prompts/get)، والوصول إلى الموارد (resources/read)، والإشعارات (notifications/*). وبمعزل عن ذلك: يجب على أطر العمل إطلاق toolCallRequest لكل إجراء يغادر سياق الاستدلال — بما في ذلك عمليات الملفات أو الشبكة أو Shell المدمجة.
MCP 2026-07-28: نص المواصفة متأخر عن الركب
منذ 28.07.2026 أصبحت مراجعة MCP 2026-07-28 هي الحالية (حتى أكتوبر 2026). وهي تجعل نواة البروتوكول عديمة الحالة (Stateless)، وتلغي Handshake الخاص بـ initialize، وتعلن من بين أمور أخرى أن Sampling وRoots متقادمة. نطاق الأسماء protocols/MCP/* في ACS محايد تجاه الإصدارات؛ ولا تظهر المراجعة 2025-06-18 في المواصفة إلا كمثال. غير أن النص لا يزال يفترض الدلالات الأقدم ويذكر صراحةً التفاوض عند initialize كنقطة ينبغي التحكم فيها. وتترك المواصفة مفتوحًا ما إذا كان ذلك يؤثر عمليًا على أدوات التغليف؛ ولا يتوفر لدينا تحليل موثوق. وفي تقديرنا، ينبغي للبنى المعتمدة بكثافة على MCP أن تخطط لاعتماد Tool-Hooks العامة نقطةَ تحكم أساسية.
A2A: محجوز لـ v0.2
نطاق الأسماء protocols/A2A/* في v0.1 محجوز فقط؛ ودلالات التغليف المعيارية مقررة لـ v0.2 (الموعد المستهدف لـ v0.2.0: مارس 2027). وصفحات A2A في المستودع تعود إلى حقبة AOS عام 2025 وليست متوافقة مع المخطط. ولا تظهر علاقات A2A اليوم إلا بشكل غير مباشر: عبر agentTrigger مع trigger_type بقيمة a2a_inbound وعبر مكونات a2a_peer في AgBOM. أما الوكلاء الفرعيون داخل العملية فيغطيهم ACS عبر subagentStart وsubagentStop؛ إذ يحصل كل وكيل فرعي على جلسة خاصة بسلسلة تدقيق خاصة، يشير إليها الأصل عبر final_chain_hash دون دمج السلاسل.
دورة حياة Skill: register وload وunload
| Hook | الغرض | خيارات Guardian |
|---|---|---|
| steps/skillRegister | بوابة فحص ثابتة: يرى Guardian تعريف Skill بالكامل قبل تنفيذ أي من إجراءاتها. وتسري الموافقة على الزوج (skill_id، digest). | allow أو deny؛ ولا يجوز أن تصبح Skill مرفوضة قابلة للتحميل. وينبغي له فحص القدرات المعلنة مقابل الأدوات المركّبة، ويجوز له رفض الإعلانات الواسعة أكثر من اللازم. |
| steps/skillLoad | بوابة وقت التشغيل لكل تفعيل؛ ويجعل load_path التحميلات المتتالية مرئية (Skill A تحمّل B، وB تحمّل C). | allow أو deny؛ وينبغي له رفض التحميلات دون موافقة قابلة للإسناد، أو بقيمة Digest مختلفة، أو خارج composed_skills المعلنة. |
| steps/skillUnload | يحافظ على تحديث المخزون النشط؛ ويجوز بديلًا أن يندمج في agbom/changed. | للتدقيق فقط؛ والتحميل والإلغاء المتكرر إشارة جديرة بالمراقبة وفق المواصفة. |
ملخص خاص لأوصاف Hooks في ACS v0.1.0.
يغطي Digest الأداة القابلة للتحميل بالكامل، بما في ذلك أوزان النماذج أو المحوّلات (Adapters) المضمَّنة؛ ولا يُحفظ في AgBOM سوى المرجع وDigest، لا المحتوى. ولا ينبغي لـ Guardian أن يعتمد على digest_verified الذي يبلّغ عنه إطار العمل، بل أن يقارن بنفسه مع موافقته. ويسمي مقترح التصميم الخاص بدورة حياة Skill في المستودع الحد صراحةً: يربط Digest الأداة المسجلة، لا الكود الذي تحمّله Skill لاحقًا — إذ يمر هذا التحميل اللاحق بوصفه network.egress أو process.execute عبر Tool-Hooks الاعتيادية. وفحص Marketplace قبل النشر ليس جزءًا من ACS، ولا يزال ربط Trace مفقودًا للـ Hooks الثلاثة الخاصة بـ Skills (الفصل 9).
التوافق ومستوى النضج: ما يقدمه v0.1 — وما لا يقدمه
ACS مشروع OWASP حديث في مرحلة مبكرة. لذلك فإن المعتبر في قرارات البنية والمشتريات هو الوضع القابل للتحقق: المواصفة v0.1.0، والإصدار 0.1.2، وتطبيق مرجعي بوصفه إثبات مفهوم (Proof of Concept)، والتوافق بوصفه إعلانًا ذاتيًا.
0.1.0إصدار المواصفة؛ الإصدار 0.1.2، وسم بتاريخ 21.09.2026
2 من 19Hooks يقيّمها التطبيق المرجعي فعليًا
7ملفات تعريف التوافق؛ وكل ادعاء هو إعلان ذاتي
03/2027الموعد المستهدف لـ v0.2.0؛ ولا يوجد موعد لـ v1.0
ACS مشروع ضمن OWASP GenAI Security Project، ومصنَّف وفق بيانات OWASP-Nest الوصفية الخاصة به في المستوى 2 (Incubator)؛ ويصف قائد المشروع الوضع بأنه «public preview». وACS ليس معيار ISO ولا IETF ولا W3C، وليس كذلك معيارًا منسَّقًا.
ما يقدمه v0.1 بالفعل
رغم المرحلة المبكرة، يقدم v0.1 مضمونًا: مفردات مشتركة من 19 Hook وخمس حالات تصرف (Dispositions)، و44 مخطط JSON منشورًا، ووضعية فشل (Failure Posture) موصوفة بوضوح مع التزام تدقيق لكل تجاوز، ومواصفة تسمي ثغراتها صراحةً. وفي تقديرنا، يكفي ذلك لقياس المورّدين بمعيار مفتوح ومشترك، ولتصميم نقاط التحكم الخاصة بحيث تبقى متوافقة مع الإصدارات اللاحقة — لكنه لا يكفي للاعتماد على ملصقات التوافق.
التوافق إعلان ذاتي
في Handshake يعلن Observed Agent الملفات التعريفية التي يدعمها (profiles_supported)، ويعلن Guardian ما يقبله (profiles_accepted). وهناك سبعة ملفات تعريفية بالضبط: acs-core إلزاميًا، إضافةً إلى acs-trace وacs-inspect وacs-inspect-dynamic وacs-provenance وacs-crypto وacs-audit. ولا توجد درجات أو مستويات. أما من يتحقق من ادعاءات التوافق، فتجيب المواصفة نفسها: في v0.1.0 لا أحد. لا توجد مجموعة اختبارات، ولا سجل للتطبيقات المتوافقة، ولا جهة تفصل في الادعاءات المتنازع عليها (Issue #19، مفتوحة، الأولوية P1). كما أن ACS-Core لا يضمن سوى أمرين — قناة موثَّقة، والتزام Observed Agent بقرارات Guardian. ولا يضمن سياسات صارمة: فحتى Guardian متساهل يكون متوافقًا.
التطبيق المرجعي: الوضع الفعلي بصراحة
التطبيق المرجعي الوحيد هو صراحةً إثبات مفهوم. فهو يشغّل Agent Governance Toolkit (AGT) من Microsoft دون تعديل بوصفه محرك سياسات خلف ACS-Wire، مع ربط بمضيفَي Claude Code وOpenCode. ولا يدّعي acs-core إلا بشكل مقيَّد («qualified») ولا أيًّا من الملفات التعريفية الستة الاختيارية. ولا يتوفر معيار مقارنة لقابلية التشغيل البيني مع AGT؛ فهو هدف نافذة الـ 90 يومًا منذ الانطلاق في 10.09.2026. ولا يمكن أن يُستنتج من ذلك دعم Microsoft لـ ACS. تنبيه لتشابه الأسماء: في توثيق AGT يشير «ACS» إلى «Agent Control Specification» الخاصة بـ Microsoft (02.06.2026)، وهي لغة السياسات في AGT — لا إلى معيار OWASP.
| متطلب ACS-Core | وضع التطبيق المرجعي |
|---|---|
| المصافحة (Handshake) handshake/hello | مخدوم، لكن ServerHello يتكون من ثوابت؛ ولا يُقرأ ClientHello |
| ستة Hooks على الأقل | 2 من 19 مقيَّمان: steps/toolCallRequest وsteps/toolCallResult |
| جميع حالات التصرف الخمس | allow وdeny وmodify موجودة؛ وask دون ask_details (غير صالح وفق المخطط)؛ وdefer لا يُنتَج أبدًا |
| chain_hash في الاستجابات | السلسلة مُدارة، لكنها لا تُنشر في أي استجابة |
| توقيع خط الأساس HMAC-SHA256 | غير مطبَّق؛ Wire غير موثَّق، والحماية فقط عبر الربط بـ Loopback (Issue #70) |
| الحماية من إعادة الإرسال | غير مطبَّق |
| الالتزام بالقرار (Decision Honoring)، on_decision_failure | مطبَّق على كلا المضيفين؛ الإعداد الافتراضي proceed (fail-open)، ويُدقَّق كل تجاوز (Issues #32، #37) |
| system/ping، protocols/MCP/* | غير مطبَّق |
المصدر: الإفادة الذاتية للتطبيق المرجعي (reference-implementations/agt/README.md)، حالة فرع main بتاريخ 10.09.2026. ولم يُضَف التطبيق المرجعي إلى المستودع إلا بعد Commit الإصدار الموسوم 0.1.2.
ثغرات مفتوحة في المواصفة ذات أهمية عملية
- الإعداد الافتراضي fail-open: يكون on_decision_failure ووضعية بدء التشغيل على proceed؛ ويجب عليكم إعداد fail-closed (deny أو refuse) عن وعي.
- لا آلية إيقاف: لا يعرف v0.1 مفتاح إيقاف طارئ (Kill-Switch)؛ والمقاطعة (interruption) والبث (Streaming) مقرران لـ v0.2. وفي v0.1 لا يُوقَف الوكيل إلا تدريجيًا عبر deny.
- نطاق الإلزام في تحوّل: من شأن اقتراح مفتوح (PR #21) أن يخفض modify وsystem/ping إلى SHOULD.
- ثغرات التشغيل البيني (تحليل خاص): معلمات HKDF وتوقيع Handshake ومدخلات request_hash غير محددة بما يكفي.
- انحراف التوثيق: لا تزال بعض الصفحات تذكر 16 بدلًا من 19 Hook أو ثلاث حالات تصرف فقط. والمعياري هو المواصفة والمخططات.
التطبيق العملي والصلة بالإطار التنظيمي
ACS ليس أداة امتثال. لكنه يوفر لبنات تقنية يمكنكم بها دعم تقديم أدلة الإثبات للالتزامات الناشئة عن AI Act وNIS2 وDORA وCRA، وكذلك لمتطلبات ISO/IEC 42001. يربط هذا الفصل اللبنات بالمتطلبات ويرسم مدخلًا من خمس خطوات.
ثلاثة تصنيفات مسبقة. أولًا، لا يؤسس ACS أي افتراض للتوافق؛ ولا يتضمن نص المواصفة أي ربط بـ AI Act أو NIS2 أو DORA أو CRA أو ISO/IEC 42001 — وكل عمليات الربط أدناه استنتاجات من VamiSec. ثانيًا، وكلاء الذكاء الاصطناعي ليسوا بحد ذاتهم أنظمة عالية المخاطر. وتسري التزامات المخاطر العالية الواردة في الفصل III الأقسام 1–3 من اللائحة (EU) 2024/1689 بعد Digital Omnibus (اللائحة (EU) 2026/1744) اعتبارًا من 02.12.2027 للملحق III واعتبارًا من 02.08.2028 للملحق I؛ وتسري المادة 50 منذ 02.08.2026. ثالثًا، تتوقف كل حجة على الملفات التعريفية: إذ لا يتضمن ACS-Core وحده Trace ولا AgBOM ولا request_hash.
| المتطلب | لبنة ACS (الملف التعريفي) | دليل الإثبات | تحفّظ |
|---|---|---|---|
| AI Act المادة 12: التسجيل التلقائي | Trace لكل خطوة وأحداث القرار، وسلسلة التدقيق (acs-trace، acs-audit) | بيانات SIEM، وسلسلة تجزئة قابلة للتحقق | Trace إفادة ذاتية؛ وACS-Core دون Trace |
| AI Act المادة 14 الفقرة 4 البند d: التجاوز | ask على toolCallRequest مع موافِق بشري وtimeout_disposition بقيمة deny (acs-trace) | أحداث القرار مع ask_details، وإدخالات intent_extension | يجوز وفق المواصفة أن يكون الموافِق أيضًا agent أو service — يُستبعد ذلك عبر السياسة |
| AI Act المادة 14 الفقرة 4 البند e: الإيقاف | deny عند sessionStart وturnStart وtoolCallRequest؛ وon_decision_failure بقيمة deny، ووضعية بدء التشغيل refuse | دليل إعداد fail-closed، وسجل تمرين إيقاف | لا Kill-Switch في v0.1؛ والإعداد الافتراضي fail-open |
| AI Act المادة 26: الإشراف والمراقبة والسجلات ≥ 6 أشهر | موافِقون موثَّقون، وGuardian بوصفه مراقبًا لوقت التشغيل، وتصدير Trace | مصفوفة أدوار الموافِقين، وتقرير المراقبة، وسياسة الاحتفاظ | لا ينظم ACS الاحتفاظ؛ وتبقى الكفاءة مسألة تنظيمية |
| AI Act المادة 72: المراقبة بعد الطرح في السوق | مؤشرات Trace، وAgBOM (mcp_server، a2a_peer)، وHooks الوكلاء الفرعيين | قسم PMM «بيانات وقت التشغيل للوكلاء» | قالب المفوضية لن يصدر قبل 02.09.2027 |
| NIS2 المادة 21 الفقرة 2 / المادة 30 من BSIG | Policy-as-Code (v0.1: OPA/Rego؛ وربط Cedar مخطط لـ v0.2)، وسياسات القدرات، وAgBOM مع Digest الخاص بـ Skill | كود سياسات معتمد، وسجل للمكونات والمورّدين لكل وكيل | فحص Marketplace ليس جزءًا من ACS |
| DORA المواد 8–10، RTS (EU) 2024/1774 المادة 12 | AgBOM بوصفها مخزونًا، وTrace وفق OCSF، ورأس سلسلة موقَّع، وأحداث تدقيق fail-open، وtimestamp وskew_window_ms | سجل أصول تقنية المعلومات والاتصالات (ICT) موسَّع، ومفهوم التسجيل، ودليل مزامنة الوقت | لا يحمي HMAC من Guardian مخترَق |
| CRA الملحق I: التسجيل، SBOM | Trace بوصفه وظيفة في المنتج، وتصدير AgBOM (CycloneDX 1.6، SPDX 3.0) | SBOM البناء إضافةً إلى تصدير AgBOM، وتوثيق المنتج | لمنتجات الوكلاء فقط، ويسري الملحق I اعتبارًا من 11.12.2027؛ ولا تحل AgBOM محل SBOM |
| ISO/IEC 42001 A.6.2.6، A.6.2.8، A.7.5، A.10.3 | Trace وسلسلة التدقيق، وacs-provenance، وAgBOM | مفهوم سجل الأحداث، وأدلة Provenance، وقائمة المورّدين | لا افتراض للتوافق مع AI Act من خلال 42001 |
| NIST AI RMF MANAGE 2.4، MEASURE 2.4، GOVERN 1.6 | deny وask، وTrace، وAgBOM | معايير التعطيل، وخطة المراقبة، والمخزون | إطار طوعي |
استنتاج VamiSec بناءً على ACS v0.1.0؛ لم تُجرِ OWASP ولا أي جهة رسمية هذا الربط. وينبغي للبنوك وشركات التأمين أن تحتج أساسًا عبر DORA، لأن التزام المراقبة وفق المادة 26 الفقرة 5 من AI Act يُعدّ مستوفًى من خلال الحوكمة المالية. وبالنسبة للمؤسسات المالية ذات إطار إدارة مخاطر ICT المبسّط (المادة 16 من DORA) يسري الباب III من RTS بدلًا من المادة 12.
مدخل من خمس خطوات
- 1الجردحصر الوكلاء وتصنيفهم
احصروا الوكلاء والنماذج والأدوات وخوادم MCP وSkills، وحدّدوا لكل استخدام التصنيف وفق AI Act. النتيجة: سجل للوكلاء مع فئة المخاطر والمسؤولين والوصول إلى البيانات.
- 2البنيةتحديد نقاط التحكم والملفات التعريفية
تحققوا من الـ Hooks التي تطلقها منصتكم فعليًا، ومن تلك التي يؤكدها Guardian في Handshake ضمن methods_evaluated: كل ما عدا ذلك يُعدّ allow-by-default وغير محمي. اختاروا الملفات التعريفية وفق حاجة الإثبات، مثل acs-core إضافةً إلى acs-trace وacs-audit لالتزامات التسجيل.
- 3السياسةصياغة السياسات ككود
تعمل الطبقة الحتمية أولًا (مرجع v0.1: OPA/Rego). صيغوا قواعد للأوامر التدميرية وEgress والمدفوعات، واشترطوا للإجراءات ذات العواقب ask مع موافِق بشري وtimeout_disposition بقيمة deny، وأشيروا إلى إصدارات السياسات في policy_references.
- 4التشغيلتحديد وضعية الفشل واختبارها
اضبطوا للوكلاء ذوي إمكانات الضرر العالية on_decision_failure على deny ووضعية بدء التشغيل على refuse. اختبروا تعطل Guardian وإعادة الإرسال وأخطاء التوقيع، وراقبوا حالات فشل القرار مباشرةً، لأن نجاح Ping لا يثبت سلامة التنفيذ.
- 5دليل الإثباتربط Trace وتوثيق أدلة الإثبات
صدّروا OCSF أو OpenTelemetry إلى SIEM، وطبّقوا حالات الاستخدام من الفصل 9، وحدّدوا فترات الاحتفاظ. أمّنوا رأس السلسلة خارجيًا، وتحققوا من بيانات التوافق لدى المورّدين عبر اختبارات خاصة بكم.
تقدم الورقة البيضاء لمسؤولي أمن المعلومات «Agent Control für CISOs» تعمقًا يتضمن برنامج 100 يوم ونموذج أدوار ومؤشرات وأسئلة تقييم لمنصات الوكلاء، ويمكنكم طلبها أدناه في هذه الصفحة. ترافق VamiSec التقييم والبنية وتصميم السياسات والاختبارات بوصفها جهة استشارية مستقلة؛ وVamiSec ليست جزءًا من مشروع ACS.
التقييم الذاتي (Self-Assessment)
ACS Readiness Assessment: إلى أي مدى وصل التحكم في وقت التشغيل لوكلاء الذكاء الاصطناعي لديكم؟
18 سؤالًا في ستة أبعاد، نحو 10 دقائق. تحصلون على مستوى نضجكم، والجاهزية لكل لبنة من ACS، وأكبر ثغراتكم مع خطوة تالية محددة.
0 / 18 أسئلة تمت الإجابة عنها
المستويات الأربعة
- 0 غير موجود
- لا توجد بشأنه لائحة ولا تطبيق تقني.
- 1 مخصّص (Ad hoc)
- تعالجه فرق منفردة بشكل فردي، دون توجيه ودون دليل إثبات.
- 2 محدَّد
- منظَّم بشكل ملزم ومطبَّق لأهم الوكلاء.
- 3 مفروض ومقاس
- مفروض تقنيًا، لجميع الوكلاء المعنيين، ومُتحقَّق منه بالمؤشرات.
نتيجتكم
لم تتم الإجابة عن جميع الأسئلة بعد — تُحتسب الأسئلة المفتوحة في التقييم بوصفها «غير موجود».
الجاهزية لكل لبنة من ACS
ACS-Coreثغرة0 %
خط الأساس الإلزامي: الحد الأدنى من الـ Hooks، وجميع حالات التصرف الخمس، والالتزام بالقرار مع وضعية الفشل، وسلسلة التدقيق، وتوقيع HMAC.
ACS-Traceثغرة0 %
الخطوات والقرارات بوصفها أحداث OpenTelemetry أو OCSF لـ SIEM والتحليل الجنائي الرقمي.
ACS-Inspectثغرة0 %
AgBOM بوصفها مخزون وقت التشغيل لكل جلسة؛ والتغييرات أثناء التشغيل إضافةً إلى ذلك مع acs-inspect-dynamic.
ACS-Provenanceثغرة0 %
المصدر وسلسلة النسب على كل حقل حامل للبيانات بوصفهما أساسًا للسياسات القائمة على المصدر.
الإشراف وEU AI Actثغرة0 %
موافقات وتسجيلات تدعم تقديم أدلة الإثبات مثلًا للمادتين 12 و14 في الاستخدامات عالية المخاطر — تقييم VamiSec، لا افتراض للتوافق.
أكبر الفجوات لديكم
لم تتم الإجابة عن جميع الأسئلة بعد — تُحتسب الأسئلة المفتوحة في التقييم بوصفها «غير موجود».
لا تغادر إجاباتكم متصفحكم. لا يُحفظ شيء؛ ويحتوي رابط النتيجة على إجاباتكم في جزء URL (Fragment) فقط.
ورقة بيضاء مجانية
Agent Control für CISOs — التحكم في وقت التشغيل مع OWASP Agent Control Standard
الدليل العملي لـ ACS v0.1.0: ما الذي ينظمه المعيار، وكيف تُدخلون Guardian والسياسات وTrace وAgBOM، وكيف يمكن ربط ذلك بـ AI Act وNIS2 وDORA — وما لا يقدمه v0.1 بعد اليوم.

41 صفحةPDF، مجانًاالألمانيةالإصدار 10/2026
- عشر رسائل أساسية وإحاطة لمجلس الإدارة في صفحة واحدة — مع خمسة قرارات للإدارة العليا
- بنية مرجعية لـ Guardian وPolicy-as-Code تشمل مفهوم وضعية الفشل والتكامل مع SOC
- ربط تنظيمي من AI Act حتى ISO/IEC 42001 مع أدلة الإثبات — وحدود مميزة بوضوح
- برنامج 100 يوم، ونموذج نضج، و20 سؤالًا للمشتريات موجهة إلى منصات الوكلاء ومزوّدي Guardian
الورقة البيضاء لمسؤولي أمن المعلومات: Agent Control für CISOs
الجزء I · الفهم
ملخص تنفيذي بعشر رسائل أساسية وإحاطة لمجلس الإدارة في صفحة واحدة، ومشكلة التحكم في الذكاء الاصطناعي الوكيلي مع حوادث موثقة، وACS في لمحة: الأدوار والركائز والملفات التعريفية والتاريخ والحوكمة.
الجزء II · التنفيذ
الـ Hooks وحالات التصرف مع أمثلة Wire، وبنية Guardian وPolicy-as-Code، ووضعية الفشل، وTrace إلى SOC، وAgBOM بوصفها مخزون وقت التشغيل، والهوية وProvenance ضد عواقب Prompt Injection.
الجزء III · الإدارة
OWASP Agentic Top 10 × ACS بوصفها خريطة حرارية، وربط تنظيمي مع AI Act وNIS2 وDORA وCRA وISO/IEC 42001 وNIST AI RMF مع أدلة الإثبات — وتقييم صريح لما يقدمه v0.1 وما لا يقدمه.
البرنامج والمشتريات
نموذج نضج مع نموذج تشغيلي، وبرنامج تطبيق لمدة 100 يوم مع مخرجات ومؤشرات أداء (KPIs)، و20 سؤالًا للمشتريات موجهة إلى منصات الوكلاء ومزوّدي Guardian، وإجابات عن الاعتراضات المعتادة في مجلس الإدارة.
جديد · ICSPIS 2026 (IEEE)
الاختبار بدلًا من الثقة: أي أدلة تجعل ضوابط ACS قابلة للفحص
Guardian يقرر – لكن هل يثبت القياس عن بُعد لديكم أيضًا أن التنفيذ طابق القرار؟ تستنتج ورقتنا المقبولة في ICSPIS 2026 من MAESTRO وSTRIDE عقدًا للأدلة (Evidence Contract)؛ وتنقله الدراسة المعمّقة حقلًا بحقل إلى Hooks وProvenance وTrace في ACS – مع مصفوفة أعطال (Fault-Matrix) وACS-Crosswalk واختبارات سلبية لـ CI لديكم.
92,9 %الاستدعاء (Recall) مع روابط ذات صلة بالأمن (P3)
16,7 %الاستدعاء مع تتبع سببي صرف (P2)
50 %الاستدعاء دون أحداث القرار (F1)
- ACS-Crosswalk: عائلة الهجوم → المسند → Hook → استجابة Guardian
- الحد الأدنى لحقول إيصال القرار (Decision-Receipt) في policy_data
- Research Edition (بالإنجليزية): الورقة إضافةً إلى ACS Practitioner Brief
المسرد
مسرد: مصطلحات Agent Control Standard
أهم مصطلحات ACS v0.1.0 في تعريفات قصيرة قابلة للاقتباس — وتبقى مصطلحات المواصفة الإنجليزية بأصلها.
20 من 20 مصطلحًا
- الوكيل الحارس (Guardian Agent)نقطة إنفاذ السياسات (Policy Enforcement Point)
- جهة السياسات الخارجية في ACS: تقيّم Hooks الخاصة بـ Observed Agent خارج النموذج وتستجيب بحالة تصرف (Disposition) — أولًا عبر كود سياسات حتمي، ومستكملة اختياريًا بطبقة LLM. ولا ينبغي مساواتها بمصطلح Gartner السوقي «guardian agents».
- الوكيل المراقَب (Observed Agent)
- نظام الذكاء الاصطناعي المراقَب الذي يطبّق عقد ACS-Wire، ويرسل Hooks عند كل نقطة قرار، وينفّذ حالات التصرف التي يتلقاها. فهو يبلّغ، لكنه لا يقرر بشأن إجراءاته الخاصة.
- Hooksteps/*
- نقطة في دورة حياة وكيل الذكاء الاصطناعي يتوقف عندها ويستشير الـ Guardian قبل أن يتصرف. يحدد ACS v0.1.0 عدد 19 خطافًا أصليًا من نوع steps/*؛ ويشترط ACS-Core ستة منها على الأقل.
- DispositionVerdict
- ردّ الـ Guardian على خطاف ما: allow أو deny أو modify أو ask أو defer. وفي جميع الحالات باستثناء allow يكون التعليل في الحقل reasoning إلزاميًا.
- Failure Postureon_decision_failure
- سلوك الـ Observed Agent عندما لا يصل قرار قابل للاستخدام في الوقت المناسب. الإعداد الافتراضي هو proceed (fail-open)؛ أما deny (fail-closed) فيجب تهيئته عن قصد، ويجب تدقيق كل تنفيذ يتم دون قرار.
- Handshakehandshake/hello
- إنشاء الجلسة الإلزامي عبر handshake/hello، حيث يتفاوض الـ Observed Agent والـ Guardian على الإصدار والطرق المُقيَّمة (methods_evaluated) والمهلة الزمنية ووضعية الإخفاق (Failure Posture). وتُعدّ الطرق غير المُقيَّمة مسموحًا بها دون فحص.
- ACS-Coreacs-core
- الملف الأساسي الإلزامي لكل تطبيق لـ ACS. ووفقًا للمواصفة يضمن أمرين: قناة موثَّقة، والتزام الـ Observed Agent بقرارات الـ Guardian — لكنه لا يضمن سياسات صارمة.
- ملف المطابقةملف المطابقة (Conformance Profile)
- نطاق قدرات يُعلَن في الـ Handshake: acs-core إضافة إلى الملفات الاختيارية acs-trace وacs-inspect وacs-inspect-dynamic وacs-provenance وacs-crypto وacs-audit. وفي v0.1.0 يُعدّ ذلك إعلانًا ذاتيًا محضًا دون مجموعة اختبارات أو جهة فحص.
- AgBOMقائمة مكوّنات الوكيل (Agent Bill of Materials)
- الجرد الديناميكي لمكوّنات الـ Observed Agent بثمانية أنواع من model حتى skill. يُبلَّغ عنه في كل جلسة، ويُكتب في الـ Audit-Chain، ويمكن أن يُطلق قرارات من الـ Guardian؛ وهو ليس AI-BOM ولا CRA-SBOM.
- Provenance
- بيانات منشأ دقيقة على مستوى الحقل للبيانات في حمولة الخطاف (Hook-Payload): origin وsource_id وderived_from. يضعها الإطار بشكل حتمي، ولا يضعها الـ LLM أبدًا؛ وهي إلزامية فقط في ملف acs-provenance.
- سلسلة التدقيق (Audit-Chain)SessionContext
- سلسلة ContextEntries الخاصة بالجلسة، وهي قابلة للإلحاق فقط (append-only) ومترابطة عبر تجزئات SHA-256. يجعل الـ chain_hash المنشور والموقَّع أي تعديلات لاحقة قابلة للكشف — أي أنها كاشفة للتلاعب، لكنها غير محمية من Guardian مُخترَق.
- Policy-as-Code
- قواعد أمنية في صورة شيفرة قابلة للتنفيذ ومُدارة الإصدارات بدلًا من وثيقة. وفي ACS تمثّل الطبقة الحتمية للـ Guardian التي تعمل دائمًا أولًا؛ والمرجع الأولي في v0.1 هو OPA/Rego، ويتبعه Cedar مع v0.2.
- الإنسان في الحلقة (Human-in-the-Loop) / ASK-Approverask، الجهة المعتمِدة (Approver)
- في حالة ask يعرض الـ Guardian إجراءً على جهة معتمِدة (Approver) للموافقة. وقد تكون الجهة المعتمِدة إنسانًا أو وكيلًا أو خدمة، ويجب التحقق من هويتها؛ ولا تتحقق الرقابة البشرية إلا عبر سياسة تتضمن approver.type human وtimeout_disposition deny.
- DEFERdefer
- الحكم الذي يؤجّل به الـ Guardian قرارًا ما، مثلًا بسبب نقص السياق أو انخفاض الثقة. وإذا انقضت المهلة، يسري deny افتراضيًا؛ ويجب تقييد التأجيلات المتتالية لكل جلسة.
- MODIFYmodify
- الحكم الذي يسمح به الـ Guardian بإجراء ما في صيغة معدّلة — عبر parameter_overrides أو الحجب (redactions) أو محتوى بديل كامل. ويجب على الـ Observed Agent معاملة أي modify مخالف للقواعد معاملة deny.
- نية الجلسة (Session Intent)Intent.parsed
- مجموعة الـ Capabilities المسموح بها لغرض معيّن والمحددة عند بدء الجلسة. لا يجوز تغييرها من قِبل الـ LLM ولا عبر مخرجات الأدوات، ولا تتوسع إلا عبر موافقة مُدقَّقة من خلال ask (intent_extension).
- Capability
- صلاحية مجردة مثل filesystem.delete أو network.egress أو process.execute. تصف أثر الإجراء بصرف النظر عن الأداة المحددة، وهي الوحدة التي تُصاغ بها نية الجلسة (Session Intent) والسياسات.
- تغليف MCPprotocols/MCP/*
- نطاق الأسماء المحدد في v0.1 الذي يمرّر فيه ACS رسائل MCP دون تعديل إلى الـ Guardian. ويجوز لعمليات النشر بدلًا من ذلك تمثيل استدعاءات أدوات MCP عبر خطافات الأدوات العامة؛ أما تغليف A2A فمقرر فقط لـ v0.2.
- التطبيق المرجعي (AGT)التطبيق المرجعي (Reference Implementation)
- إثبات المفهوم الوحيد في مستودع ACS: Guardian مكتوب بـ TypeScript يشغّل Agent Governance Toolkit من Microsoft دون تعديل خلف ACS-Wire، ومتصل بـ Claude Code وOpenCode — وهو ليس جاهزًا للإنتاج ولا متوافقًا بالكامل مع ACS-Core.
- Agent Control Specification (من Microsoft)Microsoft ACS
- مواصفة سياسات مستقلة قائمة على Rego من Microsoft لـ Agent Governance Toolkit (02.06.2026). يُرمز إليها أيضًا بـ «ACS»، لكنها ليست جزءًا من OWASP Agent Control Standard.
FAQ
أسئلة شائعة حول Agent Control Standard
إجابات موجزة لمسؤولي أمن المعلومات (CISO) ومعماريي الأمن وفرق GRC — حتى 04.10.2026، المواصفة v0.1.0.
إن OWASP Agent Control Standard (ACS) مواصفة مفتوحة على مستوى البروتوكول (Wire) للتحكم في وكلاء الذكاء الاصطناعي أثناء التشغيل. وهي تحدد كيف يُبلغ وكيلٌ ما — الـ Observed Agent — عن الخطوات ذات الصلة عبر خطاف إلى Guardian Agent منفصل وينتظر قراره: allow أو deny أو modify أو ask أو defer. وتتكامل ثلاث ركائز: Instrument للخطافات والأحكام، وTrace لأحداث التدقيق وفق OpenTelemetry وOCSF، وInspect لـ AgBOM. ويُعدّ ACS مشروعًا ضمن OWASP GenAI Security Project، وهو حاليًا بصيغة المواصفة v0.1.0، الإصدار 0.1.2 (موسوم في 21.09.2026). الشيفرة والمخططات مرخّصة بموجب Apache-2.0، والتوثيق بموجب CC BY-SA 4.0.
لا. ACS مشروع من OWASP في مرحلة مبكرة — وفقًا لبيانات المشروع الوصفية في المستوى 2 (Incubator)، ويصفه قائد المشروع نفسه بأنه «public preview». وهو ليس معيارًا من ISO أو IETF أو W3C، ولا معيارًا مُنسَّقًا. والمطابقة في v0.1.0 إعلان ذاتي لا يتحقق منه أحد (Issue #19). بل إن النطاق الإلزامي لـ ACS-Core لا يزال قيد النقاش في Pull Request مفتوح. كما أن خارطة الطريق مؤقتة: إذ ذُكر v0.2.0 هدفًا لشهر مارس 2027، ولا يوجد بعد تاريخ لـ v1.0. وينبغي أيضًا الشفافية بشأن المنشأ: فتأسيس المشروع وقيادته متأثران بقوة بـ Zenity.
موجّهات النظام ليست ضوابط: فهي تعمل في القناة نفسها التي يستطيع المهاجم التأثير فيها عبر حقن الموجّهات (Prompt Injection). أما أطر الـ Guardrails فهي تطبيقات محددة لكل منها واجهتها الخاصة. في المقابل يحدد ACS واجهة مفتوحة عابرة للأطر بين مضيف الوكيل والـ Guardian الخارجي: يُتخذ القرار خارج النموذج، وتعمل السياسات الحتمية أولًا، ويجب على الوكيل تنفيذ النتيجة. ولهذا أهمية لأن حقن الموجّهات وفقًا لـ OpenAI «unlikely to ever be fully 'solved'» (22.12.2025). لا يمنع ACS حقن الموجّهات — بل يوفّر نقطة التحكم الموحّدة التي تعمل عندها السياسات ضد عواقبه.
لا يحل ACS محل أي من البروتوكولين، بل يضيف فوقهما طبقة تحكم. فبالنسبة إلى MCP تحدد v0.1 نطاق الأسماء المحايد للإصدارات protocols/MCP/*: تُمرَّر الرسائل دون تعديل إلى الـ Guardian الذي يقيّمها قبل تمريرها أو معالجتها. ويجوز لعمليات النشر بدلًا من ذلك تمثيل استدعاءات أدوات MCP عبر steps/toolCallRequest وsteps/toolCallResult؛ أما ما إذا كان تغليف MCP جزءًا من ACS-Core فنص المواصفة متناقض بشأنه. كما أن نص المواصفة لا يزال يفترض آليات سابقة لمراجعة MCP الحالية 2026-07-28. وA2A في v0.1 محجوز فقط، ويتبعه التغليف مع v0.2. وحتى ذلك الحين يبقى steps/agentTrigger مع a2a_inbound ونوع AgBOM المسمى a2a_peer.
يمكن لـ ACS دعم إعداد أدلة الإثبات، لكنه لا يحقق الامتثال لـ AI Act ولا يُنشئ قرينة مطابقة. فبالنسبة إلى التزام التسجيل وفق المادة 12 يوفّر acs-trace (أحداث لكل خطوة) وacs-audit (سلسلة تدقيق كاشفة للتلاعب ومرتبطة بمحتويات الطلبات) لبنات أساسية. وبالنسبة إلى الرقابة البشرية وفق المادة 14 لا يصلح ask إلا مع سياسة «جهة معتمِدة بشرية، المهلة deny»؛ ولا تعرف v0.1 زر إيقاف، بل deny على مستوى كل خطوة فقط. انتبهوا إلى المواعيد النهائية: تسري التزامات الأنظمة عالية المخاطر وفق اللائحة (EU) 2026/1744 اعتبارًا من 02.12.2027 (الملحق III) أو 02.08.2028 (الملحق I)، والمادة 50 سارية منذ 02.08.2026. ولا تُعدّ وكلاء الذكاء الاصطناعي عالية المخاطر بحد ذاتها. وهذا التصنيف استنتاج من VamiSec.
افتراضيًا يواصل الوكيل العمل. فإذا لم يصل قرار قابل للاستخدام خلال المهلة المتفاوض عليها، يسري on_decision_failure بالقيمة الافتراضية proceed (fail-open)؛ كما أن فشل الـ Handshake يبدأ الجلسة افتراضيًا دون حماية. ويجب تسجيل كل تنفيذ من هذا النوع بوصفه حدث تدقيق — وتقرّ المواصفة صراحةً بأن المهاجم الذي يعطّل القناة يحوّل التحكم بذلك إلى مجرد تسجيل. ويمكنكم تحقيق fail-closed عبر on_decision_failure: deny ووضعية بدء التشغيل refuse. في المقابل تؤول قرارات ask وdefer المنتهية افتراضيًا إلى deny. وبما أن الوضعية تسري لكل جلسة، نوصي باستخدام Guardians أو جلسات منفصلة لكل فئة مخاطر (تقييم VamiSec).
لا تحدد المواصفة قيمة بالمللي ثانية. فالمهلة يُتفاوض عليها في الـ Handshake (timeout_config.default_ms، واختياريًا لكل طريقة)؛ وكل مللي ثانية منها تمثّل في أسوأ الحالات وقت انتظار إضافيًا للوكيل. ويضبط التطبيق المرجعي 5000 ms. وتوفّر زمن الاستجابة السياساتُ الحتمية التي ينبغي ألا تتضمن وفق المواصفة استدعاءات HTTP خارجية؛ أما طبقة الـ LLM الاختيارية فتكلّف في تقديرنا أكثر بشكل ملحوظ، ويستغرق التوقيع باستخدام SLH-DSA-128s وفق المواصفة عدة مئات من المللي ثانية. ومن الناحية التشغيلية نوصي بتشغيل الـ Guardian قريبًا من الوكيل وبصورة مكررة، وتخصيص ميزانية للمهل لكل طريقة، ومراقبة معدل إخفاق القرارات (Decision-Failure-Rate) بوصفه مؤشرًا — فنجاح system/ping لا يثبت أن الإنفاذ يعمل.
يوجد تطبيق مرجعي واحد فقط، وهو صراحةً إثبات مفهوم: Guardian مكتوب بـ TypeScript يشغّل Agent Governance Toolkit من Microsoft دون تعديل خلف ACS-Wire، مع ربط بالمضيفين Claude Code وOpenCode. وهو يقيّم خطافين من أصل 19 بشكل حي (steps/toolCallRequest وsteps/toolCallResult)، ولا يوقّع شيئًا (Issue #70)، ولا يملك حماية من إعادة التشغيل (Replay)، ويعمل افتراضيًا بوضع fail-open (Issues #32 و#37). ويهدف المشروع إلى معيار قياس للتشغيل البيني حتى مطلع ديسمبر 2026، لكنه لم يتوفر بعد. ولا يُستنتج من ذلك دعم من Microsoft. ولا نعلم بوجود استخدامات إنتاجية موثوقة (حتى 04.10.2026).
لا — إنه فخ تسمية. فقد نشرت Microsoft في 02.06.2026 «Agent Control Specification» خاصة بها، يُرمز إليها أيضًا بـ ACS: مواصفة سياسات قائمة على Rego لـ Agent Governance Toolkit تتضمن ثماني نقاط اعتراض وقرارات مثل allow وwarn وdeny وescalate. وهي صادرة عن Microsoft وليس عن OWASP GenAI Security Project، ولا تذكر معيار OWASP. والصلة غير مباشرة: إذ يستخدم التطبيق المرجعي لـ ACS هذه الأداة محركًا للسياسات؛ وحزمة npm المستخدمة هناك agent-control-specification هي SDK من Microsoft، وليست من مخرجات معيار OWASP. وفي هذه الصفحة يعني ACS دائمًا OWASP Agent Control Standard.
تعاملوا مع ACS بوصفه بنية مرجعية، لا ميزة منتج. في البداية يأتي جرد للوكلاء يشمل الأدوات والنماذج وخوادم MCP والمهارات، وتصنيف للمخاطر، مثلًا وفق lethal trifecta. ويلي ذلك وضع سياسات للـ Capabilities ذات العواقب الكبيرة عند steps/toolCallRequest، واتخاذ قرار واعٍ بشأن وضعية الإخفاق والجهات المعتمِدة، وربط الـ Trace بنظام SIEM لديكم؛ ويصف الفصل 14 الخطوات الخمس بالتفصيل. ويُظهر Profil-Navigator والتقييم الذاتي نقطة انطلاقكم، وتتضمن الورقة البيضاء برنامجًا لمدة 100 يوم. أما ادعاءات المورّدين بشأن ملفات ACS فتحققوا منها بالاختبار بدلًا من تبنّيها. وتُبيّن دراستنا المعمّقة «Agentic AI Security Testing» حول ورقة ICSPIS-2026 كيف تثبتون فعالية سياسات الـ Guardian لديكم باختبارات سلبية وإيصالات قرارات (Decision Receipts) في الـ CI. وتقدّم VamiSec دعمًا مستقلًا في التقييم والبنية وتصميم السياسات والتطبيق والاختبارات.
المعايير والمصادر
يستند محتوى هذه الصفحة إلى الأدلة والدراسات التالية المتاحة للعموم.
OWASP GenAI Security Project · 2026
Agent Control Standard (ACS) — مستودع GitHub ↗
مصدر أولي: المواصفة v0.1.0، الإصدار 0.1.2، و44 مخطط JSON، والتطبيق المرجعي (PoC)؛ الشيفرة والمخططات Apache-2.0، والتوثيق CC BY-SA 4.0 — جرى التقييم حتى 03.10.2026
OWASP GenAI Security Project · 2026
مواصفة ACS Instrument v0.1.0 ↗
توثيق المواصفة المنشور: صيغة الـ Wire، والـ Handshake، وتصنيف الخطافات بـ 19 خطافًا، والأحكام، ووضعية الإخفاق، والتواقيع، ورموز الأخطاء
OWASP GenAI Security Project · 2026
ACS Conformance — ACS-Core والملفات ↗
النطاق الإلزامي لـ ACS-Core، والملفات الاختيارية الستة، والإشارة إلى أن أحدًا لا يتحقق من ادعاءات المطابقة في v0.1.0
OWASP GenAI Security Project · 2026
مخططات ACS JSON v0.1.0 (مثال: defer-details.json) ↗
نطاق أسماء المخططات الخاص بالمشروع منذ 05.09.2026؛ وهو أساس أمثلة الـ Wire المطابقة للمخططات في المحاكي
OWASP GenAI Security Project · 2026
Agent Control Standard (ACS) — صفحة الموارد ↗
إدراج في قسم Agentic Security، بتاريخ 01.09.2026
Zenity Labs (Rock Lambros) · 2026
Control Made It Into the Name: The Agent Control Standard Lands at OWASP ↗
تدوينة قائد المشروع بتاريخ 10.09.2026 حول المنشأ وإعادة الإطلاق؛ يصف ACS بأنه «public preview» — مصدر من جهة مصنِّعة
مختبرات Cloud Security Alliance · 2026
CSA Research Note: OWASP's 2026 LLM Top 10 and New Agent Control Standard ↗
تقييم خارجي بتاريخ 04.09.2026: ACS بوصفه «architecture to plan around and pilot against»
OWASP GenAI Security Project — مبادرة Agentic Security Initiative · 2025
قائمة OWASP Top 10 for Agentic Applications 2026 ↗
المخاطر ASI01–ASI10، نُشرت في ديسمبر 2025؛ الإطار المرجعي لمصفوفة المخاطر (لا يرد فيها ACS)
OWASP GenAI Security Project — مبادرة Agentic Security Initiative · 2025
Agentic AI – Threats and Mitigations (موارد Agentic Security Initiative) ↗
تصنيف التهديدات T1–T15 في الإصدار 1.0 من فبراير 2025؛ متاح عبر نظرة الموارد العامة للمبادرة
الاتحاد الأوروبي، الجريدة الرسمية · 2024
اللائحة (EU) 2024/1689 (لائحة الذكاء الاصطناعي / AI Act) ↗
المواد 9 و12 و14 و15 و19 و26 و50 و72 بوصفها نقاطًا مرجعية لمطابقة المتطلبات التنظيمية
الاتحاد الأوروبي، الجريدة الرسمية · 2026
اللائحة (EU) 2026/1744 (Digital Omnibus on AI) ↗
تؤجّل التزامات الأنظمة عالية المخاطر إلى 02.12.2027 (الملحق III) أو 02.08.2028 (الملحق I)
المعهد الوطني للمعايير والتقنية (NIST) · 2023
NIST AI 100-1: إطار إدارة مخاطر الذكاء الاصطناعي (AI RMF 1.0) ↗
إطار طوعي؛ MANAGE 2.4 بشأن آليات استبدال أنظمة الذكاء الاصطناعي أو فصلها أو تعطيلها
OpenTelemetry · تم الاطلاع 10/2026
OpenTelemetry Semantic Conventions للذكاء الاصطناعي التوليدي ↗
الحالة «Development»؛ أساس المقارنة لمطابقات الـ Trace في ACS (امتدادات الأدوات هناك: execute_tool)
إطار Open Cybersecurity Schema Framework (Linux Foundation) · تم الاطلاع 10/2026
OCSF Schema 1.5.0 — الفئات والأصناف ↗
مطابقة معرّفات UID وأسماء الأصناف التي يستخدمها ACS، ومنها 2004 Detection Finding و6002 Application Lifecycle
مؤسسة OWASP / Ecma TC54 · 2025
نظرة عامة على مواصفة CycloneDX ↗
الإصدار الحالي 1.7؛ ويسلسل ACS الـ AgBOM وفق CycloneDX 1.6
Microsoft (Responsible AI) · 2026
Introducing Agent Control Specification: Portable runtime governance for AI Agents ↗
للتمييز: مواصفة مستقلة من Microsoft بتاريخ 02.06.2026، يُرمز إليها أيضًا بـ «ACS»، وليست جزءًا من معيار OWASP
مدونة Microsoft للمصادر المفتوحة · 2026
Introducing the Agent Governance Toolkit (مدونة Microsoft Open Source) ↗
إعلان بتاريخ 02.04.2026؛ تُستخدم الأداة دون تعديل محركًا للسياسات في التطبيق المرجعي لـ ACS
OpenAI · 2025
Continuously hardening ChatGPT Atlas against prompt injection attacks ↗
22.12.2025: حقن الموجّهات «unlikely to ever be fully 'solved'» — حجة لصالح ضوابط تشغيل مستقلة عن النموذج
هل تريدون بناء تحكم أثناء التشغيل لوكلاء الذكاء الاصطناعي لديكم؟
ترافقكم VamiSec باستقلالية: تقييم بيئة الوكلاء لديكم، وبنية الـ Guardian وتصميم السياسات وفق ACS، والتطبيق والاختبارات — دون وعود بالحصول على شهادة ومع نظرة واضحة إلى مستوى نضج v0.1.