NVIDIA OpenShell: sandbox آمن لـ Claude Code وCodex — متى تعتمده فعلاً
لو بتدّي Claude Code أو Codex صلاحية sudo كاملة على جهازك علشان يشتغل، انت فعليًا بتثبت في إيد agent حر يعمل أي commit أو يفتح أي port. NVIDIA طلّعت OpenShell مفتوح المصدر تحت Apache 2.0 علشان تحلّ الجزء ده بالظبط: sandbox مع policy YAML بتتحكّم بالتفصيل في الملفات والـ network والـ binaries اللي الـ agent ينفّذها. وفي 20 أبريل 2026، أديوب أعلنت شراكة مع NVIDIA لبناء CX Enterprise Coworker فوق OpenShell، فالمشروع خرج رسميًا من فئة "تجربة" لفئة "بنية إنتاج".
المشكلة باختصار
الـ AI agent بطبيعته بيشغّل أوامر shell وبيقرا ملفات وبيعمل HTTP calls. لو سبته بدون حدود، ممكن يعمل rm -rf على مجلد مش بتاعه، أو يبعت مفاتيحك لـ endpoint غريب. الـ containers العادية (Docker/Podman) بتعزل الـ process، بس الـ policy بتكون على مستوى الـ image والـ network namespace — مش على مستوى "الـ binary اللي الـ agent سمح بتشغيله دلوقتي". الفرق ده هو سبب وجود OpenShell.
مثال بسيط قبل ما ندخل في التفاصيل
تخيّل إنك عيّنت مطوّر junior جديد. لو ادّيته مفتاح السيرفر وقلتله "اشتغل"، ده يشبه تشغيل agent بدون sandbox. لو حطّيته في حاوية Docker، ده زي ما ادّيته مكتب في طابق معزول، بس ساعات بتطلع منه مكالمات خارجية ومش عارف ليه. OpenShell بيحطّ حارس على باب المكتب، معاه ورقة A4 مكتوب فيها بالظبط: "يسمح لـ git push origin main، ميسمحش بـ curl لأي domain غير GitHub، وrm ممنوع على أي مجلد برّة /workspace". الحارس بيوقف أي حاجة مش في الورقة — من غير ما يسأل الـ junior.
ده بالظبط نموذج out-of-process policy enforcement اللي بتعتمد عليه OpenShell. السياسة مش جوّا الـ agent ومش جزء من كوده، فبالتالي الـ agent ميقدرش يعدّلها لنفسه.
المفهوم التقني بدقة
OpenShell بتقف بين الـ agent والـ OS. بتقدّم 4 مكوّنات رئيسية:
- Sandboxed execution: كل agent في sandbox منفصل بـ filesystem و network namespace خاصين بيه.
- Granular permissions: السماح أو الرفض على مستوى (binary, path, HTTP method).
- Privacy router: توجيه الـ inference requests بحيث تختار فين البيانات تمشي (local أو cloud أو endpoint محدد).
- Self-proposed policy updates: لو الـ agent اصطدم بحائط، بيقدر يقترح تعديل policy ويستنّى موافقة إنسانية قبل التنفيذ.
الـ default policy في أي sandbox جديد بيرفض كل outbound traffic — ياللي معندوش permit صريح ميطلعش. ده الفرق الكبير عن Docker اللي بيسمح بـ all outbound بشكل افتراضي.
التثبيت والتشغيل الأول
التثبيت سطر واحد: