Blog

Claude Code vymazáva históriu po 30 dňoch: ako si ju uložiť

Markdown

Kde sa ukladajú relácie Claude Code, ako nakonfigurovať cleanupPeriodDays a ako usporiadať externý archív pomocou rsync, launchd alebo cron.

Prečítať celý článok

Pomoc pri používaní služby nájdete v dokumentácii Ailoot.

Naozaj Claude Code vymazáva históriu relácií?

Kľúčové poznatky

Áno. Pri každom spustení Claude Code vymaže súbory relácií staršie ako 30 dní. Zodpovedá za to nastavenie cleanupPeriodDays v súbore ~/.claude/settings.json; jeho predvolená hodnota je 30. Vymazanie prebehne bez upozornenia, bez žiadosti o súhlas a bez možnosti obnoviť súbory.

Otvárate Claude Code, aby ste sa vrátili k relácii spred dvoch mesiacov — a je preč. Súbor bol úplne vymazaný z disku. Nejde o poruchu ani o zriedkavú chybu: takto funguje predvolený mechanizmus čistenia.

Čistenie riadi jedno nastavenie: cleanupPeriodDays. Jeho predvolená hodnota je 30. Pri každom spustení Claude Code prehľadá priečinok s históriou a vymaže všetko, čo je staršie než toto obdobie. Toto nastavenie som v súbore ~/.claude/settings.json vôbec nemal, takže sa používala predvolená hodnota a niektoré moje staršie relácie už boli preč.

V repozitári Anthropic je otvorených niekoľko hlásení chýb týkajúcich sa tohto problému a žiadne nebolo opravené.

Kde Claude Code ukladá históriu relácií?

Kľúčové poznatky

História každej relácie sa ukladá v súbore ~/.claude/projects/<project-path>/<session-id>.jsonl. Názov priečinka je absolútna cesta pracovného adresára, v ktorom ste spustili Claude Code, pričom lomky sú nahradené pomlčkami. Súbor .jsonl obsahuje celú konverzáciu, riadok po riadku: vaše výzvy, odpovede modelu, volania nástrojov a úpravy súborov. Práve túto pamäť čistenie vymazáva.

Históriu ľahko nájdete. Otvorte terminál a pozrite si obsah priečinka:

ls ~/.claude/projects/

Každý podpriečinok predstavuje samostatný projekt. Jeho názov zakóduje cestu: napríklad projekt v priečinku /Users/alex/dev/shop bude mať priečinok -Users-alex-dev-shop. Vnútri sa nachádzajú súbory relácií:

ls -lt ~/.claude/projects/-Users-alex-dev-shop/
# 3f8a1c2e-....jsonl   ← jedna relácia = jeden súbor
# a91b7d40-....jsonl

Každý súbor .jsonl je záznam po jednotlivých riadkoch: jeden riadok zodpovedá jednej udalosti relácie. Obsahuje viac než len text konverzácie. Uchováva logiku vašich rozhodnutí: prečo ste si vybrali konkrétnu štruktúru databázy, ktoré možnosti ste zavrhli, kde Claude urobil chybu a ako ste ju opravili.

V podstate je to denník vývoja projektu. Preto jeho strata bolí: neprídete o „čet“, ale o kontext, ktorý ste si budovali celé týždne. Štruktúru tohto kontextu som opísal v príručke „Claude Memory vs. CLAUDE.md“.

Prečo Anthropic vymazáva prepisy po 30 dňoch?

Kľúčové poznatky

Anthropic to odôvodňuje ochranou súkromia a bezpečnosťou. Súbory relácií sa ukladajú na disk ako obyčajný text a môžu obsahovať zdrojový kód, heslá a kľúče API. Uchovávať ich navždy predstavuje riziko: ak niekto ukradne notebook alebo získa prístup k disku, dostane sa ku všetkým týmto citlivým údajom. Obdobie 30 dní je kompromisom medzi „pokračovaním v nedávnej práci“ a „neuchovávaním tajomstiev na disku dlhšie, než je potrebné“.

