# שחזור Claude Code: מצב בטוח, /cd ומודל חלופי

> אבחון Claude Code באמצעות מצב בטוח, הפקודה /cd, מודלים חלופיים ושחזור הגדרות. סדר הבדיקות והמגבלות המקוריות.

Source: https://ailoot.ai/blog/he/claude-code-safe-mode-recovery/
Canonical: https://ailoot.ai/blog/he/claude-code-safe-mode-recovery/
Language: he
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-140
Revision: sha256-d6b1e5f3706422559f8a9120d6cf7a9ebd938d464ad371fb9597d87be65ef903


חומרים מעשיים לעבודה עם סוכנים: [התיעוד של Ailoot](https://ailoot.ai/docs/).



## מה השתנה ב-Claude Code ביוני 2026?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

ב-8 ביוני 2026, ב-Claude Code v2.1.169, הוסיפה Anthropic את הדגל `--safe-mode` ואת הפקודה `/cd`. יומיים קודם לכן, גרסה v2.1.166 הציגה מודלים חלופיים, עד 3 בשרשרת. שלוש התכונות האלה נותנות מענה לנקודת הכאב הנפוצה ביותר של מפתחי וייב קודינג: “הכול קרס, אני לא יודע מי אשם, ואני לא רוצה לאבד שעה על התקנה מחדש.”

</div>

בעבר, כש-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` והמעבר בין worktrees הפסיקו להציג את ענף git הישן |

בהמשך מוסבר כל מנגנון שלב אחר שלב, לצד סדר הפעולות שיש לבצע כשמושב Claude Code יוצא מהמסלול.

## מה גורם ל-Claude Code להתקלקל לרוב?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

על סמך הניסיון המתואר, Claude Code מתקלקל בדרך כלל אצל מפתחי וייב קודינג בגלל ארבעה דברים: `CLAUDE.md` שהתנפח ומכיל כללים סותרים, hook עם קוד יציאה שגוי, שרת MCP שנכשל בשקט, והגדרות חופפות בשלוש רמות של `settings.json`. יש גורם אחד, האבחון נמשך דקות, והבהלה גורמת לאנשים לפנות מיד אל `rm -rf`.

</div>

בדוגמה המתוארת, `CLAUDE.md` נכתב בתחילה ב-80 שורות—והוא עבד במשך חודש. בחודש השני התחילו להבחין שפעם בשבוע Claude מפר את כל הכללים שנקבעו: נוגע ב-`.env`, מריץ `git push --force`, משוטט ב-`node_modules`. לא מתוך כוונת זדון—הוא פשוט שכח. פעם אחת נמחק `.gitignore`, והסיבה לא התבררה מיד. התרחיש הזה מוסבר ביתר פירוט ב[מדריך ל-`CLAUDE.md`](https://ailoot.ai/blog/he/claude-md-template/).

כש-`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`, ראו את [המדריך הנפרד](https://ailoot.ai/blog/he/mcp-servers-claude-code/).

המקור הרביעי הוא היררכיית שלוש הרמות של `settings.json`. יש לכם את `~/.claude/settings.json` (רמת המשתמש), את `.claude/settings.json` בשורש הפרויקט (פרויקט), את `.claude/settings.local.json` (מקומית), ולפעמים גם הגדרות מנוהלות של מנהל מערכת ארגוני. הן משולבות לפי כללי קדימות. כשמישהו מוסיף שרת MCP ברמת הפרויקט בזמן שיש לכם ערך דומה ברמת המשתמש, עם תצורת הפעלה אחרת, נוצר עימות שקט שנראה כמו “Claude Code התקלקל.”

## איך `--safe-mode` פועל, ומה הוא משבית?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

הפקודה `claude --safe-mode` מפעילה את Claude Code כשכל ההתאמות האישיות מושבתות לחלוטין: `CLAUDE.md`, תוספים, כישורים, hooks, שרתי MCP, פקודות משתמש, סוכנים, סגנונות פלט, תהליכי עבודה ומקשי קיצור. ההרשאות, בחירת המודל, הכלים המובנים וההרשאות עצמן נשארים פעילים. זהו כלי אבחון: אם הבעיה נעלמת במצב בטוח, אחת השכבות שהוספתם אשמה.

</div>

הניסוח המקורי של Anthropic ביומן השינויים של v2.1.169 הוא:

<figure>
<blockquote>
<p>נוסף הדגל <code><bdi>--safe-mode</bdi></code> (וגם <code>CLAUDE_CODE_SAFE_MODE</code>) להפעלת Claude Code כשההתאמות האישיות מושבתות (<code>CLAUDE.md</code>, תוספים, כישורים, hooks ושרתי MCP) לצורכי אבחון.</p>
</blockquote>
<figcaption>— יומן השינויים של Anthropic Claude Code, https://code.claude.com/docs/en/changelog</figcaption>
</figure>

Anthropic מבהירה זאת בתיעוד הגדרת המודל:

<figure>
<blockquote>
<p>כדי לבדוק אם ההתאמות האישיות אשמות, התחילו מושב עם <code>claude <bdi>--safe-mode</bdi></code>, שמשבית את <code>CLAUDE.md</code>, הכישורים, שרתי MCP וה-hooks. מצב git ושמות ספריות אינם נחשבים להתאמות אישיות ונשארים זמינים.</p>
</blockquote>
<figcaption>— תיעוד Anthropic - הגדרת מודל, https://code.claude.com/docs/en/model-config</figcaption>
</figure>

זהו **כלי אבחון**, לא “סביבה נקייה.” מצב בטוח עוזר לענות על שאלה אחת: האם הבעיה נובעת מהתנהגות ברירת המחדל של 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 שניות?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

שלב 1: הריצו `claude --safe-mode` באותה תיקייה שבה הדברים השתבשו. אם הוא עובד, הבעיה נמצאת בהתאמות האישיות שלכם, ואז מפעילים אותן אחת אחת: `CLAUDE.md` -\> hooks -\> MCP -\> כישורים. אם הוא אינו עובד גם במצב בטוח, הבעיה היא בהרשאה, בגרסה, ברשת או במערכת ההפעלה. במקרה כזה, הריצו `claude doctor` לאבחון אוטומטי, בלי לגעת ב-`rm -rf`.

</div>

תרחיש אבחון למקרה שבו Claude Code “הפסיק להקשיב.” הגרסה המינימלית לכל הפקודות שלהלן היא **Claude Code v2.1.169**. אם הגרסה שלכם ישנה יותר, עדכנו קודם (`npm update -g @anthropic-ai/claude-code` או תוכנית ההתקנה המקורית של Anthropic).

1.  פתחו את אותה תיקייה שבה הדברים השתבשו.
2.  הריצו `claude --safe-mode`.
3.  אם הוא עולה בצורה תקינה, בדקו את הבקשה המקורית שלכם. האם היא עבדה? אם כן, אחת השכבות אשמה. עברו לשלב 4.
4.  אם עדיין יש תקלה במצב בטוח, אל תגעו בהגדרות. הריצו תחילה `claude doctor`; בדקו הרשאה, גרסה והתקנות מתנגשות.

אחרי שמצב בטוח עולה בצורה תקינה, הפעילו שכבות אחת בכל פעם, החל מהגורם הסביר ביותר. הסדר מבוסס על הניסיון המתואר:

1.  **`CLAUDE.md`.** הריצו `claude` ללא מצב בטוח, אבל שנו זמנית את שם הקובץ: `mv CLAUDE.md CLAUDE.md.bak`. אם הוא עובד, הקובץ הזה הוא הגורם. לאחר מכן אפשר לבצע חיפוש בינארי: להשאיר חצי מהשורות ולבדוק.
2.  **Hooks.** פתחו את `.claude/settings.json` והגדירו זמנית `[]` במקטע `hooks`. הפעילו מחדש את `claude`. האם זה עובד? אם כן, אחד ה-hooks אשם. הפעילו אותם אחד אחד.
3.  **שרתי MCP.** באופן דומה, הגדירו זמנית אובייקט ריק במקטע `mcpServers` שב-`~/.claude.json` או ב-`.claude/settings.json`, הפעילו מחדש ובדקו.
4.  **כישורים.** העבירו את `.claude/skills/` לתיקייה זמנית. הפעילו ובדקו.

מה פירוש “שינוי שם זמני”: קבצים אינם נמחקים במהלך האבחון. `mv` או `git stash` מאפשרים לשחזר הכול בפקודה אחת אם יתברר שהשכבה הזאת אינה הגורם.



## איך מחליפים את תיקיית העבודה באמצעות `/cd` בלי לאבד את ההקשר?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

הפקודה `/cd <path>` ב-Claude Code <bdi>2.1.169+</bdi> מחליפה את תיקיית העבודה במושב הפעיל בלי לאבד את מטמון ההנחיות. היא מועילה כשההגדרות של הפרויקט הנוכחי תקולות: אפשר לעבור לתיקייה נקייה, לבדוק ש-Claude עובד ולחזור. בעבר היה צריך לסגור את המושב ולהתחיל מחדש.

</div>

מתוך יומן השינויים של v2.1.169, ב-8 ביוני:

<figure>
<blockquote>
<p>נוספה הפקודה <code><bdi>/cd</bdi></code> למעבר לתיקיית עבודה חדשה בלי לאפס את מטמון ההנחיות באמצע המושב.</p>
</blockquote>
<figcaption>— יומן השינויים של Anthropic Claude Code, https://code.claude.com/docs/en/changelog</figcaption>
</figure>

למה זה מועיל בעת תיקון תקלות. נניח שאתם בתיקיית הפרויקט `~/work/myapp`, ו-Claude Code מתנהג באופן מוזר. בעבר, הדרך היחידה לבדוק “האם הוא בכלל עובד?” הייתה לסגור את המושב, לעבור לתיקייה אחרת ולהתחיל מחדש. איבדתם את ההקשר, את ההיסטוריה ואת מטמון ההנחיות שחומם. עכשיו:

```bash
# באותו מושב:
/cd ~/sandbox/test
```

Claude עובר לתיקייה החדשה וקורא את `CLAUDE.md` שלה (אם קיים) כהודעה, ולא כתחליף להנחיית המערכת—כלומר, המטמון נשמר. אם הכול עובד ב-`~/sandbox/test`, ברור שהבעיה הייתה בהגדרות של `~/work/myapp`.

ב-12 ביוני, v2.1.176 תיקנה רגרסיה לא נעימה אחת—`/cd` הציגה את ענף git הישן עד להפעלה מלאה מחדש. אם הגרסה שלכם ישנה יותר, עדכנו או פשוט התעלמו מ-`git status` בהודעות הראשונות לאחר המעבר—הוא יתעדכן.

## איך מגדירים מודלים חלופיים לשגיאת 529?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

ב-v2.1.166 הוסיפה Anthropic את `fallbackModel`—שרשרת של עד 3 מודלים שנוסו לפי הסדר כאשר המודל הראשי עמוס או אינו זמין. השרשרת מופעלת רק בגלל שגיאות שרת של עומס יתר ושגיאות שאינן ניתנות לניסיון חוזר. שגיאות הרשאה, חיוב, הגבלת קצב ותחבורה אינן מפעילות את שרשרת הגיבוי—הן פועלות לפי מנגנון הניסיונות החוזרים הרגיל.

</div>

בתרחיש המתואר, משימה ארוכה רצה פעם בשבוע על Opus בפרויקט; אחרי 10 דקות ה-API מחזיר 529 Overloaded והמושב קורס. בעבר היה צריך להמתין או לעבור ידנית ל-Sonnet עם `--model sonnet` ולאבד את כל ההקשר שחומם. ב-`business/` גדול עם הגדרת second-brain, הדבר דורש כעשרים דקות עבודה. כעת יש מנגנון מתאים.

הציטוט המדויק מהתיעוד הרשמי:

<figure>
<blockquote>
<p>כאשר המודל הראשי עמוס, אינו זמין או מחזיר שגיאת שרת אחרת שאינה ניתנת לניסיון חוזר, Claude Code יכול לעבור למודל חלופי במקום להיכשל בבקשה. שגיאות הרשאה, חיוב, הגבלת קצב, גודל בקשה ותחבורה לעולם אינן מפעילות מעבר—הן פועלות לפי נתיב הניסיונות החוזרים וטיפול השגיאות הרגיל.</p>
</blockquote>
<figcaption>— תיעוד Anthropic - הגדרת מודל, https://code.claude.com/docs/en/model-config</figcaption>
</figure>

ובנפרד, כך פועלת השרשרת:

<figure>
<blockquote>
<p>הגדירו מודל חלופי אחד או יותר, ו-Claude Code ינסה אותם לפי הסדר ויציג הודעה בעת מעבר. המעבר חל רק על התור הנוכחי—בהודעה הבאה ייעשה שוב ניסיון במודל הראשי. השרשראות מוגבלות לשלושה מודלים אחרי הסרת כפילויות; ערכים נוספים מתעלמים מהם.</p>
</blockquote>
<figcaption>— תיעוד Anthropic - הגדרת מודל, https://code.claude.com/docs/en/model-config</figcaption>
</figure>

יש שתי דרכים להגדיר זאת. דרך ה-CLI:

```bash
claude --fallback-model sonnet,haiku
```

באמצעות `~/.claude/settings.json`:

```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 או כישור הם הגורם?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

כשהמצב הבטוח מזהה את השכבה האשמה, התיקון משתנה לפי השכבה. עבור `CLAUDE.md`, השתמשו בחיפוש בינארי או חזרו לתבנית מוכנה של פחות מ-200 שורות. עבור hook, בדקו את קוד היציאה (2 חוסם, 1 לא) ואת הלוגיקה. עבור MCP, הסירו שרת אחד ובדקו. עבור כישור, בדקו אם יש ב-`SKILL.md` סתירות ל-`CLAUDE.md`.

</div>

אסטרטגיות ספציפיות לכל שכבה.

### אם `CLAUDE.md` הוא הגורם

פתחו את הקובץ ובדקו את אורכו. על סמך הניסיון המתואר, **שמרו את `CLAUDE.md` הפעיל על 200 שורות לכל היותר**; העבירו את השאר לנתבים ולמסמכים תומכים לצד הפרויקט (המבנה המלא של second brain מופיע ב[מדריך ל-second brain](https://ailoot.ai/blog/he/claude-code-second-brain/)). אם יש בו <bdi>400+</bdi> שורות, כמעט בוודאות הוא הגורם. השלבים:

1.  צרו גיבוי: `cp CLAUDE.md CLAUDE.md.full`.
2.  חזרו לתבנית עבודה קצרה. תבנית מוכנה נמצאת ב[מדריך “איך להגדיר CLAUDE.md”](https://ailoot.ai/blog/he/claude-md-template/).
3.  הפעילו מחדש את Claude Code. בדקו.
4.  אם הוא עובד, החזירו את הכללים במקטעים קטנים של 10–20 שורות, ובדקו אחרי כל מקטע.
5.  מצאו את המקטע שפוגע בהתנהגות. שכתבו אותו כ-hook עם קוד היציאה הנכון (קודי יציאה של hooks מכוסים בתת-הסעיף הבא של H2 זה).

### אם hook הוא הגורם

השאלה העיקרית היא האם קוד היציאה נכון. Hooks של Claude Code משתמשים ב:

- **יציאה 0** — הכול תקין; הפעולה נמשכת.
- **יציאה 1** — שגיאה, אך **אינה חוסמת**. Claude ממשיך כאילו לא קרה דבר.
- **יציאה 2** — שגיאה **חוסמת**. רק היא באמת עוצרת את הפעולה.

אם כתבתם `sys.exit(1)` או `exit 1` ב-hook של shell, מתוך מחשבה שהוא יחסום, הקוד הזה משמש ב-Claude Code כרישום אזהרה, בלי לעצור את הפעולה. שנו אותו ל-`2`. לפרטים על hooks ולהגדרתם בלי להיתקל במכשול הזה, ראו את [המדריך הנפרד](https://ailoot.ai/blog/he/claude-code-hooks/).

המקרה הנפוץ השני הוא hook שמחזיר JSON לא תקין ב-stdout. Claude Code מנתח את תגובת ה-hook כ-JSON, ואם יש בה תוכן מיותר (יומן, סימון התקדמות, אימוג׳י), ה-hook נחשב לכושל והפעולה נמשכת. הכלל: **stdout מכיל JSON בלבד; כל השאר נשלח אל stderr**.

המקרה השלישי הוא hook שקורא משהו מתוך `~/.claude/` שמצב בטוח הסתיר. זה תרחיש רגיל; תקנו אותו לא באמצעות שינוי ה-hook, אלא באמצעות בדיקה של `os.environ.get('CLAUDE_CODE_SAFE_MODE')` בתחילתו ויציאה עם 0.

### אם שרת MCP הוא הגורם

תסמינים: פקודות MCP זמינות, אך מחזירות `failed` בלי traceback ברור. שלבים:

1.  הריצו `claude mcp list`—אילו שרתים מוגדרים?
2.  השביתו שרתים בזה אחר זה ב-`~/.claude.json`: שנו את המפתח `claude-server-A` ל-`_claude-server-A` (כך הוא מושבת בלי להימחק).
3.  הפעילו מחדש את `claude`. בדקו אילו קריאות פועלות.
4.  אחרי שתמצאו את השרת האשם, בדקו את היומן שלו: `claude mcp logs <name>`.
5.  אם זהו שרת של צד שלישי (`@modelcontextprotocol/server-postgres` ודומים לו), בדקו אם יצאה לו גרסה חדשה לאחרונה. אקוסיסטם ה-MCP עדיין סוער; שרתים מתקלקלים לעיתים קרובות בעקבות עדכוני Claude Code.

אם אתם נתקלים ב“קריסות בהפעלה, ורק עם שני MCPs”, השוו את ההתנהגות במצב בטוח וללא MCP.

### אם כישור הוא הגורם

כישור הוא `SKILL.md` יחד עם קוד ב-`.claude/skills/<name>/`. תסמינים: Claude מתעלם מהכישור, מפעיל אותו בזמן הלא נכון, או מפעיל אותו אך מייצר תוצאה גרועה. שלבים:

1.  פתחו את `SKILL.md`. בדקו את התיאור—**עליו להיות באורך משפט אחד או שניים ולתאר במדויק מתי להשתמש בו**. אם כתוב בו “עוזר אוניברסלי לכל דבר”, Claude אינו מבין מתי להפעיל אותו.
2.  בדקו אם יש סתירות מול `CLAUDE.md`. אם כתוב ב-`CLAUDE.md` “תמיד לכתוב בדיקות”, אבל תיאור הכישור אומר “להשתמש לאב טיפוס מהיר בלי בדיקות”, יש סתירה.
3.  אם הכישור משתמש בפקודות חיצוניות (npm, python, git), בדקו שהן זמינות ב-PATH הכלל-מערכתי. לכישור יש סביבה מינימלית משלו.

## מה לעשות אם מצב בטוח לא עזר: אבחון ושמירת מצב לפני תיקון

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

אם גם מצב בטוח נכשל, נותרו אפשרויות של התקנה, הרשאה, רשת או תשתית. הריצו `claude doctor` ובדקו את ראיותיו. דוח לא מכריע אינו מצדיק מחיקת הגדרות או הפעלות: שמרו ואמתו קודם את המצב המלא, ואז תקנו רק את ההתקנה שאובחנה.

</div>

הסרת מצב משתמש אינה קיצור דרך אבחוני. השתמשו בבדיקות שלהלן לזיהוי התקלה; אם אינן מכריעות, שמרו את הראיות והמשיכו לחקור. כל תיקון התקנה מתחיל בגיבוי מאומת ושומר על החשבון ועל זהות מאגר פרטי הגישה הקיימים. הסדר:

1.  **`claude doctor`** — אבחון אוטומטי. Anthropic כותבת בתיעוד שלה:

<figure>
<blockquote>
<p>אם `claude --version` פועל אבל משהו אחר משתבש, הריצו `claude doctor` כדי ליצור דוח אבחון אוטומטי.</p>
</blockquote>
<figcaption>— תיעוד Anthropic - פתרון בעיות התקנה, https://code.claude.com/docs/en/troubleshoot-install</figcaption>
</figure>

2.  **בדקו אם קיימות התקנות מתנגשות.** לאנשים רבים מותקנות בו-זמנית גם גרסה גלובלית של npm וגם תוכנית ההתקנה המקורית:

<figure>
<blockquote>
<p>התקנות מרובות של Claude Code עלולות לגרום לאי-התאמות בגרסאות או להתנהגות בלתי צפויה.</p>
</blockquote>
<figcaption>— תיעוד Anthropic - פתרון בעיות התקנה, https://code.claude.com/docs/en/troubleshoot-install</figcaption>
</figure>

3.  **בדקו אם `ANTHROPIC_API_KEY` תופס את מקומו של מושב OAuth.** זו סיבה נפוצה ל“שום דבר לא עובד, תוקף המפתח פג”:

<figure>
<blockquote>
<p>כאשר `ANTHROPIC_API_KEY` מוגדר ואישרתם אותו, Claude Code משתמש במפתח הזה במקום בפרטי הכניסה של מנוי OAuth.</p>
</blockquote>
<figcaption>— תיעוד Anthropic - פתרון בעיות התקנה, https://code.claude.com/docs/en/troubleshoot-install</figcaption>
</figure>

פתרון: הריצו `unset ANTHROPIC_API_KEY` במושב ה-shell הנוכחי, או הסירו אותו מ-`~/.zshrc` / `~/.bashrc`.

4.  **תקנו רק את ההתקנה שהאבחון מזהה; שמרו קודם את כל מצב המשתמש.** כשל במצב בטוח או דוח doctor לא מכריע אינם מוכיחים שצריך להסיר נתוני משתמש. עצרו את כל הפעלות Claude וכותבים אחרים לפני גיבוי עקבי. שמרו על אותו חשבון Unix, ‏HOME, מאגר פרטי הגישה של מערכת ההפעלה וחשבון Anthropic; אל תחליפו מפתחות ואל תיצרו זהות חלופית.

דוגמת הגיבוי הבאה מיועדת ל**Linux עם GNU tar**. ב-macOS או ב-Windows השתמשו בכלי גיבוי ששומר ACLs, מאפיינים מורחבים, קישורים ומטא-נתונים של הפלטפורמה ואמתו שחזור לפני המשך; אל תניחו שדגלים ייחודיים ל-GNU פועלים שם. הארכיון מכיל פרטי גישה ותמלילי הפעלות: שמרו אותו פרטי ומחוץ למאגרים.

```bash
# 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 או מאגר פרטי גישה חיצוני אחר, ולכן שמרו על הזהויות האלה במקומן.

אם האבחון מזהה במפורש את **ההתקנה המקומית הישנה** כעותק המתנגש, העבירו רק אותה לתיקיית השחזור הפרטית במקום למחוק תצורה והפעלות:

```bash
# 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 רק אם האבחון מזהה אותה כהתקנה המתנגשת ובכוונתכם לשמור את ההתקנה המקורית. לאחר מכן השתמשו ב[מתקין המקורי המתועד](https://code.claude.com/docs/en/setup), בלי למחוק `.claude` או `.claude.json`:

```bash
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor
```

ב-Windows פקודת ההתקנה המקורית נשארת:

```powershell
irm https://claude.ai/install.ps1 | iex
```

**שחזור נפרד.** עצרו שוב כותבים. בדקו את סכום הביקורת של הארכיון וחלצו לתיקיית שחזור ריקה כמו למעלה; השוו בהצלחה לפני שימוש בקבצים. אם צריך לשחזר את ההתקנה הישנה שהועברה, ודאו קודם ש-`$HOME/.claude/local` אינו קיים, ואז העבירו את `$backup_dir/legacy-local` בחזרה לנתיב המדויק הזה. שחזרו קובץ הגדרות שאובחן מתוך החילוץ המאומת רק אחרי שמירת כל תחליף נוכחי; אל תדרסו את כל העץ בעיוורון. ההפעלות, הגדרות MCP והזהות המקורית נשמרות. תמונת מצב ב-Git לבדה אינה מכסה תמלילים מוחרגים או שאינם במעקב, פרטי גישה ומטא-נתונים של מערכת הקבצים.

## מה לא לעשות כש-Claude Code מתקלקל?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

שישה דפוסים שגויים שנמצאו במקרי התמיכה המתוארים: שינוי מפתחות לפני האבחון, איפוס מלא כצעד ראשון, בהלה בגלל שגיאת ממשק משתמש ב-hook, העלאת קוד היציאה של hook לפני תיקון הלוגיקה, עריכת `CLAUDE.md` ללא אמצעי ההגנה של מצב בטוח, והאמונה ש“Claude מתקן את ה-MCP של עצמו.” כל אחד מהם עולה שעות, ואף אחד מהם אינו הכרחי.

</div>

### אל תשנו מפתחות לפני האבחון

“ההרשאה לא עובדת” פירושו ב-90% מהמקרים או ש-`ANTHROPIC_API_KEY` תופס את מקומו של המנוי, או שיש באג ממשק משתמש של hook, או ש-MCP נכשל. החלפת מפתחות לא תפתור אף אחת מהבעיות האלה, אך תגרום לעוד שעה של השבתה: צריך לבטל את המפתח הישן, להנפיק חדש, להגדיר מחדש את CI בעזרתו ולעדכן את המשתנים בייצור. הריצו קודם `claude --safe-mode`. הוא עובד? אז הבעיה היא בהתאמות האישיות; אין צורך לגעת במפתחות.

### אל תבצעו איפוס מלא לפני מצב בטוח

מצב בטוח מספק סביבה מבודדת בתוך שנייה אחת. מחיקת `.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 משכתב את ההגדרה התקינה, הכול מתקלקל, ואז Claude מקדיש כמה תורות לאבחון הנזק שגרם—ובתוך כך מכלה את מכסת המושב. כש-MCP מתקלקל, **שחזרו את ההגדרה ידנית**; אל תשאירו את הטיפול לסוכן. חלק מארסנל הכלים שלו פועל גם דרך MCP, ו-MCP תקול פירושו מאבחן תקול.

## לאן ממשיכים אחרי שתיקנתם את התקלה?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="הנקודה המרכזית">

הנקודה המרכזית

אחרי ששחזרתם את Claude Code, הוסיפו מנגנוני מניעה כדי שלא יתקלקל שוב. לכל הפחות: `disableBypassPermissionsMode: "disable"` בהגדרות המשתמש, hooks שחוסמים את `.env` ואת `git push --force`, ו-sandbox לריצות אוטונומיות ארוכות. מדריך המניעה משלים את המדריך הזה.

</div>

לאחר ניתוח האירוע, אל תחזרו מיד לעבודה. ראשית הוסיפו מנגנוני מניעה כדי שהאירוע לא יחזור. אפשר לאבד שעות על second brain (התיקייה `business/` עם מבנה הפרויקט) ועל `CLAUDE.md`, וקשה לשחזר אותם ידנית—וזו סיבה טובה לעשות זאת. סט מינימלי:

1.  **`~/.claude/settings.json`** עם `permissions.disableBypassPermissionsMode: "disable"`—איסור ארכיטקטוני על מצב עקיפת הרשאות, כך ש-`--dangerously-skip-permissions` שיופעל בטעות פשוט לא יעבוד.
2.  **Hooks עבור `Read(./env*)`,‏ `Bash(git push --force)`,‏ `Write(./node_modules/**)`**—דברים שיש לאכוף כחוק, ולא כמשאלות.
3.  **תצורת sandbox לריצות אוטונומיות ארוכות** (`/loop`, ‏`/schedule`).
4.  **`/compact` עם כללים משלכם** לגבי מה להשליך מההקשר, כדי ש-Claude לא יכלה את עצמו.

תוכנית ההגנה המלאה בת ארבע השכבות מופיעה ב[מדריך “איך להגדיר את Claude Code כך שלא יתקלקל בפרויקט שלכם במהלך הלילה”](https://ailoot.ai/blog/he/claude-code-safe-overnight-setup/). מדריך אחד עוסק במניעה לפני הפעלת `/loop`; השני עוסק בשחזור אחרי ש-`/loop` כבר שבר משהו. זוג הגיוני.

<div class="section" role="doc-bibliography" aria-label="מקורות">

### מקורות

- [יומן השינויים של Anthropic Claude Code](https://code.claude.com/docs/en/changelog) - יומן שינויים רשמי המתאר את v2.1.166 (`fallbackModel`),‏ v2.1.169 (מצב בטוח, <bdi>/cd</bdi>),‏ v2.1.174 (תיקון כיווץ),‏ v2.1.176 (תיקון ענף git ב-<bdi>/cd</bdi>).
- [תיעוד Anthropic - הגדרת מודל](https://code.claude.com/docs/en/model-config) - הסעיפים “שרשראות מודלים חלופיים,” “בדיקת הגורם להפעלת הגיבוי,” “הגדרת המודל שלך.”
- [תיעוד Anthropic - פתרון בעיות התקנה והתחברות](https://code.claude.com/docs/en/troubleshoot-install) - התקנות מתנגשות, `claude doctor`, תפיסת `ANTHROPIC_API_KEY`.

</div>

חומרים מעשיים: [התיעוד של Ailoot](https://ailoot.ai/docs/).





חומרים וכלים נוספים: [Ailoot](https://ailoot.ai/).

## שאלות ותשובות: שחזור Claude Code: מצב בטוח, /cd ומודל חלופי | Ailoot

### האם כשל במצב בטוח אומר שצריך למחוק ~/.claude?

לא. עדיין צריך לחקור סיבות של התקנה, הרשאה, רשת ותשתית. דוח doctor לא מכריע אינו ראיה שצריך להסיר הגדרות או הפעלות; תקנו רק את השכבה שאובחנה.

### מה לשמור לפני תיקון התקנה?

עצרו כותבים וגבו את מצב Claude המלא, כולל הפעלות, תצורת תוספים ו-MCP, קבצים מוחרגים ומטא-נתונים של מערכת הקבצים. אמתו סכום ביקורת וחילוץ לפני המשך, שמרו על החשבון ומאגר פרטי הגישה הקיימים ושחזרו רק את השכבה שאובחנה בלי לדרוס מצב נוכחי בעיוורון.


## Ailoot · החברה ופורטפוליו הפרויקטים שלה

Ailoot נשענת על ניסיון תפעולי מצטבר, בסיס לקוחות רחב, שירות יציב ובקרה שוטפת של KPI.

החברה ופורטפוליו הפרויקטים שלה: מיליוני לקוחות; מכירות בהיקף של מיליארדים מדי חודש.

Ailoot משתמשת בניסיון התפעולי הזה כדי לספק גישת API ליכולות AI במוצרי לקוחות, בסוכנים, באפליקציות ובאוטומציות.
