# Claude Code maže historii po 30 dnech: jak si ji uložit

> Kde jsou uloženy relace Claude Code, jak nastavit cleanupPeriodDays a jak uspořádat externí archiv pomocí rsync, launchd nebo cron.

Source: https://ailoot.ai/blog/cs/claude-code-history-30-days/
Canonical: https://ailoot.ai/blog/cs/claude-code-history-30-days/
Language: cs
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-056
Revision: sha256-74b127659654856d82306a8c1295636cfca55d81c2242361c8938ca3212b4e25


Nápovědu k používání služby najdete v [dokumentaci Ailoot](https://ailoot.ai/docs/).



## Maže Claude Code opravdu historii relací?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Ano. Při každém spuštění Claude Code smaže soubory relací starší než 30 dní. Odpovídá za to nastavení `cleanupPeriodDays` v `~/.claude/settings.json`; jeho výchozí hodnota je `30`. Mazání probíhá bez varování, bez žádosti o souhlas a bez možnosti soubory obnovit.

</div>

Otevřete Claude Code, abyste se vrátili k relaci z doby před dvěma měsíci — a ona je pryč. Soubor byl z disku úplně smazán. Nejde o závadu ani o vzácnou chybu: tak funguje výchozí mechanismus čištění.

Čištění řídí jedno nastavení: `cleanupPeriodDays`. Jeho výchozí hodnota je `30`. Při každém spuštění Claude Code prohledá složku s historií a smaže vše, co je starší než toto období. Toto nastavení jsem ve svém `~/.claude/settings.json` vůbec neměl, takže platila výchozí hodnota a některé mé starší relace už byly pryč.

V repozitáři Anthropic je otevřeno několik hlášení chyb týkajících se tohoto problému a žádné z nich nebylo vyřešeno.

## Kam Claude Code ukládá historii relací?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Historie každé relace se ukládá do `~/.claude/projects/<project-path>/<session-id>.jsonl`. Název složky tvoří absolutní cesta pracovního adresáře, ve kterém jste spustili Claude Code, přičemž lomítka jsou nahrazena pomlčkami. Soubor `.jsonl` obsahuje celou konverzaci, řádek po řádku: vaše zadání, odpovědi modelu, volání nástrojů a úpravy souborů. Právě tyto vzpomínky čištění maže.

</div>

Najít historii je snadné. Otevřete terminál a podívejte se na obsah složky:

```bash
ls ~/.claude/projects/
```

Každá podsložka představuje samostatný projekt. Její název zakóduje cestu: například projekt v `/Users/alex/dev/shop` bude mít složku `-Users-alex-dev-shop`. Uvnitř jsou soubory relací:

```bash
ls -lt ~/.claude/projects/-Users-alex-dev-shop/
# 3f8a1c2e-....jsonl   ← jedna relace = jeden soubor
# a91b7d40-....jsonl
```

Každý soubor `.jsonl` je řádkový záznam: jeden řádek odpovídá jedné události relace. Obsahuje víc než jen text konverzace. Uchovává logiku vašich rozhodnutí: proč jste zvolili určitou strukturu databáze, které možnosti jste zavrhli, kde Claude udělal chybu a jak jste ji napravili.

V podstatě jde o deník vývoje projektu. Proto je jeho ztráta tak bolestivá: nepřijdete o „chat“, ale o kontext, který jste budovali celé týdny. Strukturu tohoto kontextu popisuji v návodu [„Claude Memory vs. CLAUDE.md“](https://ailoot.ai/blog/cs/claude-memory-claude-md-auto-memory/).

## Proč Anthropic maže přepisy po 30 dnech?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Postoj Anthropic se opírá o soukromí a bezpečnost. Soubory relací se ukládají na disk v prostém textu a mohou obsahovat zdrojový kód, hesla i klíče API. Uchovávat je navždy představuje riziko: pokud vám někdo ukradne notebook nebo získá přístup k disku, dostane se ke všem těmto citlivým údajům. Třicetidenní lhůta má představovat kompromis mezi „navázáním na nedávnou práci“ a „neuchováváním tajemství na disku déle, než je nutné“.

</div>

Mazání má své opodstatnění a než ho úplně vypnete, stojí za to mu porozumět. Přepis je prostý text. Pokud Claude během relace četl soubor `.env`, vložil klíč do příkazu nebo jste zadali heslo do promptu, všechno se uložilo do `.jsonl` jako prostý text. Čím déle takový soubor zůstává na disku, tím větší je šance, že jednou unikne.

Anthropic to říká jasně: přepisy mohou obsahovat zdrojový kód, přihlašovací údaje a další citlivý materiál a jejich uchovávání na disku déle, než je nutné, představuje skutečné riziko pro soukromí. Třicetidenní lhůta byla zvolena jako kompromis.

Námitky komunity se týkají tří věcí: mazání probíhá potichu (při nastavení ani spuštění se nezobrazí žádné varování), chybí souhlas (nikdo se vás nezeptá) a soubory nelze obnovit (nepoužívá se Koš a neexistuje možnost vrácení změn). V issue \#59248 vývojáři žádají jediné: nastavit férové čištění — přidat varování a lhůtu pro obnovu a použít méně agresivní výchozí dobu.

## Proč může zálohovací skript sám spustit mazání?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Čištění určuje, co smazat, podle času poslední změny souboru (mtime). Nekontroluje skutečnou poslední aktivitu v relaci. Každý proces, který se dotkne souboru `.jsonl` — synchronizace s cloudem, rsync, editor nebo skript — může změnit jeho mtime, takže nová relace začne vypadat zastarale. Při příštím spuštění Claude Code relaci vyhodnotí jako starou a smaže ji. Paradox je v tom, že naivní pokus zálohovat historii uvnitř spravované složky urychlí její ztrátu.

</div>

Tohle je nejzáludnější část a nachytá lidi, kteří se snaží svá data chránit sami. Čištění sleduje mtime, tedy čas poslední změny souboru. Předpokládá, že mtime odpovídá době, kdy jste v relaci naposledy pracovali. V praxi ho může změnit cokoli: synchronizační klient Dropboxu nebo iCloudu, `rsync`, antivirový software, indexovací služba nebo váš vlastní zálohovací skript.

Tady je háček. Rozhodnete se uložit historii a nastavíte synchronizaci složky `~/.claude/projects/` s cloudem. Synchronizační služba někdy přepíše soubor a nastaví jeho mtime na dřívější datum (k tomu může dojít při obnovení z cloudové kopie). Claude Code při spuštění uvidí „starý“ soubor a smaže ho. Chtěli jste ho uchovat, ale urychlili jste jeho smazání.

Z toho plyne jediný závěr: **záloha musí být mimo `~/.claude/projects/`**. Čištění probíhá pouze uvnitř této složky. Kopie uložená mimo ni je mimo dosah čištění. Na tomto principu postavím řešení.

## Jak můžete okamžitě zastavit mazání historie?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Stačí jedno nastavení. Otevřete `~/.claude/settings.json` a nastavte `cleanupPeriodDays` na vysoké číslo — například `3650` (deset let). V praxi se tím automatické mazání vypne: nic nebude starší než stanovený limit. Důležité: toto nastavení chrání pouze to, co ještě nebylo smazáno. Historii, kterou už čištění vymazalo, nelze obnovit. Prvním krokem je tedy jednat dřív, než přijdete o další relaci.

</div>

Mazání zastavíte ve třech krocích:

1.  Otevřete soubor s nastavením: `~/.claude/settings.json` (pokud soubor neexistuje, vytvořte ho).
2.  Přidejte nastavení `cleanupPeriodDays` s vysokou hodnotou:

```json
{
  "cleanupPeriodDays": 3650
}
```

3.  Soubor uložte. Nastavení se uplatní při příštím spuštění Claude Code.

Hodnota `3650` znamená deset let: v praxi už k mazání nebude docházet. Pokud chcete čištění zachovat, ale dopřát si více času, nastavte `365` (jeden rok); pak budou mizet jen relace starší než rok. Zda se nastavení načetlo, můžete ověřit tímto příkazem:

```bash
grep cleanupPeriodDays ~/.claude/settings.json
```

Snadno přehlédnutelná výhrada: prodloužení období NEOBNOVÍ to, co už bylo smazáno. Čištění se spouští při startu a vše vymazané při předchozích spuštěních je nenávratně pryč. Proto byste toto nastavení měli provést jako první — zabrání budoucím ztrátám, ale nevrátí to, co už bylo smazáno. Pokud se chcete vyhnout ztrátě historie Claude Code i svého projektu kvůli nechtěnému příkazu, podívejte se na návod [„Jak nastavit Claude Code, aby nepoškodil váš projekt“](https://ailoot.ai/blog/cs/claude-code-safe-overnight-setup/).

Historie relací je součástí druhého mozku vašeho projektu: obsahuje logiku rozhodnutí, kterou jste nikde jinde nezaznamenali. `cleanupPeriodDays` soubory zachová, ale nevytvoří z nich systém, který vám umožní najít potřebné informace i za šest měsíců.



## Jak automaticky archivovat historii mimo čištěnou složku?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Kopírujte relace do archivu MIMO `~/.claude/projects/`, kde se na ně čištění nevztahuje. Jednoduché denní spuštění `rsync -a` do samostatné složky stačí: nové soubory se přidají a staré zůstanou. Protože je archiv mimo spravovanou složku, neovlivní ho ani `cleanupPeriodDays`, ani chyba s mtime. Spouštění automatizujte pomocí launchd (macOS) nebo cron (Linux) a vaše historie se bude postupně hromadit sama.

</div>

Princip je jednoduchý: nechte Claude Code, ať si se svou složkou dělá, co chce, a vy si udržujte samostatný archiv mimo ni. Chrání ho to před tímto čištěním, stále ale může zaniknout při selhání disku, náhodném smazání nebo neúspěšném kopírování. Nastavte ho takto:

1.  Vytvořte složku archivu mimo spravovaný adresář:

```bash
mkdir -p ~/claude-history-archive
```

2.  Zkopírujte do ní aktuální historii. Příznak `-a` zachová strukturu a časová razítka; `--ignore-existing` ponechá již zkopírované soubory beze změny:

```bash
rsync -a ~/.claude/projects/ ~/claude-history-archive/
```

3.  Automatizujte denní spuštění. V macOS použijte launchd. Vytvořte soubor `~/Library/LaunchAgents/com.example.claudearchive.plist`:

```xml
<?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>
```

4.  Načtěte agenta, aby běžel na pozadí:

```bash
launchctl load ~/Library/LaunchAgents/com.example.claudearchive.plist
```

V Linuxu se totéž provede jedním řádkem v crontabu (`crontab -e`):

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

Proč to funguje, když synchronizace z předchozí části selhává? Archiv je MIMO `~/.claude/projects/`, takže ho čištění vůbec nevidí. Kopírování probíhá jedním směrem (z živé složky do archivu) a mtime živých souborů se nemění — k chybě s mtime tedy nedochází. I kdyby Claude Code zítra smazal relaci ze své složky, její kopie zůstane v archivu.

## Jak proměnit archiv relací ve vyhledatelný druhý mozek?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Uložte archiv pod git a získáte verzovanou, plně prohledávatelnou databázi všech svých relací. Spusťte `git init` ve složce archivu a každý den použijte `git add -A && git commit`, abyste získali historii změn a ochranu před náhodným přepsáním. Minulé relace můžete prohledávat běžným grepem a pomocí jq z nich vytahovat strukturovaný obsah, protože `.jsonl` je JSON oddělený po řádcích. Díky tomu se z archivu stane praktický nástroj.

</div>

Pouhé hromadění souborů nestačí — potřebujete se k nim dostat. Dva kroky promění archiv ve funkční nástroj.

Nejprve ho spravujte ve verzích pomocí git. Inicializujte repozitář ve složce archivu:

```bash
cd ~/claude-history-archive
git init
git add -A && git commit -m "First snapshot of Claude Code history"
```

Přidejte `git add -A && git commit` do stejného denního běhu jako rsync. Získáte historii verzí: uvidíte, co se objevilo a kdy, a náhodné přepsání vrátíte jediným příkazem.

Druhým krokem je vyhledávání. Soubory `.jsonl` obsahují JSON oddělený po řádcích, takže s nimi můžete pracovat pomocí známých nástrojů. Zjistěte, ve které relaci se mluvilo o určitém tématu:

```bash
grep -rl "database migration" ~/claude-history-archive/
```

Ze relace vytáhněte pouze text svých zadání (pomocí jq, protože jde o JSON):

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

V tomto okamžiku začne historie relací sloužit jako druhý mozek projektu: databáze, ve které během několika sekund najdete „jak jsme o tom rozhodli v březnu“. Samostatný rozbor toho, kam v relaci míří kontext a jak ho spravovat, najdete v návodu [„Kam mizí tokeny v Claude Code“](https://ailoot.ai/blog/cs/where-claude-code-tokens-go/).

## Lze obnovit relace, které už byly smazány?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Vestavěný způsob neexistuje. Claude Code přesunuté soubory do Koše nedává a neuchovává možnost vrácení změn; soubor je nenávratně smazán. Jedinou šancí jsou externí kopie pořízené PŘED smazáním: snímek Time Machine v macOS, historie verzí OneDrive nebo Dropboxu, případně ruční záloha. Pokud nic z toho nemáte, relace je ztracena. Proto je třeba ochranu nastavit předem — dřív, než bude co ztratit.

</div>

Upřímná odpověď: pravděpodobně ne. Claude Code nemá funkci obnovy, Koš ani protokol vrácení smazaných přepisů. Soubor jednoduše zmizí z disku.

Existuje jedna možnost: systémové zálohy, pokud byly zapnuté předem:

1.  **macOS Time Machine** — pokud snímek zachytil `~/.claude/projects/` před smazáním, můžete soubor obnovit ze zálohy k požadovanému datu.
2.  **Historie verzí OneDrive / Dropboxu** — pokud byla složka synchronizovaná se zapnutou historií verzí, vyhledejte soubor v cloudové historii verzí (ale nezapomeňte na háček s mtime: synchronizace také mohla spustit smazání).
3.  **Ruční kopie** — jakýkoli příkaz `rsync`/`cp`, kterým jste soubory ručně zkopírovali někam mimo spravovanou složku.

Pokud nic z toho nebylo k dispozici, relace je pryč. A nejde o vzácný případ: jednomu autorovi chyby v repozitáři Anthropic se poškodilo 26 z 38 záznamů, což představovalo měsíce práce. Jedinou spolehlivou ochranou je ta, která je na místě PŘED ztrátou. Nastavte `cleanupPeriodDays` a automatické archivování už dnes, dokud je ještě co zachránit.

## Jakou hodnotu zvolit pro cleanupPeriodDays?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Pro většinu lidí je vhodné použít `3650` (deset let, což mazání prakticky vypne) a k tomu externí automatický archiv. Výchozí hodnotu `30` ponechte jen tehdy, pokud historii nepotřebujete a je pro vás důležitější neuchovávat tajemství na disku. Hodnota `365` je rozumný kompromis s každoročním čištěním. Další možností je historii vůbec nezapisovat: použijte proměnnou prostředí `CLAUDE_CODE_SKIP_PROMPT_HISTORY` nebo příznak `--no-session-persistence`, ale to slouží opačnému účelu.

</div>

Jedno nastavení může znamenat několik různých věcí. Porovnejte možnosti a zvolte tu, která odpovídá vašemu použití:

| Hodnota | Co dělá | Pro koho se hodí |
|----|----|----|
| `30` (výchozí) | Při spuštění smaže relace starší než 30 dní | Historii nepotřebujete a záleží vám víc na tom, aby citlivá data nezůstávala uložená na disku |
| `365` | Uchová rok historie a poté ji jednou ročně smaže | Potřebujete nedávnou historii, ale ne trvalý archiv |
| `3650` | Prakticky vypne mazání | Chcete uchovat vše + externí archiv (doporučeno) |
| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Vůbec nezapisuje historii na disk | Maximální soukromí; historii vůbec nepotřebujete |

Důležité bezpečnostní upozornění: pokud nastavíte `3650` a uchováte vše, souhlasíte s tím, že budete na disku ukládat přepisy, které mohou obsahovat klíče a kód. Jde o vědomý kompromis: pohodlí archivu versus riziko. Riziko omezíte takto: uchovávejte archiv na šifrovaném disku (FileVault v macOS), nedávejte ho do veřejného cloudu a neodesílejte ho do veřejného repozitáře git. Připravil jsem samostatný návod o tom, jaká data mohou uniknout přes Claude Code: [„Zabezpečení dat v Claude Code“](https://ailoot.ai/blog/cs/claude-code-data-access-safety/).

## Co udělat dnes: kontrolní seznam

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Hlavní poznatek

Tyto kroky snižují riziko ztráty historie: prodlužte uchovávání přes `cleanupPeriodDays: 3650`, kopírujte relace mimo `~/.claude/projects/` a archiv verzujte. Před čištěním Claude Code jsou chráněny pouze úspěšně zkopírované soubory. Při úspěšných denních bězích zůstává až den posledních změn bez archivu; selhání či vynechání běhu mezeru prodlužuje. Kopie na stejném disku nechrání před jeho selháním.

</div>

Ochranu nastavte krok za krokem:

1.  Nastavte `cleanupPeriodDays: 3650` v `~/.claude/settings.json` — tím zastavíte mazání.
2.  Vytvořte `~/claude-history-archive` mimo spravovanou složku a poprvé spusťte `rsync -a`.
3.  Naplánujte každodenní spuštění pomocí launchd (macOS) nebo cron (Linux).
4.  Inicializujte git v archivu a do stejného běhu přidejte `git add -A && git commit`.
5.  Zkontrolujte, že je archiv na šifrovaném disku a nesynchronizuje se do veřejného cloudu.
6.  U každého plánovaného běhu ověřte úspěšné kopírování, prohlédněte nedávnou archivovanou relaci a pravidelně obnovte vzorek do oddělené dočasné složky, abyste ověřili čitelnost.
7.  Má-li ochrana zahrnovat ztrátu zařízení či disku, uchovávejte nezávisle uloženou zálohu s odpovídajícím řízením přístupu a testujte i její obnovu. Historie Git na stejném disku není nezávislá záloha.

Historie relací je jen jednou vrstvou kontextu, díky které je Claude spolehlivý.

<div class="section" role="doc-bibliography" aria-label="Sources">

### Zdroje

- [Dokumentace Claude Code - nastavení settings.json (cleanupPeriodDays)](https://code.claude.com/docs/en/settings)
- [Dokumentace Claude Code - novinky](https://code.claude.com/docs/en/whats-new)

</div>





Poznejte [Ailoot](https://ailoot.ai/).

## Časté otázky

### Zaručuje denní archiv, že se žádná relace neztratí?

Ne. Chrání úspěšně zkopírované soubory před čištěním spravované složky. I při úspěšných denních bězích může chybět den posledních změn; selhání mezeru prodlužuje a kopie na stejném disku může zaniknout s originálem.

### Jak ověřit použitelnost archivu?

Ověřujte úspěšnost plánovaných kopií, prohlédněte nedávno archivovanou relaci a pravidelně obnovte vzorek do oddělené dočasné složky. Pro ztrátu zařízení či disku otestujte i zálohu uloženou nezávisle na originálu.


## Ailoot · Společnost a její portfolio projektů

Ailoot staví na dlouhodobých provozních zkušenostech, široké klientské základně, stabilních službách a průběžném sledování KPI.

Společnost a její portfolio projektů: miliony zákazníků; měsíční tržby v miliardách.

Ailoot využívá tyto provozní zkušenosti k poskytování přístupu přes API k funkcím AI v produktech zákazníků, agentech, aplikacích a automatizacích.
