التطوير

كيفية عزل Claude Code في بيئة Sandbox عام 2026: عزل نظام الملفات والشبكة خطوة بخطوة

تحدّ بيئة sandbox في Claude Code من الملفات والمضيفين الذين يمكن لأوامر الـ shell الوصول إليهم. إليك كيفية تفعيلها واختيار الوضع المناسب وفهم ما يعمل خارج حدودها.

وقاص احمد وسیر
وقاص احمد وسیر 4 أكتوبر 2026 7 دقائق قراءة
كيفية عزل Claude Code في بيئة Sandbox عام 2026: عزل نظام الملفات والشبكة خطوة بخطوة

بيئة sandbox في Claude Code هي حدٌّ يفرضه نظام التشغيل حول أوامر الـ shell التي يشغّلها Claude، بحيث يقيّد الملفات ومضيفي الشبكة الذين يمكن لهذه الأوامر الوصول إليهم. تُفعّلها عبر /sandbox أو بضبط sandbox.enabled على true في ملف الإعدادات، وبمجرد تفعيلها يصبح بإمكان Claude Code تشغيل الأوامر المعزولة دون التوقف لطلب موافقتك على كل أمر على حدة. وهنا تكمن الفائدة الحقيقية: عدد أقل من طلبات الإذن دون أن تمنح وكيلًا مستقلًّا shell مفتوحًا على جهازك.

يغطي هذا الدليل ما تقيّده بيئة sandbox فعليًّا، وكيفية تفعيلها على macOS وLinux وWSL2، ووضعَي الموافقة، والأجزاء التي تعمل خارج الحدود — وهي الثغرة التي تحوّلت إلى علّة حقيقية لتسريب البيانات في وقت سابق من هذا العام. نحن نشغّل Claude Code في أتمتة headless لنشر هذا الموقع، لذا فإن ضبط حدود الـ shell بدقّة ليس أمرًا نظريًّا بالنسبة إلينا.

ما هي بيئة sandbox في Claude Code؟

بيئة sandbox مدمجة في Claude Code وتُحيط بكل أمر Bash وPowerShell وMonitor، بالإضافة إلى العمليات الفرعية التي تنشئها هذه الأوامر. وهي ترسم حدَّين في آنٍ واحد: ما يمكن للأمر لمسه على القرص، وما يمكنه الوصول إليه عبر الشبكة. ويفرض نظام التشغيل كِلا الحدَّين أثناء تشغيل الأمر، وهذا هو السبب في إمكانية الموافقة التلقائية على الأمر المعزول — فالنواة (kernel)، وليس طلب الإذن، هي التي تمسك بزمام الأمور.

وهي معطّلة افتراضيًّا. على macOS تعتمد على إطار Seatbelt المدمج، فلا حاجة لتثبيت أي شيء. أما على Linux وWSL2 فتعتمد على bubblewrap لعزل نظام الملفات وعلى socat لتمرير حركة الشبكة عبر وكيل محلي؛ وتخبرك لوحة /sandbox إن كان أيٌّ منهما مفقودًا. وعلى نظام Windows الأصلي لا توجد بيئة sandbox على الإطلاق — إذ تعمل الأوامر دون عزل ما لم تشغّل Claude Code داخل توزيعة WSL2. وفي الخلفية، تعتمد على حزمة @anthropic-ai/sandbox-runtime مفتوحة المصدر.

كيف يعمل عزل نظام الملفات والشبكة

للحدَّين إعدادات افتراضية مختلفة، ويمكنك توسيع أو تضييق كلٍّ منهما بشكل مستقل. يبيّن الجدول أدناه الحالة الأولية والإعدادات التي تغيّرها.

الوصولالسلوك الافتراضيغيّره باستخدام
الكتابةدليل العمل، ودليل مؤقت خاص بكل مستخدم، وأي أدلّة أضفتها عبر --add-dir. تبقى المسارات المحميّة ممنوعة من الكتابةfilesystem.allowWrite، filesystem.denyWrite
القراءةمعظم الجهاز — بما في ذلك ملفات بيانات الاعتماد مثل ~/.ssh و~/.aws/credentialsfilesystem.denyRead، credentials
الشبكةلا مسار مباشر للخروج؛ إذ يمرّ كل اتصال عبر وكيل محلي يتحقق من المضيف مقابل نطاقاتك المسموح بها، والتي تبدأ فارغةnetwork.allowedDomains، network.deniedDomains

التفاوت الجدير بالاستيعاب: الكتابة مقيّدة بإحكام افتراضيًّا، لكن القراءة مفتوحة على مصراعيها. فالأمر المعزول لا يستطيع الكتابة خارج مشروعك، إلا أنه ما زال قادرًا على قراءة مفاتيح SSH وبيانات اعتماد السحابة الخاصة بك ما لم تُضف قاعدة denyRead أو تستخدم حماية credentials. أما جانب الشبكة فهو العكس — ممنوع افتراضيًّا، مع قائمة سماح تبنيها تدريجيًّا كلما احتاجت الأوامر إلى مضيفين محدّدين.

