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. في جلسة تفاعلية، ضغط Enter في الـ /effort slider بيحفظ المستوى ده كـ default بتاعك وبيطبّقه في الجلسات الجاية، بينما s بيطبّقه على الجلسة الحالية بس (محتاج Claude Code v2.1.257 أو أحدث). max بيتطبّق على الجلسة الحالية بس إلا لو CLAUDE_CODE_EFFORT_LEVEL هو اللي ضبطه، وأمر -p بيطبّق المستوى على الجلسة الحالية بس. ضبطه للجلسة كلها بـ export CLAUDE_CODE_EFFORT_LEVEL=high. لو عايز تفكير أعمق في دور واحد، اكتب كلمة “ultrathink” في أي مكان في الـ prompt — Claude Code بيتعرّف على الكلمة دي ويضيف in-context instruction من غير ما يغيّر إعداد الـ effort بتاع الجلسة، ومن v2.1.311 الكلمة لو اتكتبت في الـ terminal تقدر كمان ترفع الدور ده لـ xhigh effort (وبتظهر بألوان قوس قزح لما تقدر). الكلمات التانية زي “think” و”think hard” و”think more” بتعدّي كنص عادي ومش بتتعرّف كـ keywords. كلمة ultracode بتفعّل dynamic workflow run — الكلمة دي اتسمّت من workflow لـ ultracode في v2.1.160. كلمة workflow نفسها ما بقتش بتفعّل run، لكن لو طلبت workflow بصياغتك الطبيعية، Claude لسه يقدر ينفّذه. Dynamic workflows بتتفعّل بـ /effort ultracode — ده slash command (صيغة الـ CLI هي claude --effort ultracode، مش --ultracode flag لوحده). /effort ultracode بيفعّل الـ orchestration التلقائي للـ workflows على مستوى الـ effort اللي الجلسة شغّالة بيه، ومابيرفعش مستوى الـ effort لوحده؛ أما تشغيل claude --effort ultracode فبيفعّله وكمان بيحط الـ effort على xhigh على الموديلات اللي بتدعمه (v2.1.203+). مفاتيح الـ /effort slider نفسها بقت قابلة لإعادة التعيين في keybindings.json من v2.1.284: الأكشنز effortSlider:decreaseEffort وeffortSlider:increaseEffort بتتنقّل بين المستويات (مفاتيح الأسهم افتراضيًا)، وeffortSlider:toggleUltracode بيفعّل/يوقّف تشغيلة الـ ultracode (مفتاح Tab افتراضيًا).
عشان تحط سقف لمقدار الـ 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 في كل الموديلات ما عدا Opus 5.5 و Sonnet 5.5 و Haiku 5.5 و Fable models (وكمان مش بيقدر توقّف التفكير على Opus 5.5 و Sonnet 5.5 و Haiku 5.5 و Fable models). بالنسبة للقيم الموجبة، الـ fixed thinking budget mode ما بينطبّقش غير على الموديلات الأقدم اللي بتستخدمه: على Fable models و Sonnet 5 واللي بعده و Haiku 5.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" بيتوسّع للموديل الافتراضي حسب نوع حسابك. الموديل الافتراضي ده حاليًا هو Opus 5.5 (claude-opus-5-5) على حسابات Pro وMax وTeam وEnterprise وAnthropic API وعلى منصات AWS وBedrock وGoogle Cloud، بينما Microsoft Foundry افتراضيه Sonnet 4.5. الـ alias opus بيتحوّل لأحدث نسخة Opus على Anthropic API وعلى Claude Platform on AWS — حاليًا Opus 5.5 — بس على بعض الـ providers بيحوّل لموديل أقدم، يعني على Microsoft Foundry الـ opus بيتحوّل لـ Opus 4.6. ثبّت model ID كامل، أو اضبط ANTHROPIC_DEFAULT_OPUS_MODEL، في أي مكان محتاج فيه نسخة محددة.
Haiku 5.5، أحدث موديل صغير، متاح باسم claude-haiku-5-5 — بدّل ليه بـ /model claude-haiku-5-5 جوه الجلسة أو شغّل claude --model claude-haiku-5-5 (محتاج Claude Code v2.1.293 أو أحدث). على الـ Anthropic API بيشتغل بنافذة context بحجم مليون توكن (1M) على كل الخطط، من غير لاحقة [1m] عشان تختارها؛ والطلب اللي الـ prompt بتاعه أطول من 100K token بيكلّف أكتر لكل توكن.
الوضع التلقائي والتحكم في الصلاحيات
الوضع التلقائي (Auto Mode) هو وضع صلاحيات بيستخدم classifier أمان في الخلفية عشان يقرر إذا كانت الأدوات آمنة تشتغل من غير ما يسألك. من v2.1.283، الوضع التلقائي هو وضع الصلاحيات الافتراضي في جلسات الـ terminal التفاعلية و VS Code. مصمّم للشغل اللي محتاج autonomy أعلى مع الحفاظ على حواجز الأمان.
بتستخدمه زي أي وضع صلاحيات تاني: اختار auto في إعدادات الصلاحيات أو اتنقل ليه بـ Shift+Tab. المؤسسات تقدر تضبط إيه اللي Auto Mode بيعتبره بنية تحتية موثوقة من خلال block الـ autoMode في الإعدادات.
Auto Mode بشكل افتراضي بيكون حذر مع الحاجات اللي شكلها exfiltration بيانات، تنفيذ shell خطر، أو تغييرات تأثر على الـ production. لما الـ permission check يعلق، الـ spinner بيتحول للأحمر — ده بيخلّي واضح إن فيه check في_progress مش أداة شغّالة. لو فريقك عنده repos موثوقة، domains داخلية، أو خدمات معينة عايز Auto Mode يتعامل معاها عادي، عرّفها في autoMode.environment.
قبل ما Auto Mode يسمح بقراءة ملف خارج مجلدات العمل بتاعتك، بيسألك الأول. من v2.1.284، الـ prompt ده بيقدّم أربع إجابات — “Yes, and keep allowing any reads outside the working directories”، “No, and block reads outside the working directories from now on”، “No, and ask again next time”، و**“Yes, but ask again next time”** — عشان تسمح بالقراءة دي المرة دي من غير ما توقّف السؤال لكل قراءة لاحقة خارج مجلدات العمل.
لما تخصّص 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 بإيدك.
أمر /auto-mode-setup هو النسخة الموجّهة من نفس الشغلانة. شغّله وClaude Code يعمل مسودّة entries لـ autoMode.environment — وأحيانًا entries للقواعد كمان — من مشروعك ومن جلساتك الأخيرة فيه، وبعدين يكتب المسودّة في ~/.claude/settings.json لو قبلتها:
/auto-mode-setup
الأمر محتاج v2.1.228 أو أحدث (v2.1.233 على native Windows) على خطط Pro وMax وTeam، وv2.1.283 أو أحدث على خطط Enterprise أو مع Claude Console API key. ابتداءً من v2.1.304 بيشتغل كمان على Bedrock وVertex وFoundry وClaude apps gateway والجلسات اللي telemetry متوقّف فيها.
أوضاع الصلاحيات بتتراوح من الأقل للأكتر حرية. 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 برضو متاح بشكل افتراضي، ومفيش خطوة تفعيل من المسؤول — المسؤولين يقدروا يقفلوه بس بـ permissions.disableAutoMode: "disable" في الـ managed settings). خيار التفعيل CLAUDE_CODE_ENABLE_AUTO_MODE=1 اللي كان كمان بيتحكم في المنصات التلاتة غير Anthropic في v2.1.158–v2.1.206 اتشال في v2.1.207 — المتغير لسه مقبول للـ backwards compatibility بس مفيش تأثير له. على المنصات التلاتة دي، بس Claude Sonnet 5 أو أحدث و Opus 4.7 أو أحدث و Haiku 5.5 وموديلات Fable مدعومة. الموديلات الأقدم — بما فيها Sonnet 4.5 و Opus 4.5 و Haiku 4.5 وموديلات claude-3 — مش مدعومة على أي provider. permissions.disableAutoMode: "disable" كمان بيشيل الوضع من دورة Shift+Tab. أي جلسة بتبدأ في default (Manual) بدل الوضع التلقائي لما يكون فيه ملف settings بيحطّ permissions.disableAutoMode على "disable"، أو الموديل النشط مش من الموديلات اللي الوضع التلقائي بيدعمها على المنصة دي، أو الجلسة مش جلسة terminal تفاعلية ولا جلسة VS Code extension — claude -p و Agent SDK runs بتبدأ في default بشكل افتراضي. وكمان، أي جلسة عند مؤسسة عليها إعداد HIPAA بتبدأ في default من Claude Code v2.1.285 أو أحدث، والوضع التلقائي يفضل متاح للتبديل إليه. ولما الوضع التلقائي يبقى مش متاح للجلسة أصلاً — وده بيحصل كمان لما Anthropic يكون قافله server-side مؤقتًا — الجلسة بتبدأ في Manual بدلًا من كده. غير كده، من v2.1.283، الجلسات التفاعلية على Bedrock و Google Cloud’s Agent Platform و Microsoft Foundry و جلسات Claude apps gateway المسجّل دخولها بتبدأ في الوضع التلقائي بشكل افتراضي.
من 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، المتغير ده بيتقرا من Claude Code v2.1.281 أو أحدث، و 1 بيحوّل server review للجلسة اللي لسه مش مفعّل عندها، و 0 بيخلي Claude Code يستخدم طلبات الـ classifier بتاعته. وهو مؤقت — ممكن يتشال في إصدار جاي، فماتبناش managed policy حواليه.
CLAUDE_CODE_AUTO_MODE_MODEL بيحدّد الموديل اللي بيتّبع في طلبات الـ classifier اللي Claude Code بيبعتها في الـ auto mode — استخدم model ID كامل زي claude-sonnet-4-6. المتغير ده مش بيغيّر موديل الـ auto mode اللي بيشتغل على السيرفر، والمرجع الرسمي بيوضّح الحالات التانية اللي Claude Code بيتجاهل فيها. بيتطلّب Claude Code v2.1.302 أو أحدث.
في إعدادات جديدة مهمين: إعداد 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' هو الساري.
الـ Claude apps gateway المستضاف ذاتيًا — الخدمة اللي بتقف بين عملاء المطوّرين ومزوّد الموديل وبتفرض الإعدادات المُدارة حسب مجموعة مزوّد الهوية (IdP) — بيوصف القواعد الخاصة بكل مجموعة في مصفوفة managed.policies[]. من v2.1.296 كل إدخال سياسة بيقبل كتل cli وcode وdesktop: كتلة code بتحمل نفس مستند الـ managed settings بتاع cli، ومفتاح desktop هو اللي بيخلّي Claude Desktop يدخل في وضع الـ gateway. وإعدادات code بتوصل لتابيب Code في Claude Desktop بس لما السياسة كمان يكون فيها مفتاح desktop وأجهزة المستخدم مظبوطة على كده؛ ومبتوصلش لـ Cowork ولا Chat.
policy_mode: layered بيغيّر طريقة ترتيب الـ gateway للقواعد الخاصة بكل مجموعة. بشكل افتراضي، المستخدم اللي بيطابق أكتر من سياسة role بياخد الأولى بس؛ اضبط policy_mode: layered جنب policies عشان كل سياسة بتطابق المستخدم تتطبّق هي كمان — لحد أول سياسة match: {} اللي بتمثّل الـ catch-all، فسياسة role متحطّة بعد الـ catch-all مش هتتطبّق أبدًا. الإعداد ده محتاج Claude Code v2.1.316 أو أحدث على سيرفر الـ gateway: الـ gateway اللي على إصدار أقدم بيرفض يشتغل لما يلاقي المفتاح، فحدّث كل الـ replicas قبل ما تضيفه وشيله قبل ما ترجّع على إصدار أقدم.
كل upstream ليه base_url بتاعه. تقدر توجّه base_url بتاع upstream من نوع provider: anthropic لبروكسي بتشغّله انت بدل الـ Anthropic API.
من ناحية المطوّر، allowedProviders قائمة مُدارة بالمزوّدين اللي الجهاز مسموح له يوصل لـ Claude عن طريقهم. عشان تمنع المطوّرين من يتجاوزوا الـ gateway بمتغيّر مزوّد سحابي أو بـ ANTHROPIC_BASE_URL من عندهم، ضيف "allowedProviders": ["gateway"] لملف managed-settings.json على جانب العميل في كل جهاز من أجهزة المطوّرين — مش لإعدادات سيرفر الـ gateway نفسه. Claude Code بعدها يرفض كل جلسة على الجهاز اللي مش متظبّط على Cloud gateway، وبيسمح بـ gateway بس لو هو الـ gateway اللي forceLoginGatewayUrl بيسمّيه، أو واحد الـ URL بتاعه الـ env block في الملف بيحطّه كـ ANTHROPIC_BASE_URL. وclaude gateway بيرفض يشتغل على جهاز فيه القائمة دي متظبّطة، فخلي المفتاح بعيد عن الـ gateway host.
ضوابط الوصول للموديلات
طيب، خلينا نتكلم عن الإعدادين اللي اتزادوا في v2.1.283 واللي بيدّوا الـ administrators تحكّم دقيق في أي موديلات Claude Code يقدر يستخدم، فوق الـ availableModels الـ allowlist وenforceAvailableModels (v2.1.175) الموجودين أصلًا.
availableModelsMatch بيتحكم في إزاي إدخال في availableModels بيتطابق مع الموديل الفعلي. مع قيمة "exact"، الإدخال بيسمح بس بإصدار الموديل المسمّى — الإصدارات الجديدة من الموديلات بتفضل ممنوعة لحد ما تتضاف لـ availableModels. ده أصرم وضع تطابق: بيمنع إن الـ availableModels allowlist يتوسّع من غير ما تحس بـ alias موديل اتحدّث تلقائيًا.
deniedModels بيمنع موديلات معيّنة حتى لو availableModels بيسمح بيها. استخدمه للحظر الصريح زي ما تقاعد موديل أو تقصر الوصول على إصدار أغلى. وenforceAvailableModels (v2.1.175) بيوسّع قائمة availableModels لتشمل الـ Default model كمان — من غيره الـ Default model بيفضل غير متأثّر، فالـ admin يقدر يمنع موديل تجريبي واحد من غير ما يقفل الموديل اللي بيتستخدم يوميًا.
{
"availableModels": ["claude-sonnet-4-5", "claude-haiku-4-5"],
"availableModelsMatch": "exact",
"deniedModels": ["claude-opus-4-1"]
}
قيمة availableModelsMatch اللي مش string بتتعامل كـ exact لحد ما الإعداد يتصلّح. إدخال مش string في deniedModels بيتشال وباقي الليستة بتتطبّق؛ قيمة غير صحيحة خالص بتتشال مع تحذير ومش بتمنع أي موديلات لحد ما تتصلّح.
وضع 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:
CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS بحدّد أقل فترة بالألف من الثانية بين الفحوصات على usage limit هل اترفع فعلاً، والطلب واقف مستني الـ limit يعمل reset ومعاه CLAUDE_CODE_RETRY_WATCHDOG مفعّل. ولما الفحص يكتشف إن الـ limit اترفع، الطلب بينطلق على طول بدل ما يستنى باقي الفترة. ادّيله رقم صحيح بالظبط، من 60000 (دقيقة) لـ 10800000 (تلات ساعات).
# 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"
}
}
sandbox.allowNestedUserNamespaces (v2.1.305+) بيسمح للأمر اللي شغال جوه الـ sandbox ينشئ user namespaces متداخلة على Linux و WSL2. اضبطه على true في ~/.claude/settings.json — مش في .claude/settings.json بتاع المشروع، لأن المستودع نفسه مش بيقدر يشغّله — عشان تحافظ على sandbox بتاع Chromium أو Electron نفسه، أو عشان تشغّل bubblewrap أو unshare متداخل:
{
"sandbox": {
"allowNestedUserNamespaces": true
}
}
ولما يكون مفعّل، ما تعتمدش على المسارات المحمية: كود جوه أمر في الـ sandbox ممكن يخلص شغال بره الـ sandbox.
للمؤسسات، الإعدادات المُدارة (managed settings) بتتحكم في إعدادات المستخدمين من خلال أدوات إدارة النظام: plist على macOS، الـ Registry على Windows، ملفات config مُدارة، ودروب إنز managed-settings.d/ بتتدمج أبجديًا. ده منفصل عن ملفات الذاكرة المُدارة زي ملف CLAUDE.md على مستوى المؤسسة.
# Test headless with sandboxing (sandbox.enabled: true in a settings file)
claude -p "analyze the security of this codebase" \
--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 مش بتتشالش في العملية دي إلا لو بعتّ الجلسة دي للـ background — العملية بتسيب الـ worktree مكانه لو كان لسه جلسة --worktree ما بعتّهاش للـ background، لكن أول ما تبعتها للـ background الـ worktree بتاعها بيبقى background-session worktree والعملية دي تقدر تشيله. اضبط مدة الاحتفاظ كده:
{
"cleanupPeriodDays": 14
}
عشان تمنع كتابة الـ transcripts خالص في الوضع غير التفاعلي، استخدم --no-session-persistence.
مسح بيانات المشروع (Project Purge)
لما cleanupPeriodDays مش كفاية وعايز تمسح كل بيانات Claude Code لمشروع معين فورًا، استخدم claude purge. الأمر ده اتسمّى من claude project purge في v2.1.288 — الاسم القديم لسه شغال بس بيطبع notice. الأمر بيمسح الـ transcripts، قوائم المهام، سجلات التشخيص، تاريخ تعديلات الملفات، تاريخ الـ prompts، وسجل المشروع نفسه:
# معاينة اللي هيتمسح من غير ما تمسح فعلًا
claude purge --dry-run
# مسح بيانات المشروع الحالي
claude purge
# تخطي سؤال التأكيد
claude purge --yes
# اختيار تفاعلي للعناصر اللي عايز تمسحها
claude purge --interactive
# مسح بيانات كل المشاريع مرة واحدة
claude purge --all
الـ flags تقدر تجمعهم مع بعض: claude 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 بتاعتك إلا لو فعّلته بنفسك.
OTEL_LOG_TOOL_CONTENT=1 بيضيف tool.output span event على claude_code.tool بيحمل محتوى الملفات وخرج الـ Bash ونتايج MCP tools وWebFetch وWebSearch — مقتطع عند 60 KB افتراضيًا، قابل للضبط عبر CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH (واللي نفسه محتاج Claude Code v2.1.214 أو أحدث). نتايج MCP tools وWebFetch وWebSearch تحديدًا محتاجة Claude Code v2.1.283 أو أحدث. الـ span attributes بتاخد محتوى الـ tool تحت gates خاصة بيها، ولازم يكون الـ tracing متفعل.
الـ OpenTelemetry event اللي اسمه tool_decision بيسجّل إزاي كل فحص صلاحية اتقرّر. تلات attributes بتخلّي قرارات الـ auto mode مقروءة في الـ traces بتاعتك: classifier_verdict بيحمل حكم الـ auto mode classifier على الـ call، أو السبب اللي Claude Code رفض بيه الـ call لما مفيش حكم — allow لما الـ classifier وافق على الـ call، و block لما منعه؛ و classifier_category بيسمّي القاعدة المدمجة اللي الـ classifier سماها لما منع الـ call، بحروف صغيرة و underscores، زي data_exfiltration لقاعدة Data Exfiltration، ومحتاج OTEL_LOG_TOOL_DETAILS=1؛ و permission_mode بيسجّل الـ permission mode اللي كان شغال لما فحص صلاحية الـ call بدأ — default أو plan أو acceptEdits أو bypassPermissions أو dontAsk أو auto، والـ manual mode بيظهر باسم default، و call بتاع subagent بيسجّل permission mode الـ subagent نفسه مش بتاع الجلسة. بيتطلّب Claude Code v2.1.301 أو أحدث.
CLAUDE_CODE_USE_POWERSHELL_TOOL=1 بيفعّل PowerShell tool على Linux و macOS و WSL (محتاج pwsh في الـ PATH). على Windows من غير Git Bash، الأداة بتتفعّل تلقائيًا — حط 0 عشان توقفها. ومع Git Bash مثبّت، الأداة مفعّلة افتراضيًا لحسابات claude.ai و Console؛ حط 1 عشان تفعّلها في جلسات Amazon Bedrock و Google Cloud’s Agent Platform و Microsoft Foundry، أو 0 عشان توقفها. ولما الأداة تكون مفعّلة على Windows، Claude بيشغّل أوامر PowerShell مباشرة بدل ما يمرّ على Git 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_OVERLOADED_RETRY_MAX_DELAY_MS (من v2.1.296) بيرفع السقف الأقصى للـ exponential backoff بين المحاولات التلقائية لإعادة طلب رفضته الـ API بخطأ overloaded (529). بدل الافتراضي 32000، اكتب ميلي ثانية صحيحة من 32000 لـ 64000 عشان المحاولات المتأخرة تفضل تتباعد لما الـ API تكون على طاقتها القصوى. ورفيقه CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS (من v2.1.292) بيضبط التأخير الابتدائي بدل الافتراضي 500 (النطاق من 500 لـ 32000). الاتنين بيتجاهلوا لما CLAUDE_CODE_RETRY_WATCHDOG=1 أو الطلب اتبعت في الوضع السريع، وأي قيمة خارج النطاق المسموح بتتعامل كإنها مش متظبّطة.
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 واحد بس.
CLAUDE_CODE_GATEWAY_HINT_HEADERS=1 بيفعّل مجموعة من x-claude-code-* gateway hint headers عشان الـ LLM gateways تقدر تربط الـ requests اللي بتخدم prompt واحد للمستخدم وتطّلع على سياق توجيه الطلبات. التفعيل بيبعت x-claude-code-prompt-id، ومن v2.1.273 كمان الخمس headers الإضافيين x-claude-code-request-class، x-claude-code-agent-type، x-claude-code-prev-tool-durations، x-claude-code-compaction، وx-claude-code-context-compacted. افتراضيًا الـ headers بيعتمدوا على مكان الـ request: في اتصال مباشر بـ Anthropic API بتبعت افتراضيًا، وفي custom base URL بتبقى مقفولة افتراضيًا، وفي أي backend تاني — Amazon Bedrock وGoogle’s Cloud Agent Platform وMicrosoft Foundry وClaude Platform on AWS — بتبعت بس لما CLAUDE_CODE_GATEWAY_HINT_HEADERS=1 يكون مضبوط. ضبط المتغير على 0 بيوقّف الـ headers على كل الاتصالات. فعّل الـ opt-in لما الـ gateway بتاعك يحتاج يربط الـ requests الداخلية الكتير اللي بتطلع من prompt واحد للمستخدم أو يعرض routing metadata جنب الـ prompt ID.
CLAUDE_CODE_ATTRIBUTION_HEADER=0 بيشيل الـ attribution block، واللي بيحمل نسخة الـ client وبصمة الـ prompt، من أول الـ system prompt. الـ caching على اتصال مباشر بـ Anthropic API مش متأثر بأي من اتنين. في بعض إعدادات الاتصال المباشر، Claude Code بيسيب الـ block على طلبات الـ auto mode classifier حتى لو انت حطّيت 0، فمفيش داعي تفتكره مفتاح “من غير attribution خالص” — قسم System prompt attribution block في التوثيق بيوضّح أنهي اتصالات و credentials الـ block بيغطّيها.
CLAUDE_CODE_GZIP_REQUEST_BODIES=0 بيوقّف ضغط gzip للـ Claude API والـ telemetry و bodies نشر الـ artifacts اللي بتتبعت لـ api.anthropic.com. افتراضيًا Claude Code بيضغط الـ request bodies الكبيرة على الاتصالات المباشرة، وبيتخطى الضغط لما تبعته عن طريق proxy، أو تعمل client certificate، أو تضبط NODE_EXTRA_CA_CERTS — وحطّه على 0 لما يكون عندك TLS-inspecting proxy Claude Code مش قادر يكتشفه وبيتعامل مع الـ requests المضغوطة بشكل غلط. جديد في Claude Code v2.1.300، حيث الـ requests الكبيرة بتتقدّم مضغوطة حتى والـ telemetry متوقّف.
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT (اتضاف في v2.1.312) بيختار بين الـ system prompt الكامل بتاع Claude Code و واحد أقصر بأوصاف أدوات مختصرة. لما يكون مش مضبوط، Haiku 4.5 و Sonnet 5 و Opus 4.7 وأقدم الموديلات في نفس العائلات بيستخدموا الـ prompt الكامل افتراضيًا، والموديلات الأحدث بتستخدم الأقصر. حطّه على 1 عشان تستخدم الـ prompt القصير على أي موديل، أو على 0 (وكمان false أو no أو off) عشان تستخدم الـ prompt الكامل على أي موديل، حتى لو experiment أو server configuration كان هيختار الأقصر. الاتنين بيخلّوا الـ tool set الكامل والـ hooks والـ MCP servers والـ CLAUDE.md discovery زي ما هما.
CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1 بيوقّف تبديل الموديل التلقائي لما safety classifier يعلّم على request — نفس السلوك اللي setting الـ switchModelsOnFlag بيتحكم فيه. اتضاف في v2.1.312.
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST بيتظبط بواسطة الـ host platforms اللي بتضمّن Claude Code وبتتحكم في توجيه الـ model provider نيابةً عنه. لما يكون متظبط، Claude Code بيتجاهل متغيرات اختيار الـ provider والـ endpoint والمصادقة زي CLAUDE_CODE_USE_BEDROCK و ANTHROPIC_BASE_URL و ANTHROPIC_API_KEY في ملفات الإعدادات، فإعدادات الـ user ماتقدرش تغيّر توجيه الـ host. وبيتجاهل كمان مفاتيح اختيار الموديل زي model و fallbackModel و modelOverrides في الـ managed settings — أي مصدر بيوصّلها — فإعدادات موديل الـ host ليها الأولوية على أي model pin قديم في الـ managed settings.
# شيل الـ attribution block من أول الـ system prompt
CLAUDE_CODE_ATTRIBUTION_HEADER=0 claude
# سجّل 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
# سجّل ناتج الـ tools (محتوى الملفات، Bash، نتايج MCP/WebFetch/WebSearch) في OTEL spans
OTEL_LOG_TOOL_CONTENT=1 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
خلف الـ gateway، Claude Code بيعيد محاولة الطلب اللي الـ upstream رافضه. لما الـ upstream يرفض output_config.effort أو قيمة anthropic-beta بتاعته، Claude Code بيعيد المحاولة من غير ما يضيف أي من الاتنين للطلبات بتاع الموديل ده لحد ما Claude Code يقفل. الـ gateway بتاعك مش محتاج تغيير لو بيبعت الـ 400 بتاع الـ upstream زي ما هو وكمان الرسالة: الرسالة بتبدأ بـ Unexpected value(s) وبتعدّد effort-2025-11-24 في هيدر anthropic-beta. ده محتاج Claude Code v2.1.310 أو أحدث. الـ developers اللي ANTHROPIC_BETAS بتاعهم فيه القيمة دي هيفضلوا يبعتوها وياخدوا الـ 400، فخلّيهم يشيلوها من القائمة.
نفس إعادة المحاولة بتنطبق على الـ mid-conversation system messages. لما الـ upstream يرفض entry نوعها role: "system" جوه messages، Claude Code بيعيد المحاولة مرة واحدة من غير الـ mid-conversation system messages دي وبينقل نصها في user messages بدلًا منها. الطلبات الجاية في المحادثة بتفضل على نفس الشكل ده لحد ما الـ developer يعمل /clear أو المحادثة تعمل compaction.
ضبط حجم مخرجات الأوامر 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، يحمّل كل تاريخ المحادثة، ويخلّيك تكمّل محلي. في الاتجاه العكسي مفيش رUTE من الـ CLI: claude --cloud (و--remote alias قديم لسه شغّال) بيبدأ جلسة سحابية جديدة من وصف المهمة، ومفيش طريقة تبعت بيها جلسة terminal موجودة للـ cloud. تطبيق الـ Desktop هو اللي يقدر يبعت جلسة محلية للـ cloud من تبويب Code بتاعه، فالرحلة كاملة بتشتغل بس لما تكرر إنشاء المهمة في الـ cloud بنفسك.
أمر /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/) مبتتنقلش — حط إعدادات المشروع في الريبو.
صورة الكلاود كمان بتيجي ومعاها متصفّح headless: Chrome for Testing في /usr/bin/google-chrome، ومتغيّر البيئة CHROME_PATH مظبوط على المسار ده. مش محتاج تنزّل متصفّح — بس وجّه أدواتك للمتصفّح المثبّت. الأدوات اللي بتحترم CHROME_PATH (زي Lighthouse وباقي الأدوات المبنية على chrome-launcher) بتلاقيه لوحدها؛ أما Playwright فمحتاج تمرّره صراحةً كـ launch option (chromium.launch({ executablePath: process.env.CHROME_PATH }))، و Puppeteer بيقرا PUPPETEER_EXECUTABLE_PATH فاضبطه على نفس المسار. وبعد ما توجّه الأداة عليه، طلب زي “صلّح الـ e2e tests اللي بتفشل” أو “صوّر screenshot للصفحة الرئيسية” بيشتغل في الجلسة السحابية من غير ما تثبّت متصفّح الأول.
لو الـ custom roles بتتحكم في صلاحياتك، هتحتاج role فيها cloud sessions permission عشان تبدأ جلسات على بنية Anthropic من الـ browser أو الـ apps أو الـ terminal. اطلب من Owner يضيفها في واحدة من الـ roles بتاعتك من Organization settings > Roles.
الـ Remote Control ليها permission خاصة بيها كمان. الـ roles بتاعتك لازم تدّيك الاتنين — cloud sessions permission و Claude Code remote control permission. لو واحدة فيهم ناقصة، لما تبدأ Remote Control هتلاقي رسالة Remote Control is disabled by your organization's policy. اطلب من Owner يراجع الـ roles ويضيف الناقص من Organization settings > Roles.
فتح تطبيق Claude للسطح المكتب
claude --desktop (من v2.1.285) بيفتح تطبيق Claude للـ desktop على المجلد الحالي وبيخرج من غير ما يبدأ جلسة في الـ terminal — التطبيق بيبدأ جلسته بنفسه على الفولدر ده، فمش بتختار المشروع تاني. ضيف --continue عشان تفتح آخر جلسة محلية ليك في التطبيق، أو --resume <session-id> عشان تفتح جلسة سابقة محددة؛ هنا --resume بياخد id للجلسة بس، مش اسم ولا مسار transcript. مش بياخد prompt ولا أي flags تانية غير --verbose وflags الـ --debug، لأن التطبيق هو اللي بيشغّل الجلسة. متاح على macOS وWindows x64 لما تكون مسجّل دخول باشتراك Claude:
# افتح تطبيق الـ desktop على المشروع الحالي
claude --desktop
# افتح تطبيق الـ desktop وكمّل آخر جلسة محلية
claude --desktop --continue
# افتح تطبيق الـ desktop على جلسة سابقة محددة
claude --desktop --resume <session-id>
لو claude --cloud بيبعت الشغل لجلسة سحابية، فـ --desktop بينقل جلسة محلية من الـ terminal لواجهة الـ desktop الرسومية من غير ما تضيع المجلد ولا الجلسة اللي بتوجّهه ليها.
تخصيص رابط الـ PR
إعداد prUrlTemplate في settings.json بيوجّه شارة الـ PR في الـ footer لرابط code-review مخصص بدل رابط GitHub الافتراضي. ده مفيد للفرق اللي بتستخدم GitLab أو Bitbucket أو أداة مراجعة داخلية:
{
"prUrlTemplate": "https://gitlab.example.com/org/repo/-/merge_requests/{number}"
}
إسناد الـ Commit والـ PR
افتراضيًا Claude Code بيضيف سطر إسناد (attribution trailer) للـ commits اللي بيعملها وسطر إسناد لأوصاف الـ pull requests اللي بيفتحها. إعداد attribution في settings.json بيتحكم في الاتنين — عيّنه لـ false عشان تخفي كل إسناد الـ commit والـ PR:
{
"attribution": false
}
لتحكم أدق، استخدم صيغة الكائن (object) بدل الـ boolean المجرّد. attribution.commit بيغيّر أو يخفي السطر اللي بيتضاف للـ commits، وattribution.pr بيغيّر أو يخفي سطر الإسناد في أوصاف الـ pull requests، وattribution.sessionUrl بيشيل رابط جلسة claude.ai من commits الـ cloud والـ Remote Control:
{
"attribution": {
"sessionUrl": false
}
}
attribution بيحل محل إعداد includeCoAuthoredBy القديم (deprecated). ملاحظة بخصوص الإصدارات: إصدارات الـ CLI الأقدم بتتخطّى ملف settings كامل لو فيه "attribution": false، فلو الـ settings.json بتاعك متشارَك بين أجهزة بتشغّل إصدارات مختلفة من Claude Code، استخدم صيغة الكائن بدل الـ boolean المجرّد.
إعدادات الـ Worktree
الـ Git worktrees بتخلّيك تعمل checkout لـ branches كتير في نفس الوقت من غير ما تعمل stash أو branch. claude --worktree <name> بيعمل worktree جديد في <repo>/.claude/worktrees/<name>/، على branch جديد اسمه 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. كل دول بيشتركوا في نفس نظام الصلاحيات، فالاستخدام المتقدم في الغالب هو إنك تدمج الوضع المناسب مع السطح المناسب.
إضافة VS Code بتعرض رياضيات LaTeX في ردود Claude كمعادلات مكتوبة (typeset) بدل النص الخام — الـ chat panel بيعرض LaTeX math كمعادلات. في الـ terminal mode الرياضيات مش بتتعرض. بيتطلّب Claude Code v2.1.301 أو أحدث.