← كل المقالات
Guide

شغّل Claude Code بأمان داخل dev container مع auto mode وصلاحيات محكمة

A secure developer workstation scene: a laptop connected to an isolated container box, outbound network arrows passing t

وضعت Anthropic رقمًا صارمًا على مشكلة يشعر بها كل مستخدم كثيف لـ Claude Code: وافق المستخدمون على نحو 93% من طلبات الصلاحيات، وتقول الشركة إن الانتباه يهبط كلما تراكمت الطلبات (Anthropic). هذا هو إرهاق الموافقات، وهو يحوّل “الإنسان داخل الحلقة” إلى “إنسان يضغط Enter.”

الرد الخاطئ هو تشغيل --dangerously-skip-permissions على اللابتوب والتمني أن يتصرف النموذج جيدًا. الرد الصحيح هو هندسة أمنية مملة: ضع Claude Code داخل dev container، وأعطه المستودع فقط، وقيّد الاتصال الخارجي، وعطّل bypass mode عبر السياسة، واستخدم auto mode فقط حيث يكون مدعومًا فعلًا.

هذا الدليل يعرض إعدادًا قابلًا للتشغيل يمكنك إسقاطه داخل أي مستودع اليوم. ويتناول أيضًا الجدل الحالي في المجتمع: المطوّرون يريدون وكلاء أكثر استقلالية، لكنهم لا يريدون حواجز خفية أو زحفًا أسود الصندوق على الملفات. الجواب العملي ليس “ثق في Claude أكثر.” بل “اجعل نطاق الضرر صغيرًا بما يكفي لتصبح الاستقلالية مقبولة.”

رسم معماري بأسلوب غلاف يوضح محررًا على المضيف، وdev container، وClaude Code يعمل كمستخدم غير root، وإدارة

النقاش في حقيقته عن قابلية المراقبة ونطاق الضرر

خيط Hacker News حول “محاولة Anthropic إخفاء أفعال Claude الذكية” ليس مجرد مسرح شكاوى. لخّص أحد المعلقين خوف المطوّرين: إذا بدأ الوكيل بفتح إعدادات قديمة أو الزحف في ملفات لا علاقة لها، يجب أن يعرف المشغّل بسرعة كافية لإيقافه (Hacker News). وخيط آخر عن تشغيل Claude Code “بشكل خطير” انتهى إلى النمط العملي نفسه: دع الوكيل يعمل بحرية، لكن فقط داخل sandbox بملفات وشبكة محدودة الوصول (Hacker News).

منشور Anthropic الهندسي نفسه يصل إلى النقطة ذاتها. فهو يقسّم الدفاعات إلى البيئة، والنموذج، والمحتوى الخارجي. البيئة هي الجزء الذي يمكنك جعله حتميًا. إذا لم تدخل الاعتمادات أصلًا إلى sandbox، فلن يستطيع Claude تسريبها، سواء كان السبب prompt injection، أو تمددًا من النموذج، أو تعليمة سيئة من المستخدم (Anthropic).

يناسب auto mode هذا السياق، لكنه ليس سحرًا. تقول Anthropic إن auto mode يستخدم مصنّفًا منفصلًا لمراجعة الأفعال قبل تشغيلها، وتصفه وثائقها بأنه معاينة بحثية، لا بديل عن المراجعة في العمليات الحساسة (Claude Code docs). هذا الفرق مهم. auto mode يقلّل الطلبات. الحاويات تقلّل العواقب.

هذا هو الموقف الذي أوصي به للفرق:

Modeاستخدمه فيلا تستخدمه في
planمستودعات غير مألوفة، تغييرات محفوفة بالمخاطرتعديلات طويلة بلا رقابة
acceptEditsالعمل الطبيعي على الميزاتالنشر، الأسرار، تغييرات البنية التحتية
autodev containers معزولة مع تحكم في الخروج للشبكةأنظمة الإنتاج أو مستودعات مجهولة
bypassPermissionsأجهزة VM قابلة للرمي فقطلابتوبات المطوّرين

تقول وثائق Anthropic إن auto mode يتطلب Claude Code v2.1.83 أو أحدث. على Anthropic API، تشمل النماذج المدعومة Claude Opus 4.6 أو أحدث وSonnet 4.6. على Bedrock وVertex AI وMicrosoft Foundry، تسرد الوثائق Opus 4.7 وOpus 4.8 فقط لـ auto mode (Claude Code docs).

ابنِ Dev Container

أنشئ ثلاثة ملفات في مستودعك:

.devcontainer/
  devcontainer.json
  Dockerfile
  managed-settings.json

ابدأ بـ .devcontainer/devcontainer.json:

{
  "name": "claude-code-safe",
  "build": {
    "dockerfile": "Dockerfile"
  },
  "remoteUser": "node",
  "mounts": [
    "source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
  ],
  "runArgs": [
    "--cap-add=NET_ADMIN",
    "--cap-add=NET_RAW"
  ],
  "containerEnv": {
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "DISABLE_AUTOUPDATER": "1",
    "ANTHROPIC_BASE_URL": "https://api.onehop.ai/anthropic",
    "ANTHROPIC_API_KEY": "${localEnv:ONEHOP_API_KEY}"
  },
  "postCreateCommand": "sudo /usr/local/bin/init-firewall.sh"
}