كيفية تفعيل بيئة sandbox في Claude Code

أسرع طريقة هي التفاعلية:

  • شغّل /sandbox في إحدى الجلسات. تحتوي اللوحة على علامة تبويب Mode، وعلامة تبويب Overrides (البديل allowUnsandboxedCommands)، وعلامة تبويب Config التي تعرض الإعدادات المُستخلَصة. وعلى Linux تظهر علامة تبويب Dependencies إن كان bubblewrap أو socat أو ripgrep مفقودًا.
  • اختر وضعًا (مشروح أدناه) واطلب من Claude تشغيل عملية بناء أو مجموعة اختبارات. ويؤدي اختيار الوضع إلى كتابته في ملف .claude/settings.local.json الخاص بالمشروع.
  • فعّلها في كل مكان بضبط sandbox.enabled على true في ~/.claude/settings.json، أو افرضها على فريق بأكمله عبر الإعدادات المُدارة.

لتفعيلها في جلسة واحدة دون لمس ملف الإعدادات، مرّرها عبر الـ CLI:

claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

للتحقق من أنها نشطة، اطلب من Claude تشغيل touch ~/sandbox-probe (ينبغي أن يفشل برسالة Operation not permitted أو Read-only file system) وcurl --noproxy '*' https://example.com (ينبغي أن يفشل برسالة Could not resolve host). وإن كنت تريد أن يتوقف الوكيل توقفًا تامًّا عند تعذّر بدء بيئة sandbox — بدلًا من الرجوع صامتًا إلى الوضع غير المعزول — فاضبط sandbox.failIfUnavailable على true. هذا الإعداد هو الفرق بين «الـ sandbox وسيلة راحة» و«الـ sandbox بوابة أمنية».

أوضاع sandbox: السماح التلقائي مقابل الأذونات العادية

يفرض كلا الوضعين حدود نظام الملفات والشبكة نفسها تمامًا. الفرق الوحيد هو الموافقة.

  • وضع السماح التلقائي يشغّل الأوامر المعزولة دون أي طلب إذن. وهنا تتحقق فائدة التخلص من إرهاق طلبات الإذن: فالأمر الذي يكتب داخل الحدود فحسب يُشغَّل مباشرةً، حتى في الوضع اليدوي. ومع ذلك تبقى قواعد المنع محترمة، ويستمر rm تجاه مسار حرِج في طلب الإذن، ولا تزال قواعد السؤال المحدّدة بالمحتوى مثل Bash(git push *) تفرض طلب إذن.
  • وضع الأذونات العادية يُمرِّر كل أمر Bash عبر مسار الأذونات المعتاد حتى عندما يكون معزولًا — تحكّم أكبر، ونقرات أكثر.

في المرة الأولى التي يحتاج فيها أمرٌ ما إلى نطاق شبكة جديد، يطلب منك Claude Code إضافته إلى قائمة السماح. وفي الوضع التلقائي يُعلن النموذج بدلًا من ذلك عن المضيفين الذين يحتاجهم الأمر على الأمر نفسه، ويراجعها مصنِّف على جانب الخادم. ولاحظ أن وضع التخطيط لا يرث السماح التلقائي — إذ يستمر في تقييد الأوامر أثناء تخطيطك.

ما الذي يعمل خارج بيئة sandbox (الجزء الذي يغفله الناس)

تُحيط بيئة sandbox بـ أوامر الـ shell. وهي لا تُحيط بكل شيء، وهذا هو الأمر الأكثر سوء فهم بشأنها على الإطلاق. ومما يعمل خارج الحدود:

  • أدوات الملفات والويب المدمجة — فأدوات Read وEdit وWrite وWebFetch وWebSearch تتّبع قواعد الأذونات بدلًا من ذلك. ومدخل denyRead لا يوقف أداة Read، وallowedDomains لا يقيّد WebFetch.
  • خوادم MCP والـ hooks — كلاهما يعمل دون عزل.
  • الأوامر التي تكتبها عند موجّه الـ shell بإشارة !، وأي شيء يطابق excludedCommands، وأي إعادة محاولة غير معزولة، حيث يعيد Claude تشغيل أمر فاشل باستخدام dangerouslyDisableSandbox.

لذا فإن قاعدة denyRead على ~/.aws/credentials تحجب أمر cat معزولًا، لكنها لا تحجب أداة Read أو خادم MCP يصل إلى الملف نفسه. وإن أردت حدًّا واحدًا يُحيط بـ كل ذلك، فإن بيئة sandbox هي الطبقة الخاطئة — شغّل عملية Claude Code بأكملها داخل حاوية (container) أو جهاز افتراضي (VM). ويبرز هذا بأهمية قصوى عندما تشغّل Claude Code في وضع headless في بيئة CI، حيث لا يوجد إنسان لرفض إعادة المحاولة غير المعزولة.

بيئة sandbox ليست سجنًا: درس تجاوز حظر الخروج

