Claude Code فيه مجموعة ميزات متقدمة المستخدمين المحترفين بيحتاجوها في الشغل المعقّد أو اللي فيه مخاطرة. وضع التخطيط، التفكير الموسّع، الوضع التلقائي، الـ sandboxing، والتشغيل البرمجي — كل واحد من دول بيغيّر طريقة شغل Claude بشكل جوهري. الموديول ده بيشرح كل واحد بالتفصيل.
وضع التخطيط والتفكير الموسّع
وضع التخطيط بيفصل التفكير عن التنفيذ. لما تفعّله، Claude بيعمل بحث في الكود الأول ويعمل خطة تنفيذ مفصّلة. أنت بتراجع الخطة وممكن تعدّل عليها، وبعدين Claude ينفّذها. ده بيمنع المشكلة الشائعة إن Claude يبدأ يكتب كود قبل ما يفهم المشكلة كويس.
فعّله بأمر /plan <description>، أو flag الـ --permission-mode plan في الـ CLI، أو Shift+Tab عشان تتنقل بين الأوضاع. لما Claude يعرض خطة، اضغط Ctrl+G عشان تفتح الخطة المقترحة في محرر النصوص الافتراضي بتاعك وتعدّل عليها مباشرةً قبل الموافقة. الـ alias opusplan بيوجّه التخطيط لـ Opus والتنفيذ لـ Sonnet:
claude --model opusplan "redesign the database schema for multi-tenancy"
التفكير الموسّع بيدي Claude وقت أكتر يفكّر قبل ما يرد. فعّله وقفّله بـ Option+T (على macOS) أو Alt+T. أمر /effort بيحدد عمق التفكير: low، medium، high، xhigh، أو max (للجلسة الحالية بس). ضبطه للجلسة كلها بـ export CLAUDE_CODE_EFFORT_LEVEL=high. لو عايز أعلى مستوى تفكير، اكتب كلمة “ultrathink” في الـ prompt — دي بتفعّل وضع التفكير العميق بغض النظر عن إعداد الـ effort الحالي. كلمة ultracode بتفعّل dynamic workflow run — الكلمة دي اتسمّت من workflow لـ ultracode في v2.1.160. كلمة workflow نفسها ما بقتش بتفعّل run، لكن لو طلبت workflow بصياغتك الطبيعية، Claude لسه يقدر ينفّذه. Dynamic workflows بتتفعّل بـ /effort ultracode — ده slash command مش --ultracode flag، اللي بيحط الـ effort على xhigh على الموديلات اللي بتدعمه.
عشان تحط سقف لمقدار الـ effort اللي الجلسة تقدر تستخدمه — بتسيب المستويات الأقل متاحة لكن بتنزّل أي طلب أعلى للسقف — اضبط maxEffortLevel في settings.json (v2.1.267+) على low، أو medium، أو high، أو xhigh، أو max (قيمة max معناها من غير سقف). السقف بيتغلّب على أي مستوى أعلى من /effort، أو منتقي /model، أو --effort، أو CLAUDE_CODE_EFFORT_LEVEL، أو الافتراضي بتاع الموديل نفسه، وClaude Code بيطبّقه قبل كل request، عشان كده بيشتغل على كل مزوّد — بما فيهم Bedrock وGoogle’s Cloud Agent Platform وFoundry. لما أكتر من scope في الإعدادات يحط سقف، الأقل بيكسب، يعني سقف متحط في scope مينفعش يترفع من scope تاني؛ حطه في managed settings عشان تفرضه على مستوى المؤسسة. للسقف لكل موديل، ضيف حقل maxEffortLevel لإدخال الموديل في modelSettings.
متغير MAX_THINKING_TOKENS=0 بيوقّف التفكير على Anthropic API في كل الموديلات ما عدا Fable 5.1 و Fable 5 (كمان مش بيقدر توقّف التفكير على Fable 5.1 و Fable 5). بالنسبة للقيم الموجبة، الـ fixed thinking budget mode ما بينطبّقش غير على الموديلات الأقدم اللي بتستخدمه: على Fable 5.1 و Fable 5 و Sonnet 5 و Opus 4.7+، الـ adaptive reasoning دايمًا شغّال، يعني القيم الموجبة من MAX_THINKING_TOKENS ما بتأثّرش. على Opus 4.6 و Sonnet 4.6، اللي بيستخدموا adaptive reasoning افتراضيًا، لازم تضبط CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 الأول عشان ترجع للـ fixed thinking budget اللي بيتحكم فيه القيم الموجبة من MAX_THINKING_TOKENS.
تخيّل إنك بتاخد قرار معماري كبير — الجمع بين وضع التخطيط ومستوى effort عالي بيديك أحسن نتيجة:
claude --permission-mode plan --effort high --model opusplan "migrate from REST to GraphQL"
سلاسل الـ Fallback Model
لما الموديل الأساسي يبقى overloaded أو مش متاح أو يرجّع خطأ سيرفر تاني من النوع اللي مش بيتعاد المحاولة فيه، Claude Code يقدر يبدّل لموديل احتياطي (fallback) بدل ما الطلب يفشل. أخطاء المصادقة والفوترة و rate-limit وحجم الطلب والنقل (transport) مبتشغّلش التبديل ده أبدًا — دي بتمشي على المعالجة العادية لإعادة المحاولة والأخطاء. اضبط موديل احتياطي واحد أو أكتر و Claude Code بيجرّبهم بالترتيب، وبيوريك إشعار لما يبدّل. التبديل بيفضل شغّال للدور الحالي بس، فرسالتك اللي بعدها بتجرّب الموديل الأساسي الأول تاني. السلاسل محدودة بتلات موديلات بعد إزالة المكرر، وأي إدخالات زيادة بيتم تجاهلها.
اضبط السلسلة لجلسة واحدة بـ flag الـ --fallback-model، اللي بياخد قائمة مفصولة بفاصلة:
claude --fallback-model sonnet,haiku
عشان تثبّت السلسلة عبر الجلسات، اضبط fallbackModel في الإعدادات كـ array:
{
"fallbackModel": ["claude-sonnet-5", "claude-haiku-4-5"]
}
flag الـ --fallback-model له الأولوية على إعداد fallbackModel. كل عنصر بياخد اسم موديل أو alias، و"default" بيتوسّع للموديل الافتراضي حسب نوع حسابك.
الوضع التلقائي والتحكم في الصلاحيات
الوضع التلقائي (Auto Mode) هو وضع صلاحيات تجريبي بيستخدم classifier أمان في الخلفية عشان يقرر إذا كانت الأدوات آمنة تشتغل من غير ما يسألك. مصمّم للشغل اللي محتاج autonomy أعلى مع الحفاظ على حواجز الأمان.
بتستخدمه زي أي وضع صلاحيات تاني: اختار auto في إعدادات الصلاحيات أو اتنقل ليه بـ Shift+Tab. المؤسسات تقدر تضبط إيه اللي Auto Mode بيعتبره بنية تحتية موثوقة من خلال block الـ autoMode في الإعدادات.
Auto Mode بشكل افتراضي بيكون حذر مع الحاجات اللي شكلها exfiltration بيانات، تنفيذ shell خطر، أو تغييرات تأثر على الـ production. لما الـ permission check يعلق، الـ spinner بيتحول للأحمر — ده بيخلّي واضح إن فيه check في_progress مش أداة شغّالة. لو فريقك عنده repos موثوقة، domains داخلية، أو خدمات معينة عايز Auto Mode يتعامل معاها عادي، عرّفها في autoMode.environment.
لما تخصّص autoMode.allow أو autoMode.soft_deny أو autoMode.hard_deny أو autoMode.environment، ضيف التوكن الخاص "$defaults" عشان تحافظ على القواعد المدمجة وتضيف قواعدك جنبها. من غير "$defaults"، المصفوفة بتاعتك بتحل محل الافتراضيات بالكامل.
جوه الـ classifier، الأولوية بتشتغل في أربع طبقات: قواعد hard_deny بتمنع بشكل غير مشروط (نية المستخدم واستثناءات allow مش بتطبّق). قواعد soft_deny بتمنع بعد كده، بس نية المستخدم واستثناءات allow ممكن تتخطاها. قواعد allow بعد كده بتتخطى قواعد soft_deny المطابقة. نية المستخدم الصريحة بتتخطى الـ soft blocks المتبقية — طلب “force-push this branch” بيتخطى الـ soft block، بس طلب عام زي “clean up the repo” لأ. لو الـ classifier منع action تلات مرات متتالية أو عشرين مرة إجمالية، الـ auto mode بيتوقف و Claude Code بيرجع يسألك بدل ما يكمّل. الحدود دي مش قابلة للتعديل.
استخدم claude auto-mode defaults عشان تطبع القواعد المدمجة، وclaude auto-mode config عشان تشوف الـ config المدمج الفعلي، وclaude auto-mode critique لتعليقات AI على قواعدك المخصصة:
{
"autoMode": {
"allow": ["$defaults", "Deploying to staging is allowed"],
"soft_deny": ["$defaults", "Never run migrations outside the migrations CLI"],
"hard_deny": ["$defaults", "Never send repo contents to third-party APIs"],
"environment": ["$defaults", "Internal API: api.corp.example.com"]
}
}
ابتداءً من v2.1.246، أمر /permissions بقى فيه تبويب Auto mode يخليك تشوف وتعدّل قواعد الـ classifier دي مباشرةً من الواجهة — بديل تفاعلي لأوامر claude auto-mode وتعديل بلوك إعدادات autoMode بإيدك.
أوضاع الصلاحيات بتتراوح من الأقل للأكتر حرية. default بيقرأ بحرية بس بيسألك قبل أي action تاني. acceptEdits بيوافق تلقائيًا على تعديلات الملفات في الجلسة، ما عدا الكتابة في المجلدات المحمية. plan بيدخل وضع التخطيط الأول. auto بيستخدم الـ classifier. dontAsk بيشغّل بس الأدوات المعتمدة مسبقًا. bypassPermissions بيوافق على كل حاجة من غير ما يسألك — بما فيها الكتابة في المجلدات المحمية (.git، .claude، .vscode، .idea، .husky) ابتداءً من v2.1.126. استخدم --dangerously-skip-permissions كـ CLI flag للسلوك نفسه. الـ hooks اللي بتشتغل في السياقات دي تاخد مستوى الجهد الحالي من متغير البيئة $CLAUDE_EFFORT.
ابدأ الجلسة في أي وضع بـ flag الـ --permission-mode <mode>. الـ flag بيقبل default وacceptEdits وplan وauto وdontAsk وbypassPermissions، وبيتقدّم على defaultMode اللي في إعداداتك للجلسة دي تحديدًا — يعني تقدر تثبّت وضع أكتر صرامة لـ automation معينة من غير ما تعدّل ملف الإعدادات. نفس الـ flag بيشتغل مع -p للتشغيل غير التفاعلي، وdontAsk بيتفعّل بس عن طريق الـ flag ده (مش موجود في دورة Shift+Tab):
أمر /cd <directory> بيحرك الجلسة لمجلد عمل جديد من غير ما يكسر الـ prompt cache في نص الجلسة.
claude --permission-mode plan "draft the migration"
claude -p "audit dependencies" --permission-mode dontAsk
اضبط افتراضي في الإعدادات عشان أغلب الجلسات تبدأ في الوضع اللي عايزه من غير ما تمرّر الـ flag:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
عشان تخصّص Auto Mode لبيئتك:
{
"autoMode": {
"environment": [
"Source control: github.example.com/acme-corp and all repos under it",
"Trusted internal domains: *.corp.example.com, api.internal.example.com"
]
}
}
على Anthropic API و Amazon Bedrock و Google Cloud Vertex AI و Microsoft Foundry، الوضع التلقائي (Auto Mode) متاح بشكل افتراضي طول ما حسابك مستوفي متطلبات الموديل وموافقة المسؤول (على Team و Enterprise، لازم Owner يفعّله في إعدادات Claude Code admin الأول). خيار التفعيل CLAUDE_CODE_ENABLE_AUTO_MODE=1 اللي كان كمان بيتحكم في المنصات التلاتة غير Anthropic في v2.1.158–v2.1.206 اتشال في v2.1.207 — المتغير لسه مقبول للـ backwards compatibility بس مفيش تأثير له. على المنصات التلاتة دي، بس Claude Sonnet 5 و Opus 4.7 أو أحدث، وموديلات Fable مدعومة. الموديلات الأقدم — بما فيها Sonnet 4.5 و Opus 4.5 و Haiku وموديلات claude-3 — مش مدعومة على أي provider. المسؤولين يقدروا يقفلوا الوضع نهائيًا بـ permissions.disableAutoMode: "disable" في الـ managed settings، وده بيشيله من دورة Shift+Tab وبيرفض --permission-mode auto عند بدء التشغيل.
من v2.1.278، على خطط Enterprise وحسابات Claude API ومنصات AWS و Bedrock و Vertex و Foundry (حسب توفّرها على كل منصة)، الوضع التلقائي (Auto Mode) بيطلب من السيرفر يعمل فحوصات الـ classifier الأمنية كجزء من طلبات الموديل العادية للجلسة — ومن غير رسوم عليها. لما الفحوصات دي اللي على السيرفر ماتقدرش توصل للجلسة (غالبًا بسبب LLM gateway أو proxy في المسار)، Claude Code بيرجع لطلبات الـ classifier بتاعته، اللي بتتحسب زي الأول، و/status بيعرض صف Auto mode server بيقول Enabled أو Disabled. لو إنت عارف إن الـ gateway بتاعك مش هيمرّر الفحوصات دي، اضبط CLAUDE_CODE_AUTO_MODE_SERVER=0 قبل ما تبدأ الجلسة عشان تستخدم طلبات Claude Code بتاعته دايمًا. المتغير ده مابيتقراش على اتصال مباشر بـ Anthropic API، وهو مؤقت — ممكن يتشال في إصدار جاي، فماتبناش managed policy حواليه.
في إعدادات جديدة مهمين: إعداد enforceAvailableModels (v2.1.175) بيوسّع قائمة availableModels لتغطي الـ Default model كمان، مش بس الـ alternate models. وإعداد footerLinksRegexes (v2.1.176) بيضيف badges لروابط مخصصة في صف الـ footer عن طريق regex.
إعداد parentSettingsBehavior (v2.1.133، مستوى admin) بيتحكم في إزاي الإعدادات اللي جاية من الـ parent tier — زي اللي بيحددها embedding hosts من SDK أو IDE — بتتعامل مع سياسات الـ admin المُدارة. القيمة الافتراضية 'first-wins' بتتجاهل إعدادات الـ parent خالص، فبتتطبّق سياسات الـ admin بس. لما تحطّه على 'merge'، الإعدادات دي بتتحط تحت سياسة الـ admin من خلال فلتر تقييدي فقط: تقدر تشدّد السياسة (مثلًا تدمج قوايم الحظر) لكن مش تقدر تخفّفها. الإعداد مالوش أي تأثير من غير admin tier — من غيره بيفضل سلوك 'first-wins' هو الساري.
وضع Restricted
طيب، خلينا نتكلم عن --restricted. الـ flag ده بيبدأ Claude Code في وضع متشدّد — الاستخدام الموثّق ليه لما يكون فيه evaluation harness بيشغّل claude على جهاز مشترك ولازم Claude Code ما يشغّلش أوامر ولا يقرا إعدادات الجهاز ده. بيشيل الـ built-in tools اللي بتشغّل أوامر أو كود، بالإضافة لـ WebFetch، إلا لو سمّيتهم صراحةً في --tools. أدوات الملفات اللي فاضلة بتفضل محصورة جوه الـ working directory، وbypassPermissions بيترفض حتى لو طلبته بعد كده، وكمان التحميل بيكون بس على الإعدادات المُدارة (managed settings) و--settings — بينما ملفات الإعدادات على مستوى الـ user والمشروع والـ local بتتجاهل في الجلسة دي. ده بيفيدك لما يكون عندك سياق تشغيل مؤقت أو مش موثوق ومحتاج تقلّل الـ surface area لأقل حد ممكن:
# شغّل مهمة لمرة واحدة من غير ما تجيب shell أو code-execution أو fetch
claude --restricted -p "summarize the contents of README.md"
استخدم --restricted لما تحب الجلسة تبدأ من غير الـ built-in tools بتاعت الـ command والـ code-execution وWebFetch؛ باقي الـ built-in tools بتفضل متاحة حتى لو ما سمّيتهاش في --tools. أدوات الملفات اللي فاضلة بتفضل محصورة جوه الـ working directory، يعني الوضع ده بيضيّق الـ surface area من غير ما يعزلها بالكامل. عشان تخلّي أداة اتشالت متاحة جوه وضع restricted، ضيفها لـ --tools:
claude --restricted --tools "Bash,WebFetch" -p "fetch and summarize today's commits"
التشغيل البرمجي والـ Sandboxing
لما تشغّل Claude برمجيًا بـ claude -p "your prompt" ده بيشغّله بدون تفاعل. الـ output بيروح لـ stdout، وده بيخلّيه قابل للتركيب مع pipelines الـ shell وأنظمة الأتمتة. ادمجه مع --output-format json عشان output منظّم. استخدم --permission-mode bypassPermissions للتشغيل الآلي الكامل في CI/CD:
# Automated code review in CI
git diff HEAD~1 | claude -p "review these changes for security issues" \
--output-format json \
--permission-mode bypassPermissions
# Generate docs for changed files
claude -p "generate JSDoc for all functions in $CHANGED_FILE" \
--print --no-session-persistence
الـ sandboxing بيوفّر عزل على مستوى نظام التشغيل لصلاحيات الملفات والشبكة. الـ sandboxed Bash متاح على macOS و Linux و WSL2. الـ native Windows مش مدعوم؛ على Windows، شغّل Claude Code جوه WSL2 distribution. فعّله بأمر /sandbox خلال الجلسة. في وضع الـ sandbox، Claude بيقدر يوصل بس للمسارات وقواعد الشبكة اللي أنت حددتها. ده مفيد جدًا لما تشغّل Claude على كود مش موثوق أو في بيئات محتاج فيها حدود صارمة.
ضبط عزل الشبكة بدقة من خلال sandbox.network.allowedDomains وsandbox.network.deniedDomains في ملف settings.json. الأول بيسمح بالـ domains للترافيك الخارج، والتاني بيحظر domains معينة حتى لو wildcard أوسع في allowedDomains كان هيسمح بيها — deniedDomains دايمًا ليه الأولوية. الاتنين بيدعموا wildcards زي *.example.com:
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"],
"deniedDomains": ["uploads.github.com"]
}
}
}
في الإعدادات المُدارة، قائمة deniedDomains بتتدمج من كل مصادر الإعدادات (managed و user و project و local) بغض النظر عن allowManagedDomainsOnly. الـ flag ده بيقيّد بس أنهي scopes allowedDomains بتتقرأ منها — قواعد الحظر من أي scope دايمًا بتتطبّق، فمفيش سياسة مؤسسية تقدر تسقط block اتحط على مستوى user بالصدفة.
sandbox.network.strictAllowlist (v2.1.219) بيضيف وضع عزل أشد: لما يتفعّل، كل الـ hosts اللي مش في allowedDomains بتتنكر من غير ما يسأل. ده مفيد لبيئات الـ sandbox عالية الحساسية اللي عايزة شبكة مضمونة بدون استثناءات تفاعلية.
على Linux و WSL، استخدم sandbox.bwrapPath وsandbox.socatPath عشان تحدد مسارات مخصصة لملفات bubblewrap و socat:
{
"sandbox": {
"bwrapPath": "/usr/local/bin/bwrap",
"socatPath": "/usr/bin/socat"
}
}
للمؤسسات، الإعدادات المُدارة (managed settings) بتتحكم في إعدادات المستخدمين من خلال أدوات إدارة النظام: plist على macOS، الـ Registry على Windows، ملفات config مُدارة، ودروب إنز managed-settings.d/ بتتدمج أبجديًا. ده منفصل عن ملفات الذاكرة المُدارة زي ملف CLAUDE.md على مستوى المؤسسة.
# Test headless with sandboxing
claude -p "analyze the security of this codebase" \
--sandbox \
--permission-mode plan \
--output-format json
الـ Hooks
الـ hooks بتخلّيك تستجيب لأحداث معينة خلال جلسة Claude Code. الـ hook الـ DirectoryAdded (v2.1.219) بينفّذ بعد ما /add-dir أو طلب التحكم register_repo_root من الـ SDK يسجّل مجلد عمل إضافي في نص الجلسة — بيستجيب لـ إضافة مجلد للجلسة (توسيع الملفات اللي Claude يقدر يوصلها)، مش لتغيير مجلد الجلسة الحالي. ده مفيد للـ scripts اللي محتاجة تتتبع أو تعيد ضبط كل ما مجلد جديد يتسجّل.
أداة Advisor (تجريبية)
أداة Advisor هي ميزة تجريبية بتعتمد على نظام dual-model، بتخلي model منفّذ أسرع وأقل تكلفة (زي Sonnet) يستشير model مستشار أذكى (زي Opus) أثناء الشغل للحصول على توجيهات استراتيجية. المستشار بيقرأ المحادثة كاملة وبيطلع خطة أو تصحيح مسار، وبعدين المنفّذ بيكمّل الشغل. النمط ده مناسب لشغل الـ agents الطويل اللي أغلب الخطوات فيه ميكانيكية بس مهم يكون في خطة ممتازة.
فعّلها بأمر /advisor. لما تكون مفعّلة، الجلسات بتعرض label “experimental” وإشعار بدء. الـ model المنفّذ بيتحدد كـ model الجلسة الرئيسي، والـ model المستشار بيتحدد من خلال dialog الـ /advisor. أداة Advisor بتتفعّل عن طريق أمر /advisor أو إعداد advisorModel أو flag الـ --advisor. متغير البيئة الوحيد المتعلق بأداة Advisor هو CLAUDE_CODE_DISABLE_ADVISOR_TOOL، اللي بيعطّل الأداة مش بيفعّلها.
Glob وGrep الأصلية على macOS/Linux
على الـ native macOS وLinux builds، أدوات Glob وGrep بتتعوّض بـ binaries مدمجة bfs وugrep متاحة من خلال أداة Bash. النتيجة: بحث أسرع في الملفات من غير round-trip لأداة منفصلة — Claude بيستخدم أمر Bash واحد بدل ما يستدعي أداة مخصصة، وده بيقلل الـ latency على الـ codebases الكبيرة.
Windows والـ npm-installed builds مش متأثرين وبيستمروا في استخدام أدوات Glob وGrep الأصلية. متغيرات البيئة CLAUDE_CODE_GLOB_HIDDEN وCLAUDE_CODE_GLOB_NO_IGNORE وCLAUDE_CODE_GLOB_TIMEOUT_SECONDS لسه بتنطبق على الأدوات الأصلية حيث ما تكون مستخدمة.
تنظيف الجلسات بـ cleanupPeriodDays
إعداد cleanupPeriodDays في settings.json بيتحكم في مدة الاحتفاظ ببيانات الجلسة قبل الحذف التلقائي عند بدء التشغيل. الافتراضي 30 يوم والحد الأدنى 1 — تعيينه لـ 0 بيترفض بخطأ validation. الإعداد كمان بيتحكم في الإزالة التلقائية للـ orphaned subagent worktrees (من الأعطال أو التشغيلات المتوازية المتقطعة) عند بدء التشغيل، بشرط إنها مفيهاش تغييرات غير مُلتزَمة ولا ملفات غير متتبَّعة ولا commits غير مدفوعة. الـ worktrees اللي بتعملها بـ --worktree مبتتشالش أبدًا في العملية دي:
{
"cleanupPeriodDays": 14
}
عشان تمنع كتابة الـ transcripts خالص في الوضع غير التفاعلي، استخدم --no-session-persistence.
مسح بيانات المشروع (Project Purge)
لما cleanupPeriodDays مش كفاية وعايز تمسح كل بيانات Claude Code لمشروع معين فورًا، استخدم claude project purge. الأمر ده بيمسح الـ transcripts، قوائم المهام، سجلات التشخيص، تاريخ تعديلات الملفات، تاريخ الـ prompts، وسجل المشروع نفسه:
# معاينة اللي هيتمسح من غير ما تمسح فعلًا
claude project purge --dry-run
# مسح بيانات المشروع الحالي
claude project purge
# تخطي سؤال التأكيد
claude project purge --yes
# اختيار تفاعلي للعناصر اللي عايز تمسحها
claude project purge --interactive
# مسح بيانات كل المشاريع مرة واحدة
claude project purge --all
الـ flags تقدر تجمعهم مع بعض: claude project purge --all --dry-run بيعرض إيه اللي هيتمسح لو عملت مسح كامل. الاختصارات -y و-i شغّالة كمان.
Environment Variables للتشخيص والمنصات
في شوية environment variables بتفتح surfaces مش متاحة لسه كأوامر أو settings.
OTEL_LOG_RAW_API_BODIES=1 بيخلي Claude يبعت الـ API request و response bodies الكاملة كـ OpenTelemetry log events — فعّله لما تكون بتتحرى ليه request فشل أو إيه اللي Claude بعته للـ model بالظبط. خلي بالك بعد كده لأن bodies الـ request ممكن يكون فيها secrets.
OTEL_RESOURCE_ATTRIBUTES بيضيف أزواج key=value مخصصة مفصولة بفاصلة (من غير مسافات، أي حرف خاص لازم يتعمله percent-encode) وClaude Code بيلصقها كـ labels على كل metric datapoint وevent، فوق ما بيبعتها في الـ OTLP resource block. استخدمه عشان تقسم الـ metrics حسب الفريق أو القسم أو cost center في الـ backend بتاعك — department=engineering,team.id=platform,cost_center=eng-123. المفاتيح المخصصة عمرها ما تستبدل الـ attributes المدمجة زي user.id أو session.id. لو عايز تخلي الـ attributes في الـ resource block بس وتمنعها من كل datapoint label (cardinality أقل وتكلفة تخزين أقل)، اضبط OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false.
OTEL_METRICS_INCLUDE_REPOSITORY=true (محتاج Claude Code v2.1.269 أو أحدث، مقفول افتراضيًا) بيوسم كل metric وevent بهوية الريبو بتاع الجلسة — vcs.repository.url.full وvcs.owner.name وvcs.repository.name وvcs.provider.name — مستخرجة مرة واحدة لكل جلسة من الـ origin remote، عشان collector مشترك يقدر ينسب الاستخدام لكل ريبو. أحداث الـ commit بتحمل كمان vcs.ref.head.* لما OTEL_LOG_TOOL_DETAILS يكون متضبط. بيفضل false افتراضيًا، فبيمنع أسماء الريبوهات من الـ telemetry بتاعتك إلا لو فعّلته بنفسك.
CLAUDE_CODE_USE_POWERSHELL_TOOL=1 بيفعّل PowerShell tool على Linux و macOS (محتاج pwsh في الـ PATH). على Windows، لما Git Bash يكون موجود، الأداة بتتطرح بشكل تدريجي كخيار shell إضافي — حط القيمة 1 عشان تفعلها أو 0 عشان توقفها؛ مش مفعّلة افتراضيًا لمزود معين. على Windows مع تفعيل PowerShell tool، الـ PowerShell بيصبح الـ shell الأساسي بدل Bash.
DISABLE_UPDATES=1 بيمنع كل مسارات التحديث، بما فيها claude update اليدوي. ده أشد من DISABLE_AUTOUPDATER (اللي بيمنع التحديثات التلقائية بس) ومخصص للـ enterprise deployments المقفولة اللي الإصدار المثبّت ما لازمش يتغير.
CLAUDE_CODE_SAFE_MODE=1 أو --safe-mode بيبدأ Claude Code من غير أي تخصيصات (CLAUDE.md والـ plugins والـ skills والـ hooks وMCP servers) — مفيد لما تكون بتعمل debug لم سلوك غير متوقع أو إعدادات معطّلة.
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1 أو إعداد disableBundledSkills في settings بيخفّي الـ bundled skills والـ workflows وأوامر الـ slash المدمجة عن الموديل.
CLAUDE_CODE_HIDE_CWD=1 بيخفي مسار الـ working directory من شعار البداية. مفيد لتسجيلات الشاشة أو العروض التقديمية اللي ما تحبش تكشف فيها معلومات المسار.
CLAUDE_CODE_NATIVE_CURSOR=1 بيخلّي Claude Code يعرض مؤشر الـ terminal الأصلي عند خانة الإدخال بدل البلوك المرسوم. المؤشر الأصلي بيحترم إعدادات الـ terminal بتاعت الـ blink والشكل والـ focus — مفيد لو الـ terminal بتاعك متظبط على شكل مؤشر معيّن أو محتاج accessibility.
CLAUDE_AX_SCREEN_READER=1 (أو flag الـ --ax-screen-reader) بيعرض output متوافق مع قارئات الشاشة: نص مسطّح من غير حدود زخرفية ولا animations، للاستخدام مع التقنيات المساعِدة. نفس الوضع متاح كإعداد axScreenReader (من v2.1.181)، بس الـ environment variable والـ CLI flag ليهم الأولوية عليه. وضع قارئ الشاشة بيستخدم الـ renderer الكلاسيكي دايمًا، فتفضيل الـ fullscreen/tui مالوش تأثير وهو شغّال.
CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE تم إزالته في v2.1.160 ودلوقتي عبارة عن no-op.
CLAUDE_CODE_RESUME_PROMPT بيستبدل رسالة الاستكمال اللي Claude بيحقنها لما تستأنف جلسة وقفت في نص الـ turn. الافتراضي هو Continue from where you left off.. سكربتات الإطلاق للوكلاء طويلة المدى ممكن تستخدم ده عشان تحط رسالة بداية أكثر توجيهًا؛ والقيمة الفاضية بترجّع الافتراضي.
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1 بيوجّه استبيان جودة الجلسة (“How is Claude doing?”) لـ OpenTelemetry collector بتاعك لما يكون الـ traffic غير الأساسي المتجه لـ Anthropic مقفول. تقييمات الاستبيان بتتبعت بس كـ OTEL events للـ collector اللي ضابطه — مفيش بيانات استبيان بتتبعت لـ Anthropic. بيشتغل لما CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC أو DISABLE_TELEMETRY أو DO_NOT_TRACK يكونوا متفعلين، ومش بيأثر في غير كده. CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY وسياسة المنظمة لـ product feedback لسه ليهم الأسبقية.
ANTHROPIC_WORKSPACE_ID هو الـ workspace ID اللي بيستخدمه workload identity federation. اضبطه لما قاعدة الفيدريشن بتاعتك متاحة لأكتر من workspace عشان تبادل التوكن يعرف يستهدف أنهي workspace — من غيره، القاعدة العامة مفيش طريقة تختار بيها workspace وعملية التبادل بتفشل. سيبه فاضي لما قاعدة الفيدريشن متاحة لـ workspace واحد بس.
# سجّل OTEL telemetry كاملة وأنت بتعيد إنتاج API bug
OTEL_LOG_RAW_API_BODIES=1 claude --print 'reproduce the failure'
# قسّم metrics حسب الفريق وcost center في OTEL backend بتاعك
OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123" \
claude
# انسب الـ telemetry لكل ريبو في collector مشترك
OTEL_METRICS_INCLUDE_REPOSITORY=true claude
# فعّل PowerShell tool على macOS أو Linux
CLAUDE_CODE_USE_POWERSHELL_TOOL=1 claude
# امنع كل التحديثات على جهاز مقفول
DISABLE_UPDATES=1 claude
# اخفِ الـ working directory في شعار البداية
CLAUDE_CODE_HIDE_CWD=1 claude
# استخدم مؤشر الـ terminal الأصلي عند خانة الإدخال
CLAUDE_CODE_NATIVE_CURSOR=1 claude
# غيّر رسالة الاستكمال لسكربت إطلاق وكيل
CLAUDE_CODE_RESUME_PROMPT="Resume the migration and stop after the next test run." \
claude --resume
# وجّه استبيان جودة الجلسة لـ OTEL collector بتاعك
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1 claude
# Workload identity federation مع قاعدة فيها أكتر من workspace
ANTHROPIC_WORKSPACE_ID=ws_01abcd... claude
ضبط حجم مخرجات الأوامر inline
لما أمر Bash يخلّص، Claude Code بيقرا جزء بس من النتيجة الطويلة ويرجّعه للمحادثة — قدر ما يكفي للشغل، مع سقف عشان الأمر اللي بيطلّع كتير ما يغرقش الـ context. السقف الافتراضي 30,000 حرف. عشان تخلّي Claude يشوف جزء أكبر من النتيجة الصحيحة inline، اضبط bashOutputMaxChars (v2.1.261+) في settings.json، لحد 128,000 حرف. بيضبط السقف inline ونافذة القراءة مع بعض، وله الأولوية على متغيّر البيئة الأقدم BASH_MAX_OUTPUT_LENGTH، اللي Claude Code بيتجاهله ساعتها.
{
"bashOutputMaxChars": 128000
}
Claude Code على الويب ونقل الجلسات
Claude Code على الويب بيشغّل المهام على بنية تحتية سحابية مُدارة من Anthropic على claude.ai/code. الجلسات بتفضل شغّالة حتى لو قفلت المتصفح، وتقدر تتابعها من تطبيق Claude للموبايل.
شغّل جلسة سحابية من الـ terminal بـ claude --cloud "your task" (الـ flag الرسمي؛ claude --remote alias قديم لسه شغّال). Claude بيعمل clone للريبو من GitHub (ادفع الـ commits المحلية الأول)، ينفّذ الـ prompt لوحده، ويقدر يفتح PRs لما يخلّص. استخدم عدة --cloud عشان تشغّل مهام بالتوازي.
أمر /teleport (اختصار /tp) بيجيب جلسة سحابية للـ terminal المحلي — بيجيب الـ branch، يحمّل كل تاريخ المحادثة، ويخلّيك تكمّل محلي. في الاتجاه العكسي: --remote بيبعت الشغل للـ cloud. مع بعض بيعملوا loop سلس بين التنفيذ المحلي والسحابي.
أمر /autofix-pr بيعمل جلسة سحابية بتراقب الـ PR بتاعك. لما CI يفشل أو reviewers يعلّقوا، Claude بيحقق ويدفع fix. حدد النطاق بـ prompt: /autofix-pr only fix lint and type errors. محتاج Claude GitHub App متثبّت على الريبو.
# خطط محلي، نفّذ في الـ cloud
claude --permission-mode plan
# ... خلّص الخطة، commit، push ...
claude --cloud "Execute the migration plan in docs/migration-plan.md"
# ارجع بالجلسة السحابية لما تخلص
/teleport
الجلسات السحابية بتيجي بـ runtimes جاهزة (Node.js, Python, Go, Rust, Java, Ruby, Docker, PostgreSQL)، حتى 16 GB RAM، ومستويات network access قابلة للتعديل. إعدادات الريبو (CLAUDE.md، settings، MCP servers، skills) بتتنقل تلقائي. إعدادات المستخدم (~/.claude/) مبتتنقلش — حط إعدادات المشروع في الريبو.
تخصيص رابط الـ PR
إعداد prUrlTemplate في settings.json بيوجّه شارة الـ PR في الـ footer لرابط code-review مخصص بدل رابط GitHub الافتراضي. ده مفيد للفرق اللي بتستخدم GitLab أو Bitbucket أو أداة مراجعة داخلية:
{
"prUrlTemplate": "https://gitlab.example.com/org/repo/-/merge_requests/{{pr_number}}"
}
إعدادات الـ Worktree
الـ Git worktrees بتخلّيك تعمل checkout لـ branches كتير في نفس الوقت من غير ما تعمل stash أو branch. claude --worktree <name> بيعمل worktree جديد مرتبط بـ <name>/. إعداد worktree.baseRef (جديد في v2.1.133) بيتحكم في مين اللي هي branched من عنده. حط baseRef لـ fresh (origin/<default>، الافتراضي — بيتفرّع من tree نضيف مطابق للـ remote) أو head (الـ HEAD المحلي بتاعك):
{
"worktree": {
"baseRef": "head"
}
}
حط head عشان تحافظ على commits lokal اللي لسه ما اتpushتش في worktrees جديدة. ده بيأثر على --worktree وEnterWorktree وagent-isolation worktrees.
استخدام الكمبيوتر (Computer Use) — معاينة بحثية
استخدام الكمبيوتر بيخلّي Claude يفتح تطبيقات ويتحكم في شاشتك ويتفاعل مع واجهات المستخدم على macOS — يبني تطبيق Swift ويشغّله ويضغط على كل زر ويعمل screenshot للنتيجة، كل ده في نفس المحادثة. بيعالج المهام اللي محتاجة GUI: التحقق من بناء تطبيقات macOS الأصلية، اختبار UI شامل من غير test harness، تصحيح مشاكل layout المرئية، والتحكم في أدوات GUI-only زي تطبيقات التصميم أو iOS Simulator.
Claude بيجرب أدوات أدق الأول: MCP servers أو Bash أو تكامل Chrome. استخدام الكمبيوتر هو الخيار الاحتياطي للحاجات اللي مفيش أداة تانية تقدر توصلها — التطبيقات الأصلية والمحاكيات والأدوات اللي مفيهاش API.
فعّله بتشغيل /mcp في جلسة، ودوّر على server الـ computer-use، واختار Enable. الإعداد بيتحفظ لكل مشروع. أول مرة تستخدمه، macOS هيطلب صلاحيات Accessibility وScreen Recording. لما Claude عايز يتحكم في تطبيق معين في جلسة، هيظهر prompt عشان توافق — الموافقات بتفضل للجلسة الحالية بس. التطبيقات اللي ليها وصول واسع (terminals وFinder وSystem Settings) بتعرض تحذيرات إضافية.
وأنت Claude شغّال، باقي التطبيقات بتتخفى عشان يتفاعل بس مع التطبيقات المعتمدة. نافذة الـ terminal بتفضل ظاهرة ومستبعدة من الـ screenshots. اضغط Esc في أي مكان أو Ctrl+C عشان توقف فورًا. جلسة واحدة بس تقدر تتحكم في الجهاز في نفس الوقت.
استخدام الكمبيوتر محتاج اشتراك Pro أو Max، macOS، Claude Code v2.1.85+، وجلسة تفاعلية (مش متاح مع -p). مش متاح على Team أو Enterprise أو Bedrock أو Vertex AI أو Foundry.
اختصارات الإيموجي (Emoji Shortcodes)
Claude Code بيحوّل اختصارات الإيموجي لإيموجي وأنت بتكتب في حقل الـ prompt — ميزة إدخال خفيفة اتضافت في v2.1.217. اكتب اختصار كامل زي :heart: وClaude Code بيبدّله بـ ❤️ لحظة ما تكتب الـ : اللي في الآخر. اكتب : ومعاها حرفين على الأقل من اسم الإيموجي، زي :hea، عشان تفتح قائمة اقتراحات، وبعدين اضغط Tab أو Enter عشان تدخّل الإيموجي المحدَّد. الاختصار لازم يبدأ الإدخال أو ييجي بعد مسافة، فالـ : اللي جوه كلمة أو URL مبيفتحش اقتراحات.
الميزة شغّالة افتراضيًا. عشان تقفلها، عيّن emojiCompletionEnabled لـ false في settings.json — ده بيوقف قائمة الاقتراحات والاستبدال المباشر مع بعض:
{
"emojiCompletionEnabled": false
}
ميزات متقدمة إضافية
أدوات Claude Code المتقدمة أكتر من كده. المهام في الخلفية بتخلّي الشغل الطويل يكمّل وأنت بتكمّل محادثتك. المهام المجدولة بتدعم /loop للفحوصات المتكررة داخل الجلسة و/schedule للمهام المجدولة في الـ cloud. أدوات الجلسة زي /resume و/rename و/teleport بتسهّل التنقل بين الـ CLI المحلي، المتصفح، والـ desktop app.
كمان فيه ميزات منصة للاستخدام اليومي: الإملاء الصوتي بـ /voice، تكامل Chrome بـ --chrome، التحكم عن بعد بـ /remote-control، دروس /powerup التفاعلية لاكتشاف الميزات، قوائم المهام، وسير عمل git worktree بـ claude --worktree. كل دول بيشتركوا في نفس نظام الصلاحيات، فالاستخدام المتقدم في الغالب هو إنك تدمج الوضع المناسب مع السطح المناسب.