
sandbox-runtime v0.0.67
أداة محاكاة خفيفة الوزن لفرض قيود على نظام الملفات والشبكة على العمليات العشوائية على مستوى نظام التشغيل، دون الحاجة إلى حاوية.
Anthropic Sandbox Runtime (srt)
أداة عزل خفيفة الوزن لفرض قيود على نظام الملفات والشبكة على عمليات عشوائية على مستوى نظام التشغيل، دون الحاجة إلى حاوية.
يستخدم srt أوليات العزل الأصلية لنظام التشغيل (sandbox-exec على macOS، وbubblewrap على Linux) وتصفية الشبكة القائمة على الوكيل. يمكن استخدامه لعزل سلوك الوكلاء، وخوادم MCP المحلية، وأوامر bash، والعمليات العشوائية.
معاينة بحثية تجريبية
Sandbox Runtime هو معاينة بحثية طُوّرت لـ Claude Code لتمكين وكلاء ذكاء اصطناعي أكثر أمانًا. يتم إتاحته كمعاينة مفتوحة المصدر مبكرة لمساعدة النظام البيئي الأوسع على بناء أنظمة وكيلية أكثر أمانًا. نظرًا لأن هذه معاينة بحثية مبكرة، فقد تتطور واجهات البرمجة وصيغ التكوين. نرحب بالملاحظات والمساهمات لجعل وكلاء الذكاء الاصطناعي أكثر أمانًا افتراضيًا!
التثبيت```bash
npm install -g @anthropic-ai/sandbox-runtime
## الاستخدام الأساسي```bash
# 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):```json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
**مع العزل** (`.mcp.json`):```json
{
"mcpServers": {
"filesystem": {
"command": "srt",
"args": ["npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
ثم قم بتكوين القيود في ~/.srt-settings.json:```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 أو ملفات حساسة أخرى. وبدون عزل الشبكة، قد تتمكن عملية من الهروب من الـ sandbox والحصول على وصول غير مقيّد إلى الشبكة.
عزل نظام الملفات يفرض قيودًا على القراءة والكتابة:
- القراءة (نمط الرفض ثم السماح): افتراضيًا، يُسمح بالوصول للقراءة في كل مكان. يمكنك رفض مناطق واسعة (مثل
/Users) ثم إعادة السماح بمسارات محددة داخلها (مثل.).allowReadله الأولوية علىdenyRead— عكس الكتابة، حيثdenyWriteله الأولوية علىallowWrite. يظل إدخالdenyReadالأكثر تحديدًا من منطقةallowReadالتي يقع داخلها (مثلdenyRead: ["**/.env"]أو["./secrets"]معallowRead: ["."]) مرفوضًا. - الكتابة (نمط السماح فقط): افتراضيًا، يُرفض الوصول للكتابة في كل مكان. يجب عليك السماح بالمسارات صراحةً (مثل
.،/tmp). قائمة السماح الفارغة تعني عدم وجود وصول للكتابة.
عزل الشبكة (نمط السماح فقط): افتراضيًا، يُرفض كل وصول إلى الشبكة. يجب عليك السماح بالنطاقات صراحةً. قائمة allowedDomains الفارغة تعني عدم وجود وصول إلى الشبكة. تُوجَّه حركة الشبكة عبر خوادم وكيلة تعمل على المضيف:
-
Linux: تُوجَّه الطلبات عبر نظام الملفات من خلال مقبس نطاق Unix. تُزال مساحة أسماء الشبكة للعملية المعزولة بالكامل، لذا يجب أن تمر كل حركة الشبكة عبر الوكلاء الذين يعملون على المضيف (يستمعون على مقابس Unix المرتبطة bind-mounted داخل الـ sandbox)
-
macOS: يسمح ملف تعريف Seatbelt بالاتصال فقط بمنفذ localhost محدد. يستمع الوكلاء على هذا المنفذ، مما ينشئ قناة مُتحكَّم بها لكل وصول إلى الشبكة
-
Windows: تحجب مجموعة مرشحات WFP على مستوى الجهاز كل الاتصالات الصادرة المنشأ من حساب
srt-sandboxباستثناء loopback إلى نطاق منافذ الوكيل. يستمع الوكلاء داخل ذلك النطاق، مما ينشئ قناة مُتحكَّم بها لكل وصول إلى الشبكة
يتم توسيط كل من HTTP/HTTPS (عبر وكيل HTTP) وحركة TCP الأخرى (عبر وكيل SOCKS5) بواسطة هؤلاء الوكلاء، الذين يفرضون قوائم السماح والحظر الخاصة بالنطاقات.
لمزيد من التفاصيل حول الـ sandbox في Claude Code، راجع:
- Claude Code Sandboxing Documentation
- Beyond Permission Prompts: Making Claude Code More Secure and Autonomous
البنية```
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) بتغليف أي أمر بحدود أمنية:```bash
# 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
ملف الإعدادات اختياري — في حال عدم وجود ملف في ~/.srt-settings.json، يعمل srt
بالإعدادات الافتراضية المدمجة: لا وصول للشبكة، ولا كتابة خارج مسارات
الكتابة الافتراضية، وقراءات غير مقيّدة. أما ملف الإعدادات الموجود فعلاً لكنه
فارغ، أو غير قابل للقراءة، أو لا يجتاز التحقق، فهو خطأ: يعلن srt ذلك
ويخرج بدلاً من الرجوع إلى تلك الإعدادات الافتراضية، فهي إعدادات مختلفة
وليست أضعف — فالرجوع سيُسقط قواعد denyRead وallowRead والبيانات
الاعتمادية الخاصة بالملف مع كل ما نصّ عليه. وينطبق الأمر ذاته على ملف
يُحدَّد بـ --settings، والذي يجب أن يكون موجوداً أيضاً.