تعامل مع قائمة سماح الشبكة بوصفها دفاعًا متعدّد الطبقات، لا خزينة. فقد كشف باحثون أمنيون عن ثغرة تجاوز خروج الشبكة في بيئة sandbox ضمن Claude Code تؤثر في الإصدارات من 2.0.24 حتى 2.1.89 — نحو 130 إصدارًا — حيث أتاحت حيلة اسم مضيف بحرف null في SOCKS5 للأوامر الوصول إلى نطاقات محظورة وتسريب مفاتيح API والرموز (tokens) والشيفرة المصدرية. فاسم مضيف مُصمّم خصيصًا مثل attacker.com\x00.google.com اجتاز فحص قائمة السماح في JavaScript (إذ رأى اللاحقة .google.com) بينما اقتطع محلِّل أسماء نظام التشغيل عند حرف null واتصل بالمهاجم. وقد أطلقت Anthropic تحققًا أكثر صرامة من أسماء المضيفين في الإصدار v2.1.90 بتاريخ 1 أبريل 2026، ويُذكر أن ذلك جرى دون CVE أو ملاحظة في سجل التغييرات.

الخلاصات العملية: حافظ على تحديث Claude Code، وأبقِ allowedDomains بأقصر قدر تسمح به المهمة، واضبط sandbox.failIfUnavailable حيثما كانت بيئة sandbox ضابطًا حقيقيًّا، وفيما يخص أي شيء يتعامل مع أسرار الإنتاج اعزل العملية بأكملها — لا الـ shell الخاص بها وحده. فبيئة sandbox ترفع بشكل ملموس كلفة أي خطأ أو حقن prompt، لكنها طبقة واحدة، والطبقات لها ثغراتها.

الأسئلة الشائعة

هل بيئة sandbox في Claude Code مفعّلة افتراضيًّا؟

لا. فهي معطّلة حتى تشغّل /sandbox أو تضبط sandbox.enabled على true في ملف الإعدادات. وعلى نظام Windows الأصلي لا تعمل على الإطلاق ما لم تستخدم WSL2.

هل توقف بيئة sandbox قراءة Claude لبيانات اعتمادي؟

ليس افتراضيًّا. إذ تستطيع الأوامر المعزولة قراءة معظم الجهاز، بما في ذلك ~/.ssh و~/.aws/credentials. أضف قاعدة filesystem.denyRead أو استخدم حماية credentials، وتذكّر أن أداة Read وخوادم MCP تقع خارج بيئة sandbox بالكامل.

ماذا أحتاج إلى تثبيته على Linux؟

bubblewrap وsocat مطلوبان؛ ويأتي ripgrep مع الملف الثنائي الأصلي، ويضيف مرشّح seccomp اختياري (من @anthropic-ai/sandbox-runtime) حجب مقابس Unix. وتعرض علامة تبويب Dependencies في /sandbox ما هو مفقود.

هل ستقلّل بيئة sandbox من طلبات الإذن؟

نعم، في وضع السماح التلقائي — إذ تُشغَّل الأوامر المعزولة دون سؤال، لأن نظام التشغيل هو من يفرض الحدود. أما قواعد المنع، وrm على مسار حرِج، وقواعد السؤال المحدّدة بالمحتوى فلا تزال تطلب الإذن.

هل بيئة sandbox كافية لتشغيل وكيل بأمان على بيانات الإنتاج؟

تعامل معها بوصفها طبقة واحدة. فهي تقيّد أوامر الـ shell لكنها لا تقيّد أدوات الملفات أو خوادم MCP أو الـ hooks، وقد شابتها علّة واحدة على الأقل لتجاوز الخروج. وفيما يخص أسرار الإنتاج، شغّل العملية بأكملها داخل حاوية أو جهاز افتراضي.

المصادر

وقاص احمد وسیر

وقاص احمد وسیر

وقاص احمد وسیر مطوّر ومهندس أتمتة بخبرة تزيد على 8 سنوات في بناء أنظمة إنتاجية يستخدمها أكثر من 100 ألف شخص. يبني تطبيقات SaaS متعددة المستأجرين، وأتمتة بالذكاء الاصطناعي (n8n، تدفقات LLM، بوتات واتساب)، وبنية استضافة (WHM/cPanel، CloudLinux) — وهو صانع WaSphere وFlowMaticX وعلامة الاستضافة WaseerHost. أنجز أكثر من 100 مشروع لشركات صغيرة ومتوسطة ووكالات وشركات ناشئة ممولة.

ذات صلة

المزيد في التطوير

عرض الكل →

النقاش · 0

كن لطيفًا. التعليقات علنية.

    النشرة البريدية · إصدار الاثنين

    ملخّص الاثنين.

    بريد واحد كل صباح اثنين. الأسبوع المقبل في الذكاء الاصطناعي والشركات الناشئة والاستضافة وأدوات المطوّرين — بلا حشو، وبلا إعلانات مموّهة.

    مجاني. يمكنك إلغاء الاشتراك بنقرة واحدة.