Vymazávanie má svoje opodstatnenie a pred jeho úplným vypnutím sa oplatí mu porozumieť. Prepis je obyčajný text. Ak Claude počas relácie prečítal súbor .env, vložil kľúč do príkazu alebo ste do výzvy skopírovali heslo, všetko sa uložilo do súboru .jsonl ako obyčajný text. Čím dlhšie taký súbor zostáva na disku, tým väčšia je pravdepodobnosť, že jedného dňa unikne.

Anthropic to hovorí priamo: prepisy môžu obsahovať zdrojový kód, prihlasovacie údaje a ďalší citlivý materiál a ich uchovávanie na disku dlhšie, než je potrebné, predstavuje skutočné riziko pre súkromie. Obdobie 30 dní bolo zvolené ako kompromis.

Námietky komunity sa týkajú troch vecí: vymazávanie prebieha potichu (pri nastavovaní ani spustení sa nezobrazuje upozornenie), nežiada sa súhlas (nikto sa vás nepýta) a neexistuje možnosť obnovy (nepoužíva sa Kôš a nie je možné vrátiť zmeny). V issue #59248 vývojári žiadajú jednu vec: spravodlivejšie čistenie — upozornenie, obdobie na obnovu a menej agresívnu predvolenú lehotu.

Prečo môže samotný zálohovací skript spustiť vymazávanie?

Kľúčové poznatky

Čistenie rozhoduje o tom, čo vymazať, podľa času zmeny súboru (mtime). Nekontroluje skutočnú poslednú aktivitu v relácii. Každý proces, ktorý sa dotkne súboru .jsonl — synchronizácia do cloudu, rsync, editor či skript — môže zmeniť jeho mtime a spôsobiť, že čerstvá relácia bude vyzerať zastarano. Pri ďalšom spustení Claude Code reláciu vyhodnotí ako starú a vymaže ju. Paradoxne, naivný pokus zálohovať históriu v spravovanom priečinku urýchľuje jej stratu.

Toto je najzradnejšia časť a nachytá ľudí, ktorí sa pokúšajú chrániť svoje údaje sami. Čistenie sleduje mtime, časovú značku poslednej zmeny súboru. Predpokladá, že mtime odráža čas, keď ste v relácii naposledy pracovali. V praxi ho môže zmeniť čokoľvek: synchronizačný klient Dropboxu alebo iCloudu, rsync, antivírusový softvér, indexovací nástroj či váš vlastný zálohovací skript.

Tu je háčik. Rozhodnete sa uložiť históriu a nastavíte cloudovú synchronizáciu priečinka ~/.claude/projects/. V určitom okamihu synchronizačná služba prepíše súbor a nastaví jeho mtime na skorší dátum (môže sa to stať pri obnove z kópie v cloude). Claude Code pri spustení uvidí „starý“ súbor a vymaže ho. Chceli ste ho zachrániť, ale urýchlili ste jeho vymazanie.

Z toho vyplýva jediný záver: záloha musí byť mimo priečinka ~/.claude/projects/. Čistenie pôsobí iba v tomto priečinku. Kópia uložená mimo neho je mimo jeho dosahu. Riešenie postavím na tomto princípe.

Ako môžete okamžite zastaviť vymazávanie histórie?

Kľúčové poznatky

Stačí jedno nastavenie. Otvorte súbor ~/.claude/settings.json a nastavte cleanupPeriodDays na vysokú hodnotu — napríklad 3650 (desať rokov). V praxi sa tým automatické vymazávanie vypne: nič nebude staršie než tento limit. Dôležité: toto nastavenie chráni len to, čo ešte nebolo vymazané. Históriu, ktorú už čistenie vymazalo, nie je možné obnoviť. Preto treba konať skôr, než prídete o ďalšiu reláciu.

Zastavte vymazávanie v troch krokoch:

  1. Otvorte súbor nastavení: ~/.claude/settings.json (ak súbor neexistuje, vytvorte ho).
  2. Pridajte nastavenie cleanupPeriodDays s vysokou hodnotou:
{
  "cleanupPeriodDays": 3650
}
  1. Uložte súbor. Nastavenie sa prejaví pri ďalšom spustení Claude Code.