توصي وثائق dev container لدى Anthropic بتشغيل Claude Code داخل حاوية كي تُنفّذ الأوامر بعيدًا عن المضيف، بينما تظل التعديلات ظاهرة في المستودع المركّب (Claude Code docs). وتحذّر أيضًا من تركيب أسرار المضيف مثل ~/.ssh أو ملفات اعتماد السحابة. اتبع هذه النصيحة. إذا احتاج Claude إلى رمز GitHub مقيّد بالمستودع، فمرّر رمزًا قصير العمر عبر البيئة. لا تركّب مجلد المنزل كاملًا فقط لأنه مريح.

والآن Dockerfile:

FROM mcr.microsoft.com/devcontainers/javascript-node:22

RUN npm install -g @anthropic-ai/claude-code@latest

COPY managed-settings.json /etc/claude-code/managed-settings.json
COPY init-firewall.sh /usr/local/bin/init-firewall.sh

RUN chmod +x /usr/local/bin/init-firewall.sh

توفر وثائق Anthropic أيضًا Dev Container Feature، لكن التثبيت عبر Dockerfile يجعل السياسة والإصدارات أسهل للفهم داخل مستودع الفريق. إذا أردت قابلية إعادة إنتاج حقيقية، ثبّت @anthropic-ai/claude-code على إصدار محدد وأبقِ DISABLE_AUTOUPDATER=1.

أحكم الصلاحيات قبل تفعيل Auto Mode

أنشئ .devcontainer/managed-settings.json:

{
  "permissions": {
    "defaultMode": "auto",
    "disableBypassPermissionsMode": "disable",
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(git push *)",
      "Bash(kubectl *)",
      "Bash(terraform apply *)",
      "WebFetch(domain:169.254.169.254)"
    ],
    "ask": [
      "Bash(npm publish *)",
      "Bash(docker push *)",
      "Bash(gh release *)"
    ],
    "allow": [
      "Bash(npm install)",
      "Bash(npm test *)",
      "Bash(npm run lint *)",
      "Bash(git diff *)",
      "Bash(git status *)"
    ]
  },
  "autoMode": {
    "environment": {
      "trustedDomains": [
        "registry.npmjs.org",
        "github.com"
      ]
    }
  }
}

هناك تفصيلان يقومان بالعمل الحقيقي هنا.

أولًا، disableBypassPermissionsMode يحظر bypassPermissions ويعطّل العلم --dangerously-skip-permissions عندما يُفرض عبر الإعدادات المُدارة. توثق Anthropic هذا التحكم تحديدًا في مرجع الإعدادات لديها (Claude Code docs).

ثانيًا، لا تزال قواعد الرفض مهمة في auto mode. تقول Anthropic إن auto mode يحظر الأفعال التي تتصاعد خارج الطلب، أو تستهدف بنية تحتية غير معروفة، أو تبدو مدفوعة بمحتوى عدائي، لكن لا ينبغي أن تسلّم سياسة فريقك إلى مصنّف. إذا لم يكن من المفترض أن يشغّل أحد terraform apply من جلسة وكيل، فاكتب ذلك كقاعدة رفض.

تنبيه واحد: السياسة المُدارة داخل المستودع يمكن لأي شخص يملك حق تعديل المستودع أن يغيّرها. تقول وثائق Anthropic إن /etc/claude-code/managed-settings.json له أولوية عالية داخل Linux، لكن للسياسة التي لا يستطيع المطوّرون تجاوزها بتعديل ملفات المستودع، استخدم إعدادات مُدارة من الخادم أو MDM (Claude Code docs). لفريق ناشئ، السياسة المودعة في المستودع تظل خط أساس جيدًا. أما لنشر مؤسسي، فلا تتوقف هناك.

لوحة مقارنة قبل وبعد: في اليسار يظهر Claude Code على لابتوب مضيف مع وصول إلى مجلد المنزل ومفاتيح SSH،

قيّد الخروج للشبكة بقائمة سماح صغيرة

أضف .devcontainer/init-firewall.sh:

#!/usr/bin/env bash
set -euo pipefail

ALLOWED_HOSTS=(
  api.onehop.ai
  api.anthropic.com
  claude.ai
  platform.claude.com
  registry.npmjs.org
  github.com
  raw.githubusercontent.com
)

iptables -P OUTPUT DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

for host in "${ALLOWED_HOSTS[@]}"; do
  for ip in $(getent ahostsv4 "$host" | awk '{print $1}' | sort -u); do
    iptables -A OUTPUT -p tcp -d "$ip" --dport 443 -j ACCEPT
  done
done

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

هذا بسيط عمدًا. يحل أسماء المضيفين المسموح بها عند بدء التشغيل ويسمح بـ TCP 443 إلى تلك العناوين. للتحكم على مستوى إنتاجي، ضع الحاوية خلف proxy وسجّل كل طلب. لكن حتى قاعدة الرفض الافتراضي الأساسية هذه أفضل من ترك وكيل برمجي مستقل يتحدث مع الإنترنت كله.

