
sandbox-runtime v0.0.76
أداة عزل (sandboxing) خفيفة الوزن لفرض قيود على نظام الملفات والشبكة على أي عملية على مستوى نظام التشغيل، دون الحاجة إلى حاوية (container).
بيئة تشغيل معزولة من Anthropic (srt)
أداة عزل خفيفة الوزن لفرض قيود على نظام الملفات والشبكة على عمليات اعتباطية على مستوى نظام التشغيل، دون الحاجة إلى حاوية.
يستخدم srt أوليات العزل الأصلية في نظام التشغيل (sandbox-exec على macOS، وbubblewrap على Linux) وتصفية الشبكة القائمة على الوكيل. يمكن استخدامه لعزل سلوك الوكلاء وخوادم MCP المحلية وأوامر bash والعمليات الاعتباطية.
معاينة بحثية تجريبية (Beta)
بيئة التشغيل المعزولة هي معاينة بحثية طُوّرت لـ Claude Code لتمكين وكلاء ذكاء اصطناعي أكثر أمانًا. تُتاح الآن كمعاينة مفتوحة المصدر مبكرة لمساعدة المنظومة الأوسع على بناء أنظمة وكيلة أكثر أمانًا. وبما أن هذه معاينة بحثية مبكرة، فقد تتطور واجهات البرمجة (APIs) وصيغ الإعداد. نرحب بالملاحظات والمساهمات لجعل وكلاء الذكاء الاصطناعي أكثر أمانًا افتراضيًا!
التثبيت
npm install -g @anthropic-ai/sandbox-runtime
الاستخدام الأساسي
# Network restrictions
$ srt "curl anthropic.com"
Running: curl anthropic.com
<html>...</html> # Request succeeds
$ srt "curl example.com"
Running: curl example.com
Connection blocked by network allowlist # Request blocked
# Filesystem restrictions
$ srt "cat README.md"
Running: cat README.md
# Anthropic Sandb... # Current directory access allowed
$ srt "cat ~/.ssh/id_rsa"
Running: cat ~/.ssh/id_rsa
cat: /Users/ollie/.ssh/id_rsa: Operation not permitted # Specific file blocked
نظرة عامة
توفر هذه الحزمة تنفيذًا مستقلًا لبيئة معزولة (sandbox) يمكن استخدامه كأداة سطر أوامر (CLI) ومكتبة برمجية في آنٍ واحد. وقد صُمم بفلسفة آمن افتراضيًا (secure-by-default) مُصممة خصيصًا لحالات الاستخدام الشائعة لدى المطورين: تبدأ العمليات بأقل قدر من الوصول، وتفتح أنت صراحةً فقط الثغرات التي تحتاجها.
القدرات الرئيسية:
- قيود الشبكة: التحكم في المضيفين/النطاقات التي يمكن الوصول إليها عبر HTTP/HTTPS وبروتوكولات أخرى
- قيود نظام الملفات: التحكم في الملفات/المجلدات التي يمكن قراءتها/كتابتها
- قيود مقابس Unix: التحكم في الوصول إلى مقابس IPC المحلية
- مراقبة الانتهاكات: على macOS، الاستفادة من مخزن سجلات انتهاكات بيئة العزل في النظام للحصول على تنبيهات فورية
مثال على حالة الاستخدام: عزل خوادم MCP
من حالات الاستخدام الرئيسية عزل خوادم بروتوكول سياق النموذج (MCP) لتقييد قدراتها. على سبيل المثال، لعزل خادم MCP الخاص بنظام الملفات:
بدون عزل (.mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
مع العزل (.mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "srt",
"args": ["npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
ثم قم بتكوين القيود في ~/.srt-settings.json:
{
"filesystem": {
"denyRead": [],
"allowWrite": ["."],
"denyWrite": ["~/sensitive-folder"]
},
"network": {
"allowedDomains": [],
"deniedDomains": []
}
}
سيمنع الآن خادم MCP من الكتابة إلى المسار المرفوض:
> Write a file to ~/sensitive-folder
✗ Error: EPERM: operation not permitted, open '/Users/ollie/sensitive-folder/test.txt'
كيف يعمل
تستخدم بيئة العزل (sandbox) عناصر أساسية على مستوى نظام التشغيل لفرض قيود تنطبق على شجرة العمليات بأكملها:
- macOS: يستخدم
sandbox-execمع ملفات تعريف Seatbelt المُولَّدة ديناميكيًا - Linux: يستخدم bubblewrap للحاويات مع عزل مساحة أسماء الشبكة
- Windows: يشغّل العملية المعزولة تحت حساب مستخدم محلي مخصص
srt-sandbox، مع سياج خروج Windows Filtering Platform مرتبط بـ SID الخاص بذلك الحساب، ورمز مميز مقيّد بالكتابة، وACEs صريحة على شجرة العمل
0d1c612947c798aef48e6ab4beb7e8544da9d41a-4096x2305
نموذج العزل المزدوج
يُعدّ عزل نظام الملفات وعزل الشبكة كلاهما ضروريًا لعزل فعّال. فبدون عزل الملفات، قد تتمكن عملية مخترقة من تسريب مفاتيح SSH أو ملفات حساسة أخرى. وبدون عزل الشبكة، قد تتمكن عملية من الهروب من بيئة العزل والحصول على وصول غير مقيّد إلى الشبكة.
عزل نظام الملفات يفرض قيود القراءة والكتابة:
- القراءة (نمط الرفض ثم السماح): افتراضيًا، يُسمح بالوصول للقراءة في كل مكان. يمكنك رفض مناطق واسعة (مثل
/Users) ثم إعادة السماح بمسارات محددة داخلها (مثل.).allowReadلها الأولوية علىdenyRead— وهو عكس الكتابة، حيثdenyWriteلها الأولوية علىallowWrite. يبقى إدخالdenyReadالأكثر تحديدًا من منطقةallowReadالتي يقع داخلها (مثلdenyRead: ["**/.env"]أو["./secrets"]معallowRead: ["."]) مرفوضًا. - الكتابة (نمط السماح فقط): افتراضيًا، يُرفض الوصول للكتابة في كل مكان. يجب عليك السماح بالمسارات صراحةً (مثل
.،/tmp). قائمة السماح الفارغة تعني عدم وجود وصول للكتابة.
عزل الشبكة (نمط السماح فقط): افتراضيًا، يُرفض كل الوصول إلى الشبكة. يجب عليك السماح بالنطاقات صراحةً. قائمة allowedDomains الفارغة تعني عدم وجود وصول إلى الشبكة. تُوجَّه حركة الشبكة عبر خوادم وكيلة (proxies) تعمل على المضيف:
-
Linux: تُوجَّه الطلبات عبر نظام الملفات من خلال مقبس نطاق Unix. تُزال مساحة أسماء الشبكة للعملية المعزولة بالكامل، لذا يجب أن تمر كل حركة الشبكة عبر الخوادم الوكيلة التي تعمل على المضيف (تستمع على مقابس Unix المثبَّتة (bind-mounted) داخل بيئة العزل)
-
macOS: يسمح ملف تعريف Seatbelt بالاتصال فقط بمنفذ localhost محدد. تستمع الخوادم الوكيلة على هذا المنفذ، مما ينشئ قناة مُتحكَّمًا بها لكل الوصول إلى الشبكة
-
Windows: تحجب مجموعة مرشحات WFP على مستوى الجهاز الاتصالات الصادرة التي تُجريها العمليات التي تعمل بحساب
srt-sandboxباستثناء loopback إلى نطاق منافذ الوكيل. تستمع الخوادم الوكيلة داخل ذلك النطاق، مما ينشئ قناة مُتحكَّمًا بها لكل الوصول إلى الشبكة. لا تتبع المرشحات عملية معزولة تضع رمزًا مميزًا مختلفًا على خيط (thread) قبل إنشاء مقبس، ولا حركة المرور التي تنقلها خدمة نظام نيابةً عنها؛ راجع القيود المعروفة الخاصة بـ Windows
تتوسط هذه الخوادم الوكيلة في كل من HTTP/HTTPS (عبر وكيل HTTP) وحركة TCP الأخرى (عبر وكيل SOCKS5)، وهي التي تفرض قوائم السماح والحظر الخاصة بنطاقاتك.
لمزيد من التفاصيل حول العزل في Claude Code، راجع:
البنية
src/
├── index.ts # Library exports
├── cli.ts # CLI entrypoint (srt command)
├── utils/ # Shared utilities
│ ├── debug.ts # Debug logging
│ ├── settings.ts # Settings reader (permissions + sandbox config)
│ ├── platform.ts # Platform detection
│ └── exec.ts # Command execution utilities
└── sandbox/ # Sandbox implementation
├── sandbox-manager.ts # Main sandbox manager
├── sandbox-schemas.ts # Zod schemas for validation
├── sandbox-violation-store.ts # Violation tracking
├── sandbox-utils.ts # Shared sandbox utilities
├── http-proxy.ts # HTTP/HTTPS proxy for network filtering
├── socks-proxy.ts # SOCKS5 proxy for network filtering
├── linux-sandbox-utils.ts # Linux bubblewrap sandboxing
├── macos-sandbox-utils.ts # macOS sandbox-exec sandboxing
└── windows-sandbox-utils.ts # Windows srt-win sandboxing
الاستخدام
كأداة CLI
يلفّ أمر srt (Anthropic Sandbox Runtime) أي أمر بحدود أمنية:
# Run a command in the sandbox
srt echo "hello world"
# With debug logging
srt --debug curl https://example.com
# Specify custom settings file
srt --settings /path/to/srt-settings.json npm install