Hodnota 3650 znamená desať rokov: v praxi sa už vymazávanie nebude vykonávať. Ak chcete čistenie zachovať, ale dopriať si viac času, nastavte hodnotu 365 (jeden rok); potom zmiznú len relácie staršie než rok. Pomocou tohto príkazu môžete skontrolovať, či sa nastavenie načítalo:

grep cleanupPeriodDays ~/.claude/settings.json

Jedna ľahko prehliadnuteľná výhrada: predĺženie lehoty NEOBNOVÍ to, čo už bolo vymazané. Čistenie sa spúšťa pri štarte a všetko, čo bolo vymazané pri predchádzajúcich spusteniach, je navždy preč. Preto to nastavte ako prvé — zabráni to budúcim stratám, ale nevráti to, čo už bolo vymazané. Ak sa chcete vyhnúť strate histórie Claude Code aj svojho projektu v dôsledku náhodného príkazu, pozrite si príručku „Ako nakonfigurovať Claude Code, aby nepoškodil váš projekt“.

História vašich relácií je súčasťou druhého mozgu vášho projektu: obsahuje logiku rozhodnutí, ktorú ste nikde inde nezaznamenali. cleanupPeriodDays zachráni súbory, ale nepremení ich na systém, v ktorom o šesť mesiacov nájdete to, čo potrebujete.

Ako automaticky archivovať históriu mimo čisteného priečinka?

Kľúčové poznatky

Kopírujte relácie do archívu MIMO priečinka ~/.claude/projects/, kde sa na ne čistenie nevzťahuje. Jednoduché spustenie rsync -a do samostatného adresára raz denne stačí: nové súbory sa pridajú a staré zostanú. Keďže archív je mimo tohto priečinka, neovplyvní ho ani cleanupPeriodDays, ani chyba s mtime. Spúšťanie automatizujte pomocou launchd (macOS) alebo cron (Linux) a história sa bude hromadiť sama.

Myšlienka je jednoduchá: nechajte Claude Code, nech si so svojím priečinkom robí, čo chce, a vy si uchovávajte samostatný archív mimo neho. Je chránený pred týmto čistením, no stále ho môže zničiť porucha disku, náhodné vymazanie či neúspešná kópia. Nastavte to takto:

  1. Vytvorte archívny priečinok mimo spravovaného adresára:
mkdir -p ~/claude-history-archive
  1. Skopírujte tam svoju súčasnú históriu. Príznak -a zachováva štruktúru a časové značky; --ignore-existing ponechá už skopírované súbory nedotknuté:
rsync -a ~/.claude/projects/ ~/claude-history-archive/
  1. Automatizujte spúšťanie raz denne. V macOS použite launchd. Vytvorte súbor ~/Library/LaunchAgents/com.example.claudearchive.plist:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.example.claudearchive</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/rsync</string>
    <string>-a</string>
    <string>/Users/YOUR_NAME/.claude/projects/</string>
    <string>/Users/YOUR_NAME/claude-history-archive/</string>
  </array>
  <key>StartInterval</key>
  <integer>86400</integer>
</dict>
</plist>
  1. Načítajte agenta, aby bežal na pozadí:
launchctl load ~/Library/LaunchAgents/com.example.claudearchive.plist

V Linuxe sa to isté nastaví jedným riadkom v crontabe (crontab -e):

0 3 * * * rsync -a ~/.claude/projects/ ~/claude-history-archive/

Prečo to funguje, keď synchronizácia z predchádzajúcej časti zlyháva? Archív je MIMO priečinka ~/.claude/projects/, takže ho čistenie vôbec nevidí. Kopírovanie prebieha jedným smerom (z aktívneho priečinka do archívu) a mtime aktívnych súborov sa nemení — chyba s mtime sa teda neprejaví. Aj keď Claude Code zajtra vymaže reláciu zo svojho priečinka, jej kópia zostane v archíve.

Ako môžete z archívu relácií vytvoriť vyhľadávateľný druhý mozog?

Kľúčové poznatky