تسرد وثائق الشبكة لدى Anthropic النطاقات المطلوبة مثل api.anthropic.com وclaude.ai وplatform.claude.com وdownloads.claude.ai وstorage.googleapis.com وraw.githubusercontent.com، بحسب مسار التثبيت والمصادقة (Claude Code docs). إذا ثبّت عبر npm وعطّلت التحديثات التلقائية، فقد لا تحتاج نطاقات التنزيل أثناء التشغيل. أبقِ القائمة ضيقة، ثم أضف النطاقات فقط عندما تفشل عمليات البناء لسبب معروف.

شغّله:

export ONEHOP_API_KEY=oh_your_key_here
code .
# VS Code: Dev Containers: Rebuild and Reopen in Container
claude --permission-mode auto

داخل الحاوية، تحقق:

whoami
claude --version
curl -I https://api.onehop.ai
curl -I https://example.com

ينبغي أن يعمل طلب OneHop. وينبغي أن يفشل طلب example.com إلا إذا أضفته.

مرّر Claude Fable 5 عبر OneHop

أطلقت Anthropic كلًا من Claude Fable 5 وClaude Mythos 5 في 9 يونيو 2026، مع تسعير Fable 5 عند 10 دولارات لكل مليون رمز إدخال و50 دولارًا لكل مليون رمز إخراج، أي أقل من نصف سعر Mythos Preview (Anthropic). تدرج OneHop Claude Fable 5 باسم anthropic/claude-fable-5، مع تسعير رسمي ظاهر بقيمة $10/M للإدخال و$50/M للإخراج، وتسعير OneHop بقيمة $3/M للإدخال و$15/M للإخراج، إضافة إلى رصيد مجاني بقيمة 10 دولارات للمستخدمين الجدد من دون الحاجة إلى بطاقة (OneHop).

ملاحظة تشغيلية حالية: تقول صفحة Fable 5 على OneHop إن النموذج غير متاح مؤقتًا مع بقائه مدرجًا. أبقِ الإعدادات في مكانها، لكن توقّع استخدامه عندما يحصل حسابك ومنطقتك على الوصول.

لاستدعاء Anthropic Messages مباشرًا عبر OneHop، استخدم نقطة النهاية المتوافقة مع Anthropic التي تنشرها OneHop لهذا النموذج:

from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.onehop.ai/anthropic",
    api_key="oh_your_key_here",
)

message = client.messages.create(
    model="anthropic/claude-fable-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Summarize this repo's test strategy."}],
)

print(message.content[0].text)

إذا كان تطبيقك يستخدم أصلًا بوابة OneHop المتوافقة مع OpenAI، فتغيير base URL في سطر واحد هو:

client = OpenAI(base_url="https://api.onehop.ai/v1", api_key="oh_your_key_here")

بالنسبة إلى Claude Code تحديدًا، استخدم base URL المتوافق مع Anthropic في ANTHROPIC_BASE_URL، لأن Claude Code يتحدث Anthropic Messages API. تعرض صفحة نموذج Fable 5 على OneHop حاليًا Anthropic Messages كمتاح على https://api.onehop.ai/anthropic، بينما OpenAI Chat Completions معلّم كغير مدعوم لهذا النموذج (OneHop).

مخطط مقارنة أسعار مدمج بثلاثة أعمدة لكل نموذج: سعر Anthropic الرسمي لـ Fable 5 عند $10 للإدخال و$50 للإخراج،

نموذج التشغيل: ثق أقل، واشحن أسرع

أفضل إعداد لـ Claude Code ليس الأكثر تساهلًا. بل الإعداد الذي يجعل الأخطاء رخيصة.

استخدم وضع plan عندما يستكشف Claude قاعدة كود جديدة. انتقل إلى auto فقط بعد تضييق نطاق المهمة. أبقِ bypassPermissions معطّلًا عبر السياسة. امنع قراءة الأسرار. امنع النشر، والدفع إلى الفروع المحمية، وتغييرات السحابة، ونقاط metadata. ضع الوكيل داخل dev container غير root. احظر الخروج إلى الشبكة افتراضيًا. راجع diff قبل الدمج.

قد يبدو هذا أبطأ من وضع YOLO. عمليًا، هو أسرع لأن لا أحد يحتاج إلى مراقبة 40 طلبًا تافهًا أو التساؤل هل سمحت موافقة ما للنموذج بتسريب رمز. تقول Anthropic في منشور الاحتواء الخاص بها إن dev container المرجعي موجود حتى يستطيع Claude Code العمل بلا رقابة من دون موافقات لكل فعل (Anthropic). القطعة الناقصة هي سياسة الفريق.

إذا أردت أقصر طريق لتجربة عمل برمجي من فئة Fable من دون إعادة بناء حزمة المزوّدين لديك، فمرّره عبر Claude Fable 5 على OneHop. يمكن للحسابات الجديدة البدء برصيد مجاني قدره 10 دولارات. تغيير base URL هو الجزء السهل. المكسب الحقيقي هو إقرانه بحاوية تجعل الاستقلالية آمنة بما يكفي لاستخدامها.