استعادة Claude Code: الوضع الآمن و/cd والنماذج الاحتياطية
Markdownتشخيص Claude Code باستخدام الوضع الآمن والأمر /cd والنماذج الاحتياطية واستعادة الإعدادات. ترتيب الفحوص والقيود الأصلية.
قراءة المقال كاملًا
مواد عملية للعمل مع الوكلاء: وثائق Ailoot.
ما الذي يتغير في Claude Code في يونيو 2026؟
أهم النقاط
في 8 يونيو 2026، أضافت Anthropic في Claude Code v2.1.169 الخيار --safe-mode والأمر /cd. وقبل ذلك بيومين، قدمت v2.1.166 النماذج الاحتياطية، بحد أقصى 3 نماذج في سلسلة. تعالج هذه الميزات الثلاث المشكلة الأكثر شيوعًا لدى مبرمجي الـvibe coding: «كل شيء تعطل، ولا أعرف من المسؤول، ولا أريد أن أخسر ساعة في إعادة التثبيت».
في السابق، عندما يبدأ Claude Code بالتصرف على نحو غريب—مؤشر تحميل لا ينتهي، أو تعطل عند بدء التشغيل، أو تجاهل الوكيل للقواعد في CLAUDE.md، أو عدم تشغيل hook بصمت—كان هناك مخرج واحد فقط: التعليق يدويًا على أقسام من .claude/settings.json، أو تعطيل خوادم MCP واحدًا تلو الآخر، أو حذف ~/.claude وإعادة التثبيت في أسوأ الأحوال. في إحدى الحالات الموصوفة، حُذف ~/.claude وفُقد إعداد خادم MCP الذي استغرق تجهيزه ساعة ونصف. واتضح لاحقًا أن السبب سطر واحد في CLAUDE.md، وكان من الممكن العثور عليه خلال 10 ثوانٍ، لكن ذلك لم يتضح إلا بعد استعادة كاملة.
في يونيو 2026، أطلقت Anthropic ثلاث آليات تغير هذا السيناريو. إليك بإيجاز ما أُضيف ومتى:
| الإصدار | التاريخ | ما أُضيف |
|---|---|---|
| 2.1.166 | 6 يونيو 2026 | الإعداد fallbackModel + الخيار --fallback-model للجلسات التفاعلية |
| 2.1.169 | 8 يونيو 2026 | الخيار --safe-mode ومتغير البيئة CLAUDE_CODE_SAFE_MODE، والأمر /cd |
| 2.1.176 | 12 يونيو 2026 | إصلاح: توقف /cd والتبديل بين worktree عن إظهار فرع git القديم |
فيما يلي شرح لكل آلية خطوة بخطوة، إلى جانب ترتيب تطبيقها عندما تنحرف جلسة Claude Code عن مسارها.
ما أكثر ما يتسبب في تعطل Claude Code؟
أهم النقاط
استنادًا إلى التجربة الموصوفة، يتعطل Claude Code عادة لدى مبرمجي الـvibe coding بسبب أربعة أشياء: ملف CLAUDE.md متضخم يتضمن قواعد متناقضة، وhook برمز خروج خاطئ، وخادم MCP يفشل بصمت، وإعدادات متداخلة في مستويات settings.json الثلاثة. هناك سبب واحد، ويستغرق التشخيص دقائق، لكن الذعر يدفع الناس إلى اللجوء فورًا إلى rm -rf.
في المثال الموصوف، أُنشئ CLAUDE.md أولًا في 80 سطرًا، وعمل لمدة شهر. وفي الشهر الثاني، بدأ يُلاحظ أن Claude يخالف جميع القواعد المحددة مرة أسبوعيًا: يلمس .env، وينفذ git push --force، ويفتش داخل node_modules. لم يكن ذلك عن قصد، بل لأنه نسي ببساطة. وفي إحدى المرات، حُذف .gitignore ولم يتضح السبب فورًا. يتناول دليل CLAUDE.md هذا السيناريو بمزيد من التفصيل.
عندما يتجاوز CLAUDE.md 400 سطر، يبدأ بالتسبب في مشكلات بصمت: يشغل جزءًا كبيرًا من نافذة السياق عند بدء الجلسة، ويُضعف التعليمات المهمة وسط التعليمات الثانوية. يظل Claude يقرأ الملف رسميًا، لذلك يبدو الأمر من الخارج كأن «القواعد موجودة لكنها لا تعمل»—وهي علامة نموذجية على عقد متضخم.
تأتي hooks في المرتبة الثانية بين المصادر الشائعة للمشكلات. في Claude Code hooks تفصيل لا تؤكد عليه Anthropic.
أي إن sys.exit(1) في hook بلغة Python (أو أي صيغة Unix تقليدية تعني «فشل مع خطأ») لن يوقف Claude. الرمز 2 وحده يمنع التنفيذ. في الحالة الموصوفة، اعتُبر hook «حظرًا صارمًا»، لكنه عمليًا سجل شكوى وسمح بالإجراء.
خوادم MCP هي الطبقة الثالثة، وقد تتعطل بطريقتها الخاصة أيضًا.
غالبًا ما تبدو الأعراض متشابهة: أوامر MCP متاحة لكنها تعيد failed من دون traceback. لمزيد من المعلومات عن إعداد MCP وإضافة الخوادم باستخدام claude mcp add، راجع الدليل المنفصل.
المصدر الرابع هو التسلسل الهرمي ثلاثي المستويات لملف settings.json. لديك ~/.claude/settings.json (مستوى المستخدم)، و.claude/settings.json في جذر المشروع (المشروع)، و.claude/settings.local.json (محلي)، وربما إعدادات مُدارة من مسؤول الشركة. تُدمج هذه الإعدادات وفق قواعد الأولوية. عندما يضيف أحدهم خادم MCP على مستوى المشروع، بينما لديك إدخال مشابه بإعداد تشغيل مختلف على مستوى المستخدم، ينشأ تعارض صامت يبدو كأن «Claude Code معطل».
كيف يعمل --safe-mode، وما الذي يعطّله؟
أهم النقاط
يشغّل claude --safe-mode Claude Code مع تعطيل التخصيصات بالكامل: CLAUDE.md، والإضافات، والمهارات، وhooks، وخوادم MCP، وأوامر المستخدم، والوكلاء، وأنماط الإخراج، وسير العمل، ومفاتيح الاختصار. يظل التفويض واختيار النموذج والأدوات المدمجة والأذونات متاحة. هذه أداة تشخيصية: إذا اختفت المشكلة في الوضع الآمن، فالسبب إحدى الطبقات التي أضفتها.
تقول الصياغة الأصلية لـAnthropic في سجل تغييرات v2.1.169:
إضافة الخيار
--safe-mode(وCLAUDE_CODE_SAFE_MODE) لتشغيل Claude Code مع تعطيل التخصيصات (CLAUDE.md، والإضافات، والمهارات، وhooks، وخوادم MCP) لأغراض التشخيص.
وتوضح Anthropic في وثائق إعداد النموذج:
للتحقق مما إذا كانت التخصيصات هي السبب، ابدأ جلسة باستخدام
claude --safe-mode، الذي يعطّلCLAUDE.mdوالمهارات وخوادم MCP وhooks. لا تُعد حالة Git وأسماء المجلدات تخصيصات، وتظل متاحة.
هذه أداة تشخيصية وليست «بيئة نظيفة». يساعدك الوضع الآمن على الإجابة عن سؤال واحد: هل المشكلة في السلوك الافتراضي لـClaude Code أم في التخصيصات المضافة؟ وهذا جزء من هندسة السياق—إدارة ما يراه Claude وما لا يراه في لحظة معينة. إذا كان كل شيء يعمل في الوضع الآمن، فمن الواضح أن عليك فحص الطبقات باستخدام البحث الثنائي. وإذا لم يعمل، فالمشكلة في التثبيت نفسه أو التفويض أو الشبكة أو البنية التحتية، وعندها من المنطقي مراجعة claude doctor والسجلات.
ما يعطّله الوضع الآمن (القائمة الرسمية لـAnthropic—5 طبقات رئيسية):
CLAUDE.mdفي جميع المستويات (المستخدم / المشروع)- الإضافات
- المهارات
- hooks
- خوادم MCP
ما يظل يعمل:
- التفويض (جلسة OAuth أو مفتاح API)
- اختيار النموذج (
--model sonnet،--model opus) - الأدوات المدمجة (Read وWrite وBash وGrep وغيرها)
- الأذونات
- حالة Git
- أسماء المجلدات
هناك تفصيل مهم: لا يعطّل الوضع الآمن الإعدادات المُدارة أو إعدادات السياسات التي يفرضها مسؤول الشركة. إذا كنت تعمل ضمن فريق يضبط فيه Bedrock GovCloud أو إعداد MDM قيمة availableModels، فستظل تلك القيود سارية—الوضع الآمن يعطّل تخصيصاتك فقط، لا سياسات الشركة.
كيف تعزل طبقة وتجد السبب خلال 60 ثانية؟
أهم النقاط
الخطوة 1: شغّل claude --safe-mode في المجلد نفسه الذي كانت تظهر فيه المشكلة. إذا عمل، فالمشكلة في تخصيصاتك، ثم أعد تفعيلها واحدة تلو الأخرى: CLAUDE.md -> hooks -> MCP -> المهارات. وإذا لم يعمل حتى في الوضع الآمن، فالمشكلة في المصادقة أو الإصدار أو الشبكة أو نظام التشغيل. في هذه الحالة، شغّل claude doctor للتشخيص التلقائي، من دون اللجوء إلى rm -rf.
هذا سيناريو تشخيصي للحالة التي «توقف فيها Claude Code عن الاستماع». الحد الأدنى لإصدار جميع الأوامر أدناه هو Claude Code v2.1.169. إذا كان إصدارك أقدم، فحدّثه أولًا (npm update -g @anthropic-ai/claude-code أو استخدم أداة التثبيت الأصلية من Anthropic).
- افتح المجلد نفسه الذي كانت تظهر فيه المشكلة.
- شغّل
claude --safe-mode. - إذا بدأ بصورة سليمة، فتحقق من طلبك الأصلي. هل نجح؟ إذًا السبب إحدى الطبقات. انتقل إلى الخطوة 4.
- إذا استمرت المشكلة في الوضع الآمن، فلا تلمس الإعدادات. شغّل
claude doctorأولًا، ثم تحقق من المصادقة والإصدار والتثبيتات المتعارضة.
بمجرد أن يبدأ الوضع الآمن بصورة سليمة، فعّل الطبقات واحدة تلو الأخرى، بدءًا بالأكثر احتمالًا. الترتيب استنادًا إلى التجربة الموصوفة:
CLAUDE.md. شغّلclaudeمن دون الوضع الآمن، لكن أعد تسمية الملف مؤقتًا:mv CLAUDE.md CLAUDE.md.bak. إذا عمل، فهذا الملف هو السبب. بعد ذلك يمكنك إجراء بحث ثنائي: أبقِ نصف الأسطر وتحقق.- Hooks. افتح
.claude/settings.jsonواضبط[]مؤقتًا في قسمhooks. أعد تشغيلclaude. هل يعمل؟ إذًا أحد hooks هو السبب. فعّلها واحدًا تلو الآخر. - خوادم MCP. وبالمثل، في
~/.claude.jsonأو.claude/settings.json، اضبط قسمmcpServersمؤقتًا على كائن فارغ، ثم أعد التشغيل وتحقق. - المهارات. انقل
.claude/skills/إلى مجلد مؤقت. شغّل وتحقق.
المقصود بـ«إعادة التسمية المؤقتة» هو عدم حذف الملفات أثناء التشخيص. يتيح لك mv أو git stash استعادة كل شيء بأمر واحد إذا اتضح أن تلك الطبقة ليست السبب.
كيف تغيّر مجلد العمل باستخدام /cd من دون فقدان السياق؟
أهم النقاط
يغيّر الأمر /cd <path> في Claude Code 2.1.169+ مجلد العمل في الجلسة النشطة من دون فقدان ذاكرة التخزين المؤقت للموجّه. يفيد ذلك عندما يكون إعداد المشروع الحالي معطلًا: يمكنك الانتقال إلى مجلد نظيف، والتحقق من أن Claude يعمل، ثم العودة. في السابق، كان عليك إغلاق الجلسة وبدء جلسة جديدة.
من سجل تغييرات v2.1.169 في 8 يونيو:
إضافة الأمر
/cdلنقل الجلسة إلى مجلد عمل جديد من دون إعادة ضبط ذاكرة الموجّه المؤقتة في أثناء الجلسة.
لماذا يفيد هذا عند إصلاح المشكلات؟ لنفترض أنك في مجلد المشروع ~/work/myapp وأن Claude Code يتصرف على نحو غريب. في السابق، كانت الطريقة الوحيدة للتحقق من «هل يعمل أصلًا؟» هي إغلاق الجلسة والانتقال إلى مجلد آخر والبدء من جديد. كنت ستفقد السياق والسجل وذاكرة الموجّه المؤقتة التي جرى تهيئتها. أما الآن:
# In the same session:
/cd ~/sandbox/test
ينتقل Claude إلى المجلد الجديد ويقرأ ملف CLAUDE.md فيه (إن وجد) بوصفه رسالة، لا بديلًا لموجّه النظام—وبذلك تُحفظ الذاكرة المؤقتة. إذا كان كل شيء يعمل في ~/sandbox/test، فمن الواضح أن المشكلة كانت في إعداد ~/work/myapp.
في 12 يونيو، أصلح الإصدار v2.1.176 تراجعًا مزعجًا واحدًا—كان /cd يعرض فرع git القديم حتى إعادة التشغيل الكاملة. إذا كان إصدارك أقدم، فحدّثه أو تجاهل git status ببساطة في الرسائل الأولى بعد الانتقال؛ فسيُحدّث لاحقًا.
كيف تُعد النماذج الاحتياطية لخطأ 529؟
أهم النقاط
في v2.1.166، أضافت Anthropic الإعداد fallbackModel—سلسلة تضم ما يصل إلى 3 نماذج تُجرَّب بالتتابع عندما يكون النموذج الأساسي محمّلًا فوق طاقته أو غير متاح. لا تُفعّل السلسلة إلا عند زيادة الحمل وأخطاء الخادم غير القابلة لإعادة المحاولة. ولا تؤدي أخطاء المصادقة أو الفوترة أو حدود الطلبات أو النقل إلى تفعيل سلسلة النماذج الاحتياطية؛ بل تتبع منطق إعادة المحاولة المعتاد.
في السيناريو الموصوف، تُنفَّذ مهمة طويلة على Opus في مشروع مرة أسبوعيًا؛ وبعد 10 دقائق، تعيد API الخطأ 529 Overloaded وتتوقف الجلسة. في السابق، كان عليك الانتظار أو التبديل يدويًا إلى Sonnet باستخدام --model sonnet وفقدان كل السياق الذي جرى تهيئته. يستغرق ذلك نحو عشرين دقيقة من العمل في مجلد business/ كبير يستخدم إعداد second-brain. أما الآن، فهناك آلية مخصصة.
الاقتباس الدقيق من الوثائق الرسمية:
عندما يكون النموذج الأساسي محمّلًا فوق طاقته أو غير متاح، أو يعيد خطأ خادم آخر غير قابل لإعادة المحاولة، يمكن لـClaude Code الانتقال إلى نموذج احتياطي بدلًا من إخفاق الطلب. لا تؤدي أخطاء المصادقة أو الفوترة أو حدود الطلبات أو حجم الطلب أو النقل إلى التبديل مطلقًا؛ بل تتبع مسار إعادة المحاولة ومعالجة الأخطاء المعتاد.
وهناك شرح منفصل لآلية عمل السلسلة:
أعدّ نموذجًا احتياطيًا واحدًا أو أكثر، وسيجربها Claude Code بالترتيب مع عرض إشعار عند التبديل. ينطبق التبديل على الدور الحالي فقط—وتحاول الرسالة التالية استخدام النموذج الأساسي مجددًا. تقتصر السلاسل على ثلاثة نماذج بعد إزالة التكرارات، وتُتجاهل الإدخالات الإضافية.
هناك طريقتان للإعداد. عبر CLI:
claude --fallback-model sonnet,haiku
وعبر ~/.claude/settings.json:
{
"fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]
}
هناك تفصيل منفصل بشأن حدود الطلبات. تتعمد Anthropic عدم تمرير الخطأ 429 عبر السلسلة، حتى لا تتمكن من تجاوز حد الطلبات بالانتقال إلى النموذج التالي. لا يعمل النموذج الاحتياطي إلا عندما يكون النموذج الأساسي محمّلًا فوق طاقته أو غير متاح أو يعيد خطأ خادم غير قابل لإعادة المحاولة (مثل 529 Overloaded). أما حدود الطلبات فتخضع لمنطق إعادة المحاولة والتراجع التدريجي المعتاد.
وتفصيل آخر—في 12 يونيو، أصلح الإصدار v2.1.174 تراجعًا جعل عملية ضغط السياق لا تحترم --fallback-model. إذا كانت لديك جلسة طويلة وضُغطت أثناء زيادة الحمل، فلم يكن النموذج الاحتياطي يُستدعى قبل هذا الإصلاح. إذا كنت تعمل بجلسات طويلة (/compact، أو /loop طوال الليل)، فحدّث إلى الإصدار v2.1.174 على الأقل.
ما الذي يجب إصلاحه إذا كان السبب CLAUDE.md أو hook أو MCP أو skill؟
أهم النقاط
عندما يحدد الوضع الآمن الطبقة المسؤولة، يختلف الإصلاح حسب الطبقة. بالنسبة إلى CLAUDE.md، استخدم البحث الثنائي أو ارجع إلى قالب جاهز يقل عن 200 سطر. وبالنسبة إلى hook، تحقق من رمز الخروج (2 يمنع، و1 لا يمنع) ومن المنطق. وبالنسبة إلى MCP، أزل خادمًا واحدًا وتحقق. أما في حالة skill، فتحقق مما إذا كان SKILL.md يتعارض مع CLAUDE.md.
استراتيجيات محددة لكل طبقة.
إذا كان السبب CLAUDE.md
افتح الملف وتحقق من حجمه. استنادًا إلى التجربة الموصوفة، اجعل ملف CLAUDE.md النشط لا يتجاوز 200 سطر؛ وانقل الباقي إلى ملفات التوجيه والمستندات الداعمة بجانب المشروع (تجد بنية second-brain الكاملة في دليل second brain). إذا كان يتجاوز 400 سطر، فهو على الأرجح السبب. الخطوات:
- أنشئ نسخة احتياطية:
cp CLAUDE.md CLAUDE.md.full. - ارجع إلى قالب قصير وعملي. يوجد قالب جاهز في دليل «كيفية إعداد CLAUDE.md».
- أعد تشغيل Claude Code. تحقق.
- إذا عمل، فأعد القواعد في مجموعات صغيرة من 10–20 سطرًا، وتحقق بعد كل مجموعة.
- اعثر على المجموعة التي تفسد السلوك. وأعد كتابتها على هيئة hook برمز الخروج الصحيح (تُشرح رموز خروج hooks في القسم الفرعي التالي من H2 هذا).
إذا كان السبب hook
السؤال الأساسي هو: هل رمز الخروج صحيح؟ تستخدم hooks في Claude Code ما يلي:
- Exit 0 — كل شيء سليم؛ يستمر الإجراء.
- Exit 1 — خطأ، لكنه غير مانع. يواصل Claude العمل كأن شيئًا لم يحدث.
- Exit 2 — خطأ مانع. هذا وحده يوقف الإجراء فعليًا.
إذا كتبت sys.exit(1) أو exit 1 في hook لـshell معتقدًا أنك تمنع الإجراء، فسيعمل هذا الرمز في Claude Code كسجل تحذير من دون إيقاف الإجراء. غيّره إلى 2. للتفاصيل عن hooks وكيفية إعدادها من دون هذا المطب، راجع الدليل المنفصل.
الحالة الشائعة الثانية هي أن يعيد hook JSON غير صالح على stdout. يحلل Claude Code استجابة hook بصيغة JSON، وإذا احتوت على عناصر دخيلة (سجل أو مؤشر تقدم أو رمز تعبيري)، فسيُعتبر hook فاشلًا ويستمر الإجراء. القاعدة: لا تضع على stdout إلا JSON؛ وكل ما عداه يذهب إلى stderr.
الحالة الثالثة هي أن يقرأ hook شيئًا من ~/.claude/ أخفاه الوضع الآمن. هذا سيناريو طبيعي؛ أصلحه بالتحقق من os.environ.get('CLAUDE_CODE_SAFE_MODE') في البداية والخروج بالرمز 0، لا بتعديل hook.
إذا كان السبب خادم MCP
الأعراض: أوامر MCP متاحة لكنها تعيد failed من دون traceback واضح. الخطوات:
- شغّل
claude mcp list—ما الخوادم المعرّفة؟ - عطّل الخوادم واحدًا تلو الآخر في
~/.claude.json: أعد تسمية المفتاحclaude-server-Aإلى_claude-server-A(وهذا يعطّله من دون حذفه). - أعد تشغيل
claude. تحقّق من الاستدعاءات التي تعمل. - بعد العثور على الخادم المسؤول، تحقق من سجله:
claude mcp logs <name>. - إذا كان خادمًا من جهة خارجية (
@modelcontextprotocol/server-postgresوما شابه)، فتحقق من وجود إصدار حديث. لا يزال نظام MCP مضطربًا، وكثيرًا ما تتعطل الخوادم مع تحديثات Claude Code.
إذا واجهت «تعطلًا عند بدء التشغيل، وفقط مع خادمي MCP»، فقارن السلوك في الوضع الآمن من دون MCP.
إذا كان السبب skill
تتكون skill من SKILL.md ورمز في .claude/skills/<name>/. الأعراض: يتجاهل Claude الـskill، أو يطبقها في وقت غير مناسب، أو يطبقها لكنه ينتج مخرجات رديئة. الخطوات:
- افتح
SKILL.md. تحقق من الوصف—ينبغي أن يتكون من 1–2 جملة وأن يحدد بوضوح متى تُستخدم. إذا كان يقول «مساعدًا عامًا لكل شيء»، فلن يفهم Claude متى يستدعيها. - تحقق من عدم وجود تناقضات مع
CLAUDE.md. إذا كانCLAUDE.mdيقول «اكتب الاختبارات دائمًا»، بينما يقول وصف skill «استخدمها للنمذجة الأولية السريعة من دون اختبارات»، فهناك تعارض. - إذا كانت skill تستخدم أوامر خارجية (npm وpython وgit)، فتحقق من توفرها في PATH على مستوى النظام. فللـskill بيئتها الدنيا الخاصة.
ماذا تفعل إذا لم يساعد الوضع الآمن: شخّص واحفظ الحالة قبل الإصلاح
أهم النقاط
إذا فشل الوضع الآمن أيضًا، تبقى احتمالات التثبيت والمصادقة والشبكة والبنية التحتية. شغّل claude doctor وافحص دليله. لا يبرر تقرير غير حاسم حذف الإعدادات أو الجلسات؛ احفظ الحالة كاملة وتحقق منها أولًا، ثم أصلح التثبيت المشخص فقط.
إزالة حالة المستخدم ليست اختصارًا تشخيصيًا. استخدم الفحوص أدناه لتحديد العطل؛ وإن لم تحسمه، فاحفظ الدليل وواصل التحقيق. يبدأ أي إصلاح تثبيت بنسخة متحقق منها ويحافظ على الحساب وهوية مخزن الاعتماد القائمين. الترتيب:
claude doctor— التشخيص التلقائي. تكتب Anthropic في وثائقها:
إذا كان
claude --versionيعمل لكن هناك أمرًا آخر لا يعمل، فشغّلclaude doctorلإنشاء تقرير تشخيصي تلقائي.
- تحقق من وجود تثبيتات متعارضة. لدى كثيرين إصدار عالمي مثبت عبر npm وأداة التثبيت الأصلية في الوقت نفسه:
قد تؤدي التثبيتات المتعددة لـClaude Code إلى عدم تطابق الإصدارات أو إلى سلوك غير متوقع.
- تحقق مما إذا كان
ANTHROPIC_API_KEYيعترض جلسة OAuth. وهذا سبب شائع لحالة «لا شيء يعمل، وانتهت صلاحية المفتاح»:
عندما يكون `ANTHROPIC_API_KEY` مضبوطًا وتكون قد أكدت استخدامه، يستعمل Claude Code ذلك المفتاح بدلًا من بيانات اعتماد OAuth للاشتراك.
الحل: نفّذ unset ANTHROPIC_API_KEY في جلسة shell الحالية أو أزله من ~/.zshrc / ~/.bashrc.
- أصلح التثبيت الذي يحدده التشخيص فقط؛ واحفظ حالة المستخدم كاملة أولًا. لا يثبت فشل الوضع الآمن أو تقرير doctor غير الحاسم ضرورة إزالة البيانات. أوقف جلسات Claude والكتّاب الآخرين قبل نسخة متسقة. أبق حساب Unix وHOME ومخزن اعتماد النظام وحساب Anthropic نفسها؛ ولا تدوّر المفاتيح أو تنشئ هوية بديلة.
مثال النسخ التالي لـ Linux مع GNU tar. على macOS أو Windows، استخدم أداة تحفظ ACLs والسمات الممتدة والروابط والبيانات الوصفية للمنصة، وتحقق من الاستعادة قبل المتابعة؛ ولا تفترض عمل خيارات GNU هناك. يحتوي الأرشيف بيانات اعتماد وسجلات محادثة؛ أبقه خاصًا وخارج المستودعات.
# Run as the same user who owns the Claude state, after stopping writers.
set -eu
umask 077
backup_dir=$(mktemp -d "$HOME/.claude-recovery-XXXXXXXX")
set --
if [ -e "$HOME/.claude" ] || [ -L "$HOME/.claude" ]; then
set -- "$@" .claude
fi
if [ -e "$HOME/.claude.json" ] || [ -L "$HOME/.claude.json" ]; then
set -- "$@" .claude.json
fi
[ "$#" -gt 0 ] || exit 1
tar --acls --xattrs --numeric-owner -cpf "$backup_dir/claude-state.tar" -C "$HOME" "$@"
tar --acls --xattrs --compare -f "$backup_dir/claude-state.tar" -C "$HOME"
sha256sum "$backup_dir/claude-state.tar" > "$backup_dir/claude-state.sha256"
(cd "$backup_dir" && sha256sum -c claude-state.sha256)
mkdir "$backup_dir/restore-check"
tar --acls --xattrs -xpf "$backup_dir/claude-state.tar" -C "$backup_dir/restore-check"
tar --acls --xattrs --compare -f "$backup_dir/claude-state.tar" -C "$backup_dir/restore-check"
printf 'Verified recovery directory: %s\n' "$backup_dir"
يجب نجاح جميع الأوامر. يغطي الأرشيف شجرة .claude القائمة كاملة، بما فيها الجلسات غير المتتبعة أو المتجاهلة وحالة الإضافات، و.claude.json؛ وليس الإعدادات المتتبعة في Git فقط. إذا كان أي المسارين رابطًا رمزيًا أو كانت البيانات في موضع مضبوط مستقل، فتوقف وأدخل الهدف المحلول في النسخة المتحقق منها نفسها؛ فأرشفة الرابط وحده لا تنسخ هدفه. لا يحتوي الأرشيف macOS Keychain أو مخزن اعتماد خارجيًا آخر؛ فأبق هوياتهما في مكانها.
إذا حدد التشخيص التثبيت المحلي القديم نسخة متعارضة، فانقل ذلك التثبيت وحده إلى مجلد الاستعادة الخاص بدل حذف الإعدادات والجلسات:
# Use the verified backup_dir from the previous block.
if [ -d "$HOME/.claude/local" ]; then
mv "$HOME/.claude/local" "$backup_dir/legacy-local"
fi
أزل تثبيت npm فقط إذا حدده التشخيص كتثبيت متعارض وكنت تنوي إبقاء الأصلي. ثم استخدم المثبت الأصلي الموثق، دون حذف .claude أو .claude.json:
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor
على Windows، يبقى أمر التثبيت الأصلي:
irm https://claude.ai/install.ps1 | iex
استعد بصورة مستقلة. أوقف الكتّاب مجددًا. افحص بصمة الأرشيف واستخرجه إلى مجلد استعادة فارغ كما أعلاه، وأنجح المقارنة قبل استخدام الملفات. إذا لزم استعادة التثبيت القديم المنقول، فتأكد أولًا من غياب $HOME/.claude/local، ثم أعد $backup_dir/legacy-local إلى ذلك المسار نفسه. استعد ملف إعداد شخصه التشخيص من الاستخراج المتحقق منه بعد حفظ أي بديل حالي؛ ولا تكتب فوق الشجرة كلها عميانيًا. تبقى الجلسات وإعدادات MCP والهوية الأصلية محفوظة. لا تغطي لقطة Git وحدها المحادثات أو بيانات الاعتماد غير المتتبعة أو المتجاهلة، ولا بيانات نظام الملفات الوصفية.
ما الذي يجب ألا تفعله عندما يتعطل Claude Code؟
أهم النقاط
ستة أنماط مضادة ظهرت في حالات الدعم الموصوفة: تغيير المفاتيح قبل التشخيص، وإجراء إعادة ضبط كاملة كخطوة أولى، والذعر بسبب خطأ واجهة مستخدم في hook، ورفع رمز خروج hook قبل إصلاح منطقه، وتعديل CLAUDE.md من دون ضمانة الوضع الآمن، والاعتقاد بأن «Claude يصلح MCP الخاص به». يستنزف كل منها ساعات، ولا ضرورة لأي منها.
لا تغيّر المفاتيح قبل التشخيص
في 90% من الحالات، تعود مشكلة «المصادقة لا تعمل» إما إلى اعتراض ANTHROPIC_API_KEY للاشتراك، أو إلى خلل في واجهة hook، أو إلى فشل MCP. لن يؤدي تدوير المفاتيح إلى إصلاح أي من ذلك، لكنه سيتسبب في ساعة أخرى من التوقف: إذ عليك إبطال المفتاح القديم، وإصدار مفتاح جديد، وإعادة توقيع CI به، وتحديث المتغيرات في بيئة الإنتاج. شغّل claude --safe-mode أولًا. هل يعمل؟ إذًا المشكلة في التخصيصات، ولا حاجة إلى لمس المفاتيح.
لا تُجرِ إعادة ضبط كاملة قبل تجربة الوضع الآمن
يوفر الوضع الآمن بيئة معزولة في 1 ثانية. قد يدمر حذف .claude الجلسات وتكوين MCP وحالة أخرى غير متتبعة. شخّص أولًا وتحقق من نسخة خاصة، واستخدم نقلًا قابلًا للعكس فقط للتثبيت أو طبقة الإعداد التي أشار إليها الدليل.
لا تفزع بسبب خطأ واجهة مستخدم في hook
قبل إصلاح أي شيء، تحقق مما إذا كان hook قد عمل فعلًا (من خلال سجل في stderr أو طباعة صريحة)، بدلًا من الاعتماد على المؤشر المرئي.
لا ترفع رمز خروج hook قبل إصلاح المنطق
عندما لا يمنع hook الحاظر الإجراء، قد تميل إلى ضبط exit 2 واعتبار الأمر منتهيًا. هذا إصلاح عملي، لكنه يخفي مشكلة أخرى: إذا لم يعمل الحظر لمدة شهر، فهذا يعني أن كل ما كان يفترض أن يمنعه hook قد مرّ. راجع سجل git أولًا واعرف بالتحديد ما الذي تسلل. ثم أضف الحظر. وإلا فإن إغلاق الثغرة لا يلغي ما حدث قبل ذلك.
لا تعدّل CLAUDE.md الإنتاجي من دون ضمانة الوضع الآمن
في الحالة الموصوفة: تعدّل CLAUDE.md، ويبدأ Claude بالتصرف على نحو غريب، فتشغّل git diff وترى أن أحدهم أضاف أيضًا خادم MCP وhook إلى المستودع في ذلك المساء. تلقي باللوم على تعديلك، وتتراجع عنه، لكن Claude يواصل التصرف بغرابة. القاعدة: قبل git revert، شغّل claude --safe-mode. إذا استمرت المشكلة في الوضع الآمن، فلا علاقة لتعديلك بها؛ ولا حاجة إلى التراجع عنه.
لا تصدق أن «Claude يصلح MCP الخاص به»
سيناريو نموذجي: تطلب من Claude «إضافة أداة معينة إلى خادم MCP»، فيعيد Claude كتابة الإعداد العامل، فيتعطل كل شيء، ثم يقضي عدة أدوار في تشخيص الضرر الذي تسبب فيه، مستهلكًا حصة الجلسة في أثناء ذلك. عندما يتعطل MCP، استرجع الإعداد يدويًا؛ ولا تترك الأمر للوكيل. يعمل جزء من ترسانة أدواته على MCP أيضًا، وتعطل MCP يعني تعطل أداة التشخيص نفسها.
إلى أين تتجه بعد إصلاح المشكلة؟
أهم النقاط
بعد استعادة Claude Code، أضف وسائل وقاية حتى لا يتعطل مجددًا. الحد الأدنى: disableBypassPermissionsMode: "disable" في إعدادات المستخدم، وhooks تمنع .env وgit push --force، وsandbox للتشغيل الذاتي الطويل. دليل الوقاية هو الدليل المكمل لهذا الدليل.
بعد تحليل الحادثة، لا تعد إلى العمل فورًا. أضف أولًا وسائل وقاية كي لا تتكرر الحادثة. قد تخسر ساعات في إعداد second brain (مجلد business/ ذي بنية المشروع) وCLAUDE.md، ومن الصعب استعادتهما يدويًا—وهذا سبب وجيه. الحد الأدنى:
~/.claude/settings.jsonمعpermissions.disableBypassPermissionsMode: "disable"—حظر معماري لوضع التجاوز، بحيث لا يعمل--dangerously-skip-permissionsإذا شُغّل عن طريق الخطأ.- Hooks للأنماط
Read(./env*)وBash(git push --force)وWrite(./node_modules/**)—أمور يجب ضبطها كقانون لا كأمنيات. - إعداد sandbox للتشغيل الذاتي الطويل (
/loop،/schedule). /compactمع قواعدك الخاصة لما ينبغي حذفه من السياق، حتى لا يستهلك Claude نفسه.
تجد مخطط الحماية الكامل ذي الطبقات الأربع في دليل «كيفية إعداد Claude Code بحيث لا يعطّل مشروعك طوال الليل». يتناول أحد الدليلين الوقاية قبل تشغيل /loop، والآخر الاستعادة بعد أن يكون /loop قد عطّل شيئًا بالفعل. إنهما مكملان منطقيًا.
المصادر
- سجل تغييرات Anthropic Claude Code - سجل التغييرات الرسمي الذي يشرح v2.1.166 (
fallbackModel)، وv2.1.169 (الوضع الآمن، /cd)، وv2.1.174 (إصلاح الضغط)، وv2.1.176 (إصلاح عرض فرع git في /cd). - وثائق Anthropic - إعداد النموذج - أقسام «سلاسل النماذج الاحتياطية»، و«التحقق مما أدى إلى التبديل إلى نموذج احتياطي»، و«إعداد النموذج».
- وثائق Anthropic - استكشاف أخطاء التثبيت وتسجيل الدخول وإصلاحها - التثبيتات المتعارضة، و
claude doctor، واعتراضANTHROPIC_API_KEY.
مواد عملية: وثائق Ailoot.
المزيد من المواد والأدوات: Ailoot.
المزيد من التفاصيل
أسئلة شائعة
هل يعني فشل الوضع الآمن أن علي حذف ~/.claude؟
لا. تبقى أسباب التثبيت والمصادقة والشبكة والبنية التحتية للتحقيق. تقرير doctor غير الحاسم ليس دليلًا على وجوب حذف الإعدادات أو الجلسات؛ أصلح الطبقة المشخصة فقط.
ماذا أحفظ قبل إصلاح التثبيت؟
أوقف الكتّاب وانسخ حالة Claude كاملة، بما فيها الجلسات وتكوين الإضافات وMCP والملفات المتجاهلة وبيانات نظام الملفات الوصفية. تحقق من البصمة والاستخراج قبل المتابعة، وأبق الحساب ومخزن الاعتماد القائمين، واستعد الطبقة المشخصة فقط دون الكتابة العمياء فوق الحالة الحالية.