Uložte archív pod správu systému git a získate verzovanú, plne prehľadávateľnú databázu všetkých svojich relácií. Spustite git init v priečinku archívu a potom každý deň git add -A && git commit, aby ste získali históriu zmien a ochranu pred náhodným prepísaním. Minulé relácie môžete vyhľadávať bežným grepom a štruktúrovaný obsah získavať pomocou jq, pretože .jsonl je JSON oddelený po riadkoch. Archív sa tak zmení na praktický nástroj.

Samotné zhromažďovanie súborov nestačí — potrebujete k nim mať prístup. Dva kroky zmenia archív na funkčný nástroj.

Najprv ho verzujte pomocou git. Inicializujte repozitár v priečinku archívu:

cd ~/claude-history-archive
git init
git add -A && git commit -m "Prvá snímka histórie Claude Code"

Pridajte git add -A && git commit do toho istého každodenného spustenia ako rsync. Teraz máte históriu verzií: môžete vidieť, čo a kedy pribudlo, a jedným príkazom vrátiť náhodné prepísanie.

Po druhé, vyhľadávajte. Súbory .jsonl obsahujú JSON oddelený po riadkoch, takže na nich môžete používať známe nástroje. Nájdite, v ktorej relácii sa diskutovalo o konkrétnej téme:

grep -rl "migrácia databázy" ~/claude-history-archive/

Z relácie vyťažte iba text svojich výziev (pomocou jq, keďže ide o JSON):

jq -r 'select(.type=="user") | .message.content' session.jsonl

V tejto chvíli začne história vašich relácií fungovať ako druhý mozog projektu: databáza, v ktorej v priebehu pár sekúnd zistíte, „ako sme o tom rozhodli v marci“. Samostatný rozbor toho, kam v relácii smeruje kontext a ako ho spravovať, nájdete v príručke „Kam smerujú tokeny v Claude Code“.

Môžete obnoviť relácie, ktoré už boli vymazané?

Kľúčové poznatky

Neexistuje vstavaný spôsob. Claude Code nepresúva vymazané súbory do Koša ani neuchováva možnosť návratu; súbor je navždy preč. Jedinou šancou sú externé kópie vytvorené PRED vymazaním: snímka Time Machine v macOS, história verzií OneDrive alebo Dropboxu či ručná záloha. Ak nič z toho neexistuje, relácia sa stratila. Preto treba ochranu nastaviť vopred — skôr, než bude čo stratiť.

Úprimná odpoveď: pravdepodobne nie. Claude Code nemá funkciu obnovy, Kôš ani denník vrátenia zmien pre vymazané prepisy. Súbor jednoducho zmizne z disku.

Je tu jedna možnosť: zálohy systému, ak boli vopred zapnuté:

  1. macOS Time Machine — ak snímka zachytila priečinok ~/.claude/projects/ pred vymazaním, môžete súbor obnoviť zo zálohy k požadovanému dátumu.
  2. História verzií OneDrive / Dropboxu — ak sa priečinok synchronizoval so zapnutou históriou verzií, vyhľadajte súbor v histórii verzií cloudu (nezabudnite však na pascu s mtime: synchronizácia mohla vymazanie aj spustiť).
  3. Ručné kópie — akékoľvek rsync/cp, ktoré ste ručne spustili do umiestnenia mimo spravovaného priečinka.

Ak nič z toho neexistovalo, relácia je preč. A nie je to nič výnimočné: jeden autor hlásenia chyby v repozitári Anthropic mal poškodených 26 z 38 záznamov, čo predstavovalo mesiace práce. Jedinou spoľahlivou ochranou je tá, ktorá bola zavedená PRED stratou. Nastavte cleanupPeriodDays a automatické archivovanie ešte dnes, kým je stále čo zachraňovať.

Akú hodnotu nastaviť pre cleanupPeriodDays?

Kľúčové poznatky

Väčšina ľudí by mala použiť 3650 (desať rokov, čím sa vymazávanie prakticky vypne) a pridať externý automatický archív. Predvolenú hodnotu 30 ponechajte iba vtedy, ak históriu nepotrebujete a dôležitejšie je neuchovávať tajomstvá na disku. Hodnota 365 je rozumným kompromisom s každoročným čistením. Ďalšou možnosťou je neukladať históriu vôbec: použite premennú prostredia CLAUDE_CODE_SKIP_PROMPT_HISTORY alebo príznak --no-session-persistence, slúži to však na opačný účel.

