المحتويات
- الخلاصة في 30 ثانية
- 1. لماذا تحتاج إلى صندوق عزل
- 2. ما هو صندوق العزل — عزلان اثنان
- 3. البدء — الأمر /sandbox وأنظمة التشغيل المدعومة
- 4. الوضعان (السماح التلقائي / العادي)
- 5. تهيئته في settings.json
- 6. علاقته بأوضاع الأذونات وقواعدها
- 7. الحدود والتحذيرات — لا تفرط في الثقة به
- 8. متى تلجأ إلى حاويات التطوير أو الأجهزة الافتراضية
- الخلاصة
- الأسئلة الشائعة
إن استخدمتَ Claude Code لفترة كافية، فستصطدم بهذه المعضلة. فهو يسألك "هل أشغّل هذا؟" مع كل أمر، وتدفّق عملك يتوقف مرارًا. لكن إيقاف كل المطالبات باستخدام --dangerously-skip-permissions (وضع تجاوز الأذونات) يعني أن حقن التعليمات أو زلة يد قد تمسّ ملفات في أنحاء جهازك كلها. الأمان مقابل الأتمتة — طالما عُومل على أنه مفاضلة لا مفر منها.
وما يكسر هذه الثنائية هو صندوق العزل (sandbox). فإن سيّجتَ "ما الذي يمكن مسّه" على مستوى نظام التشغيل مقدّمًا، أمكن للأوامر أن تعمل بحرية داخل السياج بلا مطالبات، ومع ذلك لا يستطيع شيء بلوغ ما خارجه. يعرض هذا المقال، من زاوية الممارس، ما الذي يعزله صندوق Claude Code وكيف، وكيف تبدأ باستخدام /sandbox، وكيف تهيّئه في settings.json، وكيف يختلف عن أوضاع الأذونات، والحدود التي يجب ألا تفرط في الثقة بها.
الخلاصة في 30 ثانية
إن لم تقرأ سوى شيء واحد
/sandbox. يعمل macOS جاهزًا فورًا؛ أما Linux/WSL2 فيحتاج حزمتين.※في الاستخدام الداخلي لدى Anthropic نفسها، خفّض صندوق العزل مطالبات الأذونات بأمان بنسبة 84% (المصدر أدناه).
1. لماذا تحتاج إلى صندوق عزل
إن Claude Code هو وكيل ذكاء اصطناعي ينفّذ الأمور فعلًا — يشغّل الاختبارات، ويعيد كتابة الملفات. ولهذا بالضبط يتوقف ليسأل "هل أشغّل هذا؟" قبل الأوامر الخطرة. من أجل الأمان، هذا صحيح. لكن حين تنهال عشرات المطالبات في اليوم، يتفتّت العمل، وفي النهاية تضغط Enter دون أن تقرأ. هذا هو "إرهاق الأذونات".
المطوّر المُتعب يلجأ إلى --dangerously-skip-permissions (المعروف بوضع YOLO)، الذي يوقف كل المطالبات. إنه مريح، وكما يقول اسمه — خطير. ثلاثة تهديدات تكشّر عن أنيابها دفعة واحدة.
إن أخفت صفحة ويب أو مشكلة (issue) يقرؤها تعليمة "أرسِل ~/.ssh"، فقد تتسرّب مفاتيحك الخاصة دون أي مطالبة.
أمر مُولَّد ينظّف مسارًا غير متوقّع. ودون مطالبة، قد تختفي أيضًا ملفات خارج المشروع.
اعتماد (dependency) خبيث يهرّب البيانات إلى الخارج عند التثبيت. ومع فتح الشبكة على مصراعيها، لا تستطيع إيقافه.
فكرة صندوق العزل بسيطة: توقّف عن السؤال "ماذا ينبغي أن أؤكّد؟" في كل مرة، وسيّج "إلى أي مدى يمكن أن يصل هذا؟" مقدّمًا. والسياج يفرضه لا حكم Claude نفسه، بل نظام التشغيل (النواة)، فحتى لو اختُطف، وحتى لو فعل أمرٌ مسموح به أكثر مما يوحي به اسمه، لا يفلت شيء من الحدود. ولهذا فإن الأوامر داخل السياج آمنة للتشغيل بلا مطالبات — وتختفي ثنائية الإرهاق مقابل التجاوز الكامل. وفي منشورها الهندسي الرسمي "جعل Claude Code أكثر أمانًا واستقلالية عبر العزل (sandboxing)"، تفيد Anthropic بأنها في الاستخدام الداخلي خفّضت مطالبات الأذونات بأمان بنسبة 84% (نُشر في أكتوبر 2025).
2. ما هو صندوق العزل — عزلان اثنان
يرسم صندوق Claude Code حدّين حول أوامر Bash (وكل عملية فرعية تُنشئها). يجب أن يعمل الاثنان معًا كوحدة — إذ يترك أحدهما وحده ثغرة (انظر §7).
الكتابة محصورة في دليل العمل إضافة إلى مجلد مؤقت للجلسة (افتراضيًا). لا يمكن تعديل ~/.bashrc ولا مناطق النظام. القراءة واسعة لكن يمكن منعها صراحةً. وحتى لو اختُطف، فإنه لا يستطيع إعادة كتابة أي شيء خارج المشروع.
افتراضيًا يكون "المنع افتراضي" دون أي وجهة مسموح بها. ولحظة محاولته الوصول إلى نطاق جديد، تظهر مطالبة. تمر حركة المرور عبر وسيط (proxy) خارج صندوق العزل ويُحكم عليها وفق قائمة سماح. إنه يمنع إرسال الأسرار إلى الخارج.
وجوهر الأمر أنه لا يعتمد على حُسن تصرّف Claude. فالحدود تفرضها آلية الأمان الخاصة بنظام التشغيل — يستخدم macOS Seatbelt المدمج، ويستخدم Linux/WSL2 أداة bubblewrap. فتمتد الحدود نفسها إلى النصوص البرمجية التي يستدعيها أمر ما وإلى العمليات الحفيدة. فكّر فيه لا كطلب مهذّب مُوجَّه إلى النموذج، مثل حواجز الحماية للذكاء الاصطناعي، بل كجدار مادي يصمد ميكانيكيًا.
💡 إنه يسيّج Bash فقط. يغلّف صندوق العزل أداة Bash وعملياتها الفرعية. أما أدوات Read/Edit/Write المدمجة في Claude، وخوادم MCP، والخطّافات (hooks) فهي شأن منفصل (تحكمه قواعد الأذونات). ولعزل العملية بأكملها، استخدم حزمة @anthropic-ai/sandbox-runtime الموصوفة أدناه.
3. البدء — الأمر /sandbox وأنظمة التشغيل المدعومة
صندوق العزل مدمج في Claude Code. لا يلزم حساب أو أداة إضافية. داخل الجلسة، شغّل:
/sandbox
تُفتح لوحة بثلاث علامات تبويب. Mode (كيف تُعتمد الأوامر المعزولة — القسم التالي)، وOverrides (هل يُسمح لأمر يفشل تحت العزل بالتراجع إلى التشغيل خارج العزل)، وConfig (عرض الإعدادات المحسومة). على Linux/WSL2، إن كانت حزمة مطلوبة مفقودة، تظهر بدلًا من ذلك علامة تبويب Dependencies تخبرك بما يجب تثبيته.
المتطلبات المسبقة لكل نظام تشغيل
لا شيء لتثبيته. يستخدم Seatbelt المدمج. فعّله فورًا باستخدام /sandbox.
ثبّت حزمتين: bubblewrap وsocat (مثلًا apt-get install bubblewrap socat).
غير مدعوم. شغّل Claude Code داخل WSL2 (لن يعمل WSL1).
على Linux/WSL2، ثبّت bubblewrap (أداة العزل غير المتميّزة التي تفرض عزل نظام الملفات) وsocat (المُرحِّل الذي يوجّه حركة المرور إلى الوسيط).
# Ubuntu / Debian
sudo apt-get install bubblewrap socat
# Fedora
sudo dnf install bubblewrap socat
⚠️ Ubuntu 24.04 وما بعده: قد تمنع سياسة AppArmor الافتراضية bubblewrap من إنشاء مساحات أسماء المستخدم التي يحتاجها. إن أعاد sysctl kernel.apparmor_restrict_unprivileged_userns القيمة 1، فأضف ملف تعريف AppArmor لـ bwrap لمنحه ذلك (الخطوات في الوثائق الرسمية). وإن أعاد 0 أو لم يوجد المفتاح، فلا حاجة إلى إجراء. تحقّق من الأمر ذاته داخل WSL2.
ومن الأمور المفيدة التي يُحبَّذ تفعيلها مرشّح seccomp (الذي يضيف حجب مقابس نطاق Unix). إنه اختياري؛ ثبّته عبر npm install -g @anthropic-ai/sandbox-runtime. وتعرض علامة تبويب Dependencies في /sandbox حالة ripgrep وbubblewrap وsocat ومرشّح seccomp. بعد تثبيت الحزم، أعد تشغيل Claude Code وأعد فتح /sandbox (يُجرى الفحص عند بدء التشغيل).
4. الوضعان (السماح التلقائي / العادي)
علامة تبويب Mode تختار كيف تُعتمد الأوامر داخل صندوق العزل.
أوامر Bash التي تعمل داخل صندوق العزل يُسمح بها تلقائيًا، دون أي مطالبة — إذ تحلّ الحدود نفسها محلّ المطالبة. مريح للعمل اليومي. أما الأوامر التي لا يستطيع صندوق العزل تشغيلها (مثل حركة المرور إلى مضيف غير مسموح به) فإنها تتراجع إلى تدفّق الأذونات العادي وتُطالب.
حتى عند العزل، يمرّ كل أمر Bash عبر مطالبة الأذونات العادية. تحكّم أكبر، وموافقات أكثر. للحذِرين الذين يريدون "العزل زائدًا المطالبات المعتادة".
في كلا الوضعين تكون حدود نظام الملفات والشبكة متطابقة؛ والفرق الوحيد هو "السماح التلقائي مقابل المطالبة". لاحظ أنه حتى في وضع السماح التلقائي تبقى صمّامات الأمان هذه فاعلة:
- تكون الأسبقية دائمًا لـقواعد المنع الصريحة
- الأمر
rm/rmdirالذي يستهدف/أو دليل المنزل (home) أو مسارات نظام حرجة أخرى يظل يُطالب - قواعد السؤال (ask) المُقيّدة بالمحتوى مثل
Bash(git push *)تظل تفرض مطالبة، حتى داخل صندوق العزل
احذر مصطلحَي "تلقائي" المتشابهين على نحو مربك. إن وضع السماح التلقائي لصندوق العزل ليس الوضع التلقائي في أوضاع الأذونات. فالأول يعني "الموافقة التلقائية لأن حدود نظام التشغيل تحتويه"؛ والثاني يعني "يحكم مصنِّف على سلامة الأمر ويمرّره". يعملان بشكل مستقل ويمكن دمجهما.
5. تهيئته في settings.json
تُكتب الخيارات في لوحة /sandbox إلى ملف المشروع .claude/settings.local.json (لا يُودَع في git). ولإبقائه مفعّلًا دائمًا عبر كل المشاريع، ضع sandbox.enabled: true في إعدادات المستخدم لديك عند ~/.claude/settings.json. وهو يقع ضمن عائلة settings.json نفسها مثل قواعد الأذونات (allow/ask/deny).
إضافة أهداف كتابة، ومنع القراءة
افتراضيًا يمكنك الكتابة فقط في دليل العمل والمجلد المؤقت. إن احتاج kubectl أو terraform إلى الكتابة في مكان آخر، فأضِف المسارات باستخدام allowWrite. وبالعكس، يمكنك حجب القراءة من المجلدات الحساسة.
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["~/.kube", "/tmp/build"],
"denyRead": ["~/"],
"allowRead": ["."]
}
}
}
المثال أعلاه يمنع القراءة من دليل المنزل بأكمله مع الاستمرار في السماح بالمشروع الحالي (. يُحلّ إلى جذر المشروع عندما يقع الإعداد في إعدادات المشروع). والمسارات مفروضة على مستوى نظام التشغيل، فتنطبق بالتساوي على العمليات الفرعية مثل npm وterraform.
حماية بيانات الاعتماد
مزلق مهم: الافتراضي للقراءة هو "مسموح على نطاق واسع"، ولذا فإن ~/.aws/credentials و~/.ssh/ قابلان للقراءة كما هما. يعلن الإعداد المخصّص sandbox.credentials (ميزة حديثة نسبيًا) عن الملفات المطلوب منع قراءتها ومتغيّرات البيئة المطلوب إلغاؤها.
{
"sandbox": {
"enabled": true,
"credentials": {
"files": [
{ "path": "~/.aws/credentials", "mode": "deny" },
{ "path": "~/.ssh", "mode": "deny" }
],
"envVars": [
{ "name": "GITHUB_TOKEN", "mode": "deny" }
]
}
}
}
السماح بالوجهات
تبدأ الشبكة بـصفر وجهات. ويُطالِب نطاق جديد في أول مرة يُصل إليها (في الإصدارات الحديثة وقت كتابة هذا، الموافقة مرة واحدة تعني عدم إعادة المطالبة لبقية الجلسة). سجّل مسبقًا المضيفين الذين لا تريد أن تُسأل عنهم في allowedDomains. ومع الإعدادات المُدارة الموزّعة على مستوى المؤسسة، يمكنك أيضًا حجب أي شيء خارج قائمة السماح تلقائيًا بدلًا من المطالبة.
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["*.github.com", "registry.npmjs.org"]
}
}
}
لفرضه على مستوى المؤسسة. في الإعدادات المُدارة، إلى جانب sandbox.enabled: true، أضِف failIfUnavailable: true (رفض بدء Claude Code إن تعذّر تهيئة صندوق العزل) وallowUnsandboxedCommands: false (إغلاق "منفذ الهروب" المتمثّل في إعادة المحاولة خارج صندوق العزل — الوضع الصارم). ومعًا يفرضانه كبوابة أمان.
6. علاقته بأوضاع الأذونات وقواعدها
من السهل الخلط بينها، لكن آلية الأمان في Claude Code تتكوّن من ثلاث طبقات لكلٍّ منها مهمة متمايزة. صندوق العزل واحدة منها — وهو لا يحلّ محلّ الطبقتين الأخريين؛ بل يكمّلهما.
| الطبقة | ما الذي تتحكّم فيه | من يفرضها | النطاق |
|---|---|---|---|
| قواعد الأذونات | أي الأدوات/الأوامر يجوز استخدامها | Claude Code (قبل التشغيل) | كل الأدوات |
| أوضاع الأذونات | كم مطالبة تظهر | Claude Code (قبل التشغيل) | يعتمد على الوضع |
| صندوق العزل | ما الذي يمكن أن يمسّه بعد أن يعمل | نظام التشغيل (النواة) | Bash والعمليات الفرعية |
الفرق الحاسم هو "متى ومن قِبل مَن" تسري كل منها. فقواعد الأذونات وأوضاعها تُحسَم قبل التنفيذ، بواسطة Claude Code، انطلاقًا من نصّ الأمر. أما صندوق العزل فيقيّد العملية أثناء التنفيذ، بواسطة نظام التشغيل — فمهما اختار النموذج، وحتى لو فعل أمرٌ مسموح به أكثر مما يوحي به اسمه، لا تتزحزح الحدود.
وهذا أيضًا هو الفارق الحاسم عن --dangerously-skip-permissions (التجاوز). فالتجاوز يزيل المطالبات فقط؛ وتبقى البيئة مفتوحة على مصراعيها. أما السماح التلقائي في صندوق العزل، بالمقابل، فيمكنه تخطّي المطالبات لأن جدار نظام التشغيل موجود. القاعدة الحديدية القديمة — إن استخدمت وضع التجاوز، فليكن ذلك فقط داخل حاوية أو جهاز افتراضي معزول — هي أمر يتيح لك صندوق العزل نقله إلى الجانب الآمن حتى على جهازك اليومي.
7. الحدود والتحذيرات — لا تفرط في الثقة به
صندوق العزل قوي، لكنه ليس عزلًا كاملًا. قبل الاتكاء عليه كحدود أمان صلبة، اعرف الحدود التي توضّحها الوثائق.
يحكم الوسيط على اسم المضيف فقط ولا يفحص المحتوى المشفّر (افتراضيًا). والسماح بنطاق واسع مثل github.com يترك مجالًا لـتهريب البيانات عبر أساليب مثل تمويه النطاق (domain fronting). أبقِ قائمة السماح ضيّقة.
السماح بـ/var/run/docker.sock يسلّم المضيف بأكمله عبر مقبس Docker — وهو عمليًا هروب من صندوق العزل. انتبه لأي مقابس تفتحها.
الملفات التنفيذية القابلة للكتابة على $PATH أو ملفات مثل .bashrc قد تتحوّل إلى تنفيذ شيفرة في سياق آخر. أبقِ allowWrite في حدّه الأدنى.
وأمر آخر ينبغي استيعابه: النطاق هو Bash فقط — أما أدوات Read/Edit/Write المدمجة وخوادم MCP والخطّافات فمنفصلة. ولعزل العملية بأكملها، بما فيها المهارات (Skills) وMCP، غلّف عملية Claude Code نفسها بحزمة @anthropic-ai/sandbox-runtime مفتوحة المصدر الرسمية (المنشورة على GitHub وnpm، وهي معاينة بحثية صدرت في أكتوبر 2025). ودورها العملي هو أنها ليست "جدارًا" في وجه مهاجم مصمّم، بل "حبل أمان" يقلّص الحوادث والانفلات بمقادير هائلة.
8. متى تلجأ إلى حاويات التطوير أو الأجهزة الافتراضية
صندوق العزل ليس خيار العزل الوحيد في Claude Code. فهناك مفاضلة بين الراحة وقوة العزل، فاختر حسب الغرض.
يعزل Bash والعمليات الفرعية. بلا Docker، إعداد بالحدّ الأدنى. العماد لتقليص المطالبات في العمل اليومي.
يغلّف عملية Claude Code بأكملها. للتشغيل غير المراقَب حين تريد أيضًا تسييج MCP والخطّافات. بلا Docker.
تحوّل بيئة التطوير كلها إلى حاوية. لتوحيد إعداد فريق. تتطلّب Docker.
يفصل نظام التشغيل بأكمله. أقوى عزل على مستوى النواة، للشيفرة غير الموثوقة. الأعلى جهدًا.
القاعدة العملية: أبقِ صندوق العزل المدمج مفعّلًا دائمًا لتقليص المطالبات اليومية، وارتقِ فقط إلى sandbox-runtime أو الحاويات أو الأجهزة الافتراضية حين تُشغّل بلا مراقبة أو تتعامل مع اعتمادات غير موثوقة. وبالنسبة إلى العمل الذي يصل إلى الإنتاج — كأن تدع الذكاء الاصطناعي يشغّل السحابة — فإن اقتران بيانات اعتماد بأقل صلاحية مع مستوى عزل أقوى يمنحك راحة البال.
الخلاصة
- يسيّج صندوق العزل "ما الذي يمكن مسّه" على مستوى نظام التشغيل، مذيبًا ثنائية إرهاق المطالبات مقابل التجاوز الكامل.
- استخدم عزل نظام الملفات وعزل الشبكة كوحدة. الفرض: macOS = Seatbelt، وLinux/WSL2 = bubblewrap.
- ابدأ بـ
/sandbox. يعمل macOS جاهزًا فورًا؛ ويحتاج Linux/WSL2 إلىbubblewrap+socat؛ وWindows الأصلي غير مدعوم (استخدم WSL2). - وضع السماح التلقائي يتخطّى المطالبات ومع ذلك يبقى آمنًا لأن الحدود مفروضة على مستوى نظام التشغيل. تظل قواعد المنع، و
rmالخطِر، وقواعد السؤال المُقيّدة بالمحتوى سارية. - إنها طبقة مكمّلة متمايزة عن قواعد/أوضاع الأذونات — إذ يقيّد صندوق العزل العملية بعد التنفيذ، عبر نظام التشغيل، فلا يتزحزح.
- لكنه ليس جدارًا كاملًا — انتبه إلى TLS غير المفحوص، ومقابس Unix، والصلاحيات المفرطة السعة. النطاق هو Bash فقط.
يكسر صندوق العزل الفرضية الأساسية القائلة بأن الأمان والأتمتة يجب أن يتفاضلا. يكفي أن تفتح /sandbox مرة واحدة — فذلك وحده يغيّر طريقة إمساكك بزمام Claude Code. وللاطلاع على مرجع التهيئة الدقيق والحالي، اعتمد وثائق إعدادات صندوق العزل الرسمية مصدرًا أساسيًا.
الأسئلة الشائعة
س. كيف يختلف صندوق العزل عن --dangerously-skip-permissions؟
ج. التجاوز يزيل المطالبات فقط ويترك البيئة بلا دفاع. أما صندوق العزل فيسيّج ما الذي يمكن مسّه على مستوى نظام التشغيل، فحتى مع تخطّي المطالبات، لا يصل شيء إلى الخارج. التجاوز للبيئات المعزولة فقط؛ أما صندوق العزل فآمن للاستخدام حتى على جهازك اليومي — وذلك هو الفرق الحاسم.
س. هل يمكنني استخدامه على Windows؟
ج. Windows الأصلي غير مدعوم. شغّل Claude Code داخل WSL2 وسيعمل (لن يعمل WSL1). وتحت WSL2، لا تستطيع الأوامر المعزولة استدعاء ثنائيات Windows مثل cmd.exe؛ أضِفها إلى excludedCommands لتشغيلها خارج صندوق العزل عند الحاجة.
س. هل يؤدّي تفعيله إلى إبطاء الأمور؟
ج. بحسب Anthropic، العبء الإضافي ضئيل — قد تكون بعض عمليات نظام الملفات أبطأ قليلًا. وعمليًا، ولأن عدد المطالبات ينخفض بشدة، فإن سرعة العمل المُدرَكة غالبًا ما ترتفع.
س. مع تفعيل صندوق العزل، هل مفاتيحي الخاصة مضمونة الأمان؟
ج. ليست "مضمونة". الافتراضي للقراءة واسع، ولذا فإن ~/.ssh و~/.aws/credentials قابلان للقراءة افتراضيًا. احجبهما صراحةً باستخدام sandbox.credentials أو denyRead، وأبقِ قائمة سماح الشبكة ضيّقة. يجب أن يعمل عزل نظام الملفات وعزل الشبكة دائمًا كوحدة.
س. هل تُعزَل خوادم MCP والخطّافات أيضًا؟
ج. لا. يغطّي صندوق العزل المدمج أوامر Bash والعمليات الفرعية فقط. أما MCP والخطّافات وأدوات Read/Edit/Write المدمجة فمنفصلة (تحكمها قواعد الأذونات). ولتسييجها جميعًا، غلّف العملية بأكملها بحزمة @anthropic-ai/sandbox-runtime.