גיבוי שיחות קלוד קוד (Claude Code): איך לסנכרן בין מחשבים ולא לאבד כלום
על המחשב שלי שמורות 1,388 שיחות עם Claude Code, כמעט ג'יגה שלם של עבודה מארבעים פרויקטים. עד השבוע כל זה היה קיים בעותק אחד בלבד. וזה עוד לא החלק המדאיג.

הידעת?
Claude Code מוחק שיחות ישנות אוטומטית אחרי 30 יום, כברירת מחדל, בלי לשאול. ההגדרה cleanupPeriodDays בקובץ settings.json שולטת בזה, ושורה אחת מאריכה את השמירה לעשר שנים.
על המחשב שלי שמורות 1,388 שיחות עם Claude Code, כמעט ג'יגה שלם של עבודה מארבעים פרויקטים. עד השבוע כל זה היה קיים בעותק אחד בלבד. וזה עוד לא החלק המדאיג.
החלק המדאיג כתוב בתיעוד הרשמי: Claude Code מוחק שיחות ישנות אוטומטית אחרי 30 יום, כברירת מחדל, בלי לשאול. במדריך הזה נסגור את שתי הפרצות: נבטל את המחיקה האוטומטית, ונקים גיבוי בענן שמאפשר להמשיך את אותן שיחות בדיוק מכל מחשב.
בקצרה השיחות של Claude Code נשמרות רק מקומית בתיקייה
~/.claude/projects, ונמחקות אוטומטית אחרי 30 יום (הגדרתcleanupPeriodDays). הפתרון: להאריך את תקופת השמירה, להפוך את התיקייה לריפו GitHub פרטי עם Git LFS (כי GitHub חוסם קבצים מעל 100MB), ולסנכרן עם פקודה אחת בשםclaude-sync. במחשב חדש עושים clone וממשיכים לעבוד כרגיל.
איפה קלוד קוד שומר את השיחות?
כל השיחות נשמרות מקומית בלבד, בתיקייה ~/.claude/projects. אין עותק בענן, ואין כפתור "ייצוא הכל".
בתוך התיקייה, כל תיקיית עבודה מקבלת תת תיקייה משלה, וכל שיחה היא קובץ .jsonl נפרד. אצלי המדידה הראתה: 1,388 קבצי שיחה, בנפח 968MB, על פני כ־40 פרויקטים.
מה זה קובץ jsonl של Claude Code? יומן טקסט של שיחה אחת: כל שורה היא אירוע (הודעה, הרצת כלי, תוצאה). כשמריצים
claude --resume, הכלי קורא את הקובץ ומשחזר את השיחה. אם הקובץ קיים, השיחה ניתנת להמשך. אם לא, היא אבודה.
האם קלוד קוד מוחק שיחות? (כן, ואת זה חייבים לתקן קודם)
כן. לפי התיעוד הרשמי של Anthropic, ההגדרה cleanupPeriodDays מוחקת קבצי שיחה ישנים בעת ההפעלה, וברירת המחדל היא 30 יום.
המשמעות בעברית פשוטה: השיחה שבה פתרתם באג מסובך לפני חודשיים כבר לא קיימת, אלא אם שיניתם את ההגדרה. התיקון הוא שורה אחת בקובץ ~/.claude/settings.json:
{
"cleanupPeriodDays": 3650
}
מרגע זה ההיסטוריה נשמרת עשר שנים קדימה. עכשיו אפשר לדבר על גיבוי.
איך מגבים את השיחות לענן? המתכון המלא
העיקרון: הופכים את ~/.claude/projects לריפו Git שנדחף ל־GitHub פרטי. יש רק מכשול אחד בדרך, ושמו 100 מגה.
מה זה Git LFS? Git Large File Storage: הרחבה של Git שמאחסנת קבצים גדולים בשרת נפרד ושומרת בריפו רק מצביע קטן. GitHub חוסם קבצים בודדים מעל 100MB (ומזהיר כבר מעל 50MB, לפי GitHub Docs), ושיחות ארוכות של Claude Code חוצות את הגבול הזה בקלות. אצלי שתי שיחות הגיעו ל־240MB ו־154MB.
שלב 1: התקנה והקמה (פעם אחת, במחשב הראשי)
brew install git-lfs
cd ~/.claude/projects
git lfs install --local
git init
git lfs track "*.jsonl"
git add -A
git commit -m "backup: initial snapshot"
gh repo create claude-history --private --source=. --remote=origin
git branch -M main
git push -u origin main
הדחיפה הראשונה מעלה את כל הנפח ויכולה לארוך כמה דקות. אצלי: 985MB ב־1,388 קבצים.
אבטחה, בלי פשרות: קובצי השיחה מכילים את כל מה שעבר בטרמינל, כולל קוד, נתיבים ולפעמים סודות שהוזכרו בטעות. הריפו חייב להיות Private. אל תעלו אותו לריפו ציבורי לעולם.
שלב 2: פקודת סנכרון אחת, claude-sync
במקום לזכור רצף פקודות, יוצרים סקריפט קצר שרץ מכל מחשב ועושה הכל: שומר שיחות חדשות, מושך שינויים ממחשבים אחרים ודוחף לענן.
#!/usr/bin/env bash
set -euo pipefail
cd ~/.claude/projects
git add -A
if ! git diff --cached --quiet; then
git commit -qm "backup: sync $(date '+%Y-%m-%d %H:%M')"
fi
git pull --rebase --autostash --no-edit origin main
git lfs pull
git push -q origin main
echo "Conversations synced."
שומרים אותו בשם claude-sync בתיקייה שב־PATH (למשל /opt/homebrew/bin) ומריצים chmod +x עליו.
הרגע שבו זה כמעט נשבר אצלי
בהרצה האוטומטית הראשונה הסקריפט קרס עם השגיאה cannot pull with rebase: You have unstaged changes. הסיבה מפתיעה: השיחה הפעילה של Claude Code כותבת לקובץ של עצמה תוך כדי הסנכרון, אז בין ה־commit ל־pull הקובץ "השתנה" שוב.
הפתרון הוא הדגל --autostash שכבר מופיע בסקריפט למעלה: הוא מחביא את השינוי הרץ, מבצע את המשיכה, ומחזיר אותו. בלעדיו הסנכרון ייכשל בכל פעם שתריצו אותו תוך כדי עבודה.
שלב 3: סנכרון אוטומטי יומי (macOS)
כדי שלא לשכוח, קובעים ריצה יומית דרך launchd, המנגנון המובנה של macOS. יוצרים קובץ בשם ~/Library/LaunchAgents/me.tzedek.claude-sync.plist שמריץ את claude-sync כל ערב בשעה קבועה, וטוענים אותו עם launchctl bootstrap. אם המחשב ישן בשעת הריצה, launchd מריץ ברגע שהוא מתעורר.
איך ממשיכים את השיחות במחשב אחר?
שלושה צעדים חד פעמיים, ומאותו רגע עובדים כרגיל: מתקינים git-lfs, משכפלים את הריפו לאותו נתיב, ומושכים את קבצי ה־LFS.
brew install git-lfs
git clone https://github.com/<user>/claude-history.git ~/.claude/projects
cd ~/.claude/projects
git lfs pull
מכאן פותחים claude בתיקיית פרויקט, מריצים claude --resume, ורואים את כל השיחות של הפרויקט, בדיוק כמו במחשב המקורי.
המלכודת שכולם נופלים בה: Claude Code מקשר שיחה לפרויקט לפי הנתיב המלא. אם במחשב הישן הפרויקט ישב ב־
/Users/dana/myappובחדש הוא ב־/Users/dan/myapp, השיחות לא יופיעו. שם המשתמש ונתיבי הפרויקטים חייבים להיות זהים בשני המחשבים.
שגרת העבודה בין שני מחשבים
הכלל פשוט: מחשב אחד בכל רגע.
- מסיימים לעבוד במחשב א': מריצים
claude-sync. - עוברים למחשב ב': מריצים
claude-syncלפני שמתחילים. - עובדים, ובסוף שוב
claude-sync.
עבודה בו זמנית על שניים יוצרת קונפליקטים בקבצים, ואת האוטומציה היומית כדאי להגדיר רק במחשב הראשי.
כמה זה עולה?
הריפו הפרטי חינם. המכסה החינמית של Git LFS היא כ־1GB אחסון ו־1GB תעבורה בחודש (מקור: GitHub Docs), וזה נגמר מהר: LFS מעלה כל קובץ שהשתנה במלואו מחדש, בלי דלתא, כך שסנכרון יומי של שיחות פעילות צורך תעבורה משמעותית. אם עברתם את המכסה, data pack של GitHub עולה 5 דולר לחודש ומקפיץ ל־50GB.
ומה זה אומר לעסק שלך
השיחות עם סוכן הקוד הן לא צ'אט, הן תיעוד של החלטות: למה בחרנו ארכיטקטורה מסוימת, איך פתרנו את הבאג ההוא, מה סוכם מול הלקוח. ארגון שמאבד אותן אחרי 30 יום מאבד ידע ארגוני אמיתי.
ההשקעה כאן היא חצי שעה חד פעמית ו־5 דולר בחודש, מול היכולת לשחזר כל החלטה טכנית, להמשיך עבודה מכל עמדה, ולצרף עובד חדש עם כל ההקשר ההיסטורי ביד. זה אחד מיחסי עלות־תועלת הטובים שראיתי בתשתית פיתוח.
שאלות נפוצות
איפה קלוד קוד שומר את השיחות?
בתיקייה ~/.claude/projects, מקומית בלבד, כקובצי jsonl מחולקים לפי תיקיית עבודה. אין עותק בענן כברירת מחדל.
האם קלוד קוד מוחק שיחות ישנות?
כן. ההגדרה cleanupPeriodDays מוחקת קבצים ישנים בעת ההפעלה, וברירת המחדל היא 30 יום. מאריכים אותה ב־settings.json.
למה לא לגבות עם iCloud או Dropbox?
אפשר, וזה שקוף. אבל סנכרון קבצים אוטומטי על תיקייה שכלי חי כותב אליה מזמין קונפליקטים, במיוחד עם שני מחשבים. עם Git אתם שולטים מתי מסנכרנים, ומקבלים גם היסטוריית גרסאות.
האם זה קשור ל־Claude Code בדפדפן?
לא. המדריך מסנכרן את היסטוריית הטרמינל המקומית. סשנים של claude.ai/code חיים בענן של Anthropic ממילא, אבל הם לא מייבאים את ההיסטוריה המקומית הקיימת.
מה עוד שווה לגבות חוץ מהשיחות?
את קובצי ההגדרות: CLAUDE.md הגלובלי, settings.json וסקריפט הסנכרון עצמו. אצלי הם יושבים בתיקיית _config בתוך אותו ריפו, כך שמחשב חדש קם מ־clone אחד.
שורה תחתונה
ברירת המחדל של Claude Code היא עותק אחד, מקומי, שנמחק אחרי 30 יום. שלושה תיקונים הופכים את זה לנכס: הארכת cleanupPeriodDays, ריפו GitHub פרטי עם Git LFS, ופקודת claude-sync אחת שרצה כל ערב לבד. חצי שעה של הקמה, וההיסטוריה שלכם הופכת מנכס שביר לתשתית שאפשר לבנות עליה.
יעקב צדק, מרצה, יועץ ומטמיע AI בארגונים, ומוביל את קהילת Claude Code (קלוד קוד) הגדולה בישראל. הפקודות במדריך נבדקו על macOS עם Homebrew, Git ו־GitHub CLI, והמספרים נמדדו על הסביבה שלי.
קורס במתנה עם ברכה אישית מכם — מסירה מיידית או בתאריך שתבחרו, וגישה לכל החיים.