Je tu jedno nastavenie, ale môže znamenať viacero vecí. Porovnajte možnosti a vyberte si podľa svojho spôsobu používania:

HodnotaČo robíPre koho sa hodí
30 (predvolená)Pri spustení vymaže relácie staršie ako 30 dníNepotrebujete históriu; dôležitejšie je neukladať citlivé údaje na disk
365Uchováva ročnú históriu a potom ju raz ročne vyčistíPotrebujete nedávnu históriu, ale nie neobmedzený archív
3650Prakticky vypne vymazávanieChcete uchovať všetko + externý archív (odporúča sa)
CLAUDE_CODE_SKIP_PROMPT_HISTORYVôbec neukladá históriu na diskMaximálne súkromie; históriu vôbec nepotrebujete

Dôležitá bezpečnostná výhrada: ak nastavíte 3650 a uchováte všetko, súhlasíte s ukladaním prepisov, ktoré môžu obsahovať kľúče a kód, na disk. Je to vedomý kompromis: pohodlie archívu oproti riziku. Riziko minimalizujte: uchovávajte archív na šifrovanom disku (FileVault v macOS), neukladajte ho do verejného cloudu a neodovzdávajte ho do verejného repozitára git. Pripravil som samostatnú príručku o tom, aké údaje môžu uniknúť cez Claude Code: „Zabezpečenie údajov v Claude Code“.

Čo urobiť dnes: kontrolný zoznam

Kľúčové poznatky

Tieto kroky znižujú straty histórie: predĺžte uchovávanie cez cleanupPeriodDays: 3650, kopírujte relácie mimo ~/.claude/projects/ a archív verzujte. Pred čistením Claude Code sú chránené iba úspešne skopírované súbory. Pri úspešných denných behoch zostáva nearchivovaný až deň nedávnych zmien; neúspešné či vynechané behy medzeru predĺžia. Kópia na rovnakom disku nechráni pred poruchou disku.

Ochranu nastavte krok za krokom:

  1. Nastavte cleanupPeriodDays: 3650 v súbore ~/.claude/settings.json — predĺžili ste dobu uchovávania.
  2. Vytvorte priečinok ~/claude-history-archive mimo spravovaného priečinka a prvýkrát spustite rsync -a.
  3. Naplánujte každodenné spúšťanie pomocou launchd (macOS) alebo cron (Linux).
  4. Inicializujte git v archíve a pridajte git add -A && git commit do toho istého spustenia.
  5. Skontrolujte, že je archív na šifrovanom disku a nesynchronizuje sa s verejným cloudom.
  6. Overte úspešnú kópiu každého plánovaného behu, prezrite nedávnu archivovanú reláciu a pravidelne obnovte vzorku do samostatného dočasného priečinka na kontrolu čitateľnosti.
  7. Ak potrebujete ochranu pred stratou zariadenia či disku, uchovávajte aj nezávisle uloženú zálohu s primeraným prístupom a otestujte jej obnovu. História Gitu na tom istom disku nie je nezávislá záloha.

História relácií je len jednou vrstvou kontextu, vďaka ktorej je Claude spoľahlivý.

Spoznajte Ailoot.

Viac podrobností

Otázky a odpovede: Claude Code vymazáva históriu po 30 dňoch: ako si ju uložiť

Zaručuje denný archív, že sa žiadna relácia nestratí?

Nie. Pred čistením spravovaného priečinka chráni úspešne skopírované súbory. Pri úspešných denných behoch môže chýbať až deň nedávnych zmien; neúspešné behy medzeru zväčšia a kópia na rovnakom disku môže zlyhať spolu s originálom.

Ako overiť použiteľnosť archívu?

Potvrďte úspešné plánované kópie, prezrite nedávnu archivovanú reláciu a pravidelne obnovte vzorku do samostatného dočasného priečinka. Pre ochranu pred stratou zariadenia či disku otestujte aj zálohu uloženú nezávisle od originálu.

Všetky články