Claude Code sletter historik efter 30 dage: sådan gemmer du den
MarkdownHvor Claude Code-sessioner gemmes, hvordan cleanupPeriodDays konfigureres, og hvordan du organiserer et eksternt arkiv med rsync, launchd eller cron.
Læs hele artiklen
Hvis du har brug for hjælp til tjenesten, kan du se Ailoot-dokumentationen.
Sletter Claude Code virkelig din sessionshistorik?
Vigtigste pointer
Ja. Hver gang Claude Code starter, sletter det sessionsfiler, der er ældre end 30 dage. Indstillingen cleanupPeriodDays i ~/.claude/settings.json står for dette; standardværdien er 30. Sletningen sker uden varsel, uden at bede om samtykke og uden mulighed for at gendanne filerne.
Du åbner Claude Code for at vende tilbage til en session fra for to måneder siden – og den er væk. Filen er blevet slettet helt fra disken. Det er ikke en fejl eller en sjælden bug: sådan fungerer standardmekanismen til oprydning.
Én indstilling styrer oprydningen: cleanupPeriodDays. Standardværdien er 30. Hver gang Claude Code starter, gennemgår det historikmappen og sletter alt, der er ældre end den periode. Jeg havde slet ikke denne indstilling i min ~/.claude/settings.json, hvilket betød, at standardværdien var gældende, og at nogle af mine ældre sessioner allerede var væk.
Flere fejlrapporter om dette er åbne i Anthropics repository, og ingen af dem er blevet rettet.
Hvor gemmer Claude Code sessionshistorikken?
Vigtigste pointer
Hver sessions historik gemmes i ~/.claude/projects/<project-path>/<session-id>.jsonl. Mappenavnet er den absolutte sti til arbejdsmappen, hvor du kørte Claude Code, med skråstreger erstattet af bindestreger. .jsonl-filen indeholder hele samtalen, én linje ad gangen: dine prompts, modellens svar, værktøjskald og filændringer. Det er netop denne hukommelse, som oprydningen sletter.
Det er nemt at finde historikken. Åbn en terminal, og se på indholdet af mappen:
ls ~/.claude/projects/
Hver undermappe er et separat projekt. Navnet afspejler stien: for eksempel bliver et projekt i /Users/alex/dev/shop til mappen -Users-alex-dev-shop. Indeni ligger sessionsfilerne:
ls -lt ~/.claude/projects/-Users-alex-dev-shop/
# 3f8a1c2e-....jsonl ← én session = én fil
# a91b7d40-....jsonl
Hver .jsonl er en log linje for linje: én linje svarer til én sessionshændelse. Den indeholder mere end samtaleteksten. Den rummer logikken bag dine beslutninger: hvorfor du valgte en bestemt databasestruktur, hvilke muligheder du afviste, hvor Claude begik en fejl, og hvordan du rettede den.
Kort sagt er det en udviklingsdagbog for projektet. Derfor gør tabet ondt: Du mister ikke en ”chat”, men kontekst, som du har opbygget over flere uger. Jeg har gennemgået, hvordan denne kontekst er struktureret, i guiden ”Claude Memory sammenlignet med CLAUDE.md”.
Hvorfor sletter Anthropic transskriptioner efter 30 dage?
Vigtigste pointer
Anthropics begrundelse handler om privatliv og sikkerhed. Sessionsfiler gemmes på disken i klartekst og kan indeholde kildekode, adgangskoder og API-nøgler. Det er en risiko at beholde dem for evigt: Hvis en bærbar computer bliver stjålet, eller nogen får adgang til disken, får de alle disse følsomme data. Perioden på 30 dage er deres balance mellem at ”genoptage nyligt arbejde” og ”ikke beholde hemmeligheder på disken længere end nødvendigt”.
Der er en begrundelse for sletningen, og det er værd at forstå den, før du slår det hele fra. En transskription er klartekst. Hvis Claude læste en .env-fil under en session, indsatte en nøgle i en kommando, eller du indsatte en adgangskode i en prompt, endte alt sammen i .jsonl-filen som klartekst. Jo længere sådan en fil ligger på disken, desto større er risikoen for, at den en dag bliver lækket.
Anthropic siger det ligeud: Transskriptioner kan indeholde kildekode, legitimationsoplysninger og andet følsomt materiale, og det udgør en reel risiko for privatlivet at beholde dem på disken længere end nødvendigt. Perioden på 30 dage blev valgt som et kompromis.
Communityets indvendinger handler om tre ting: Sletningen sker i stilhed (der vises ingen advarsel under opsætningen eller ved start), der indhentes ikke samtykke (du bliver ikke spurgt), og der er ingen gendannelse (papirkurven bruges ikke, og der er ingen tilbagerulning). I issue #59248 beder udviklerne om én ting: Gør oprydningen rimelig – giv en advarsel, en gendannelsesperiode og en mindre aggressiv standardperiode.
Hvorfor kan et sikkerhedskopieringsscript i sig selv udløse sletning?
Vigtigste pointer
Oprydningen afgør, hvad der skal slettes, ud fra filens ændringstidspunkt (mtime). Den kontrollerer ikke den faktiske seneste aktivitet i en session. Enhver proces, der berører en .jsonl-fil – synkronisering med skyen, rsync, en editor eller et script – kan ændre dens mtime, så en ny session ser forældet ud. Ved næste opstart af Claude Code vil sessionen blive betragtet som gammel og slettet. Paradokset er, at et naivt forsøg på at sikkerhedskopiere historikken i den administrerede mappe fremskynder dens tab.
Det er den mest besværlige del, og den går galt for folk, der prøver at beskytte deres data selv. Oprydningen ser på mtime, filens tidsstempel for seneste ændring. Den antager, at mtime viser, hvornår du sidst arbejdede i sessionen. I praksis kan hvad som helst ændre mtime: en Dropbox- eller iCloud-synkroniseringsklient, rsync, antivirussoftware, et indekseringsprogram eller dit eget sikkerhedskopieringsscript.
Her er fælden. Du beslutter dig for at gemme historikken og konfigurerer synkronisering af ~/.claude/projects/ med en skytjeneste. På et tidspunkt omskriver synkroniseringstjenesten en fil og angiver en tidligere dato som dens mtime (det kan ske, når en kopi gendannes fra skyen). Claude Code ser en ”gammel” fil ved opstart og sletter den. Du ville gemme den, men fremskyndede sletningen.
Der er kun én konklusion: Sikkerhedskopien skal ligge uden for ~/.claude/projects/. Oprydningen virker kun i denne mappe. En kopi, der ligger udenfor, er uden for oprydningens rækkevidde. Jeg bygger løsningen på dette princip.
Hvordan kan du stoppe sletningen af historikken med det samme?
Vigtigste pointer
Én indstilling. Åbn ~/.claude/settings.json, og angiv en stor værdi for cleanupPeriodDays – for eksempel 3650 (ti år). I praksis deaktiverer det automatisk sletning: Intet vil være ældre end grænsen. Vigtigt: Indstillingen beskytter kun det, der endnu ikke er blevet slettet. Historik, som oprydningen allerede har slettet, kan ikke gendannes. Derfor er det første skridt at handle, før du mister endnu en session.
Stop sletningen i tre trin:
- Åbn indstillingsfilen:
~/.claude/settings.json(opret filen, hvis den ikke findes). - Tilføj indstillingen
cleanupPeriodDaysmed en stor værdi:
{
"cleanupPeriodDays": 3650
}
- Gem filen. Indstillingen træder i kraft, næste gang Claude Code starter.
Værdien 3650 svarer til ti år: I praksis vil sletning ikke længere finde sted. Hvis du vil beholde oprydningen, men give historikken længere tid, skal du sætte værdien til 365 (ét år); så forsvinder kun sessioner, der er ældre end et år. Du kan kontrollere, om indstillingen er blevet indlæst, med denne kommando:
grep cleanupPeriodDays ~/.claude/settings.json
En vigtig detalje, som er nem at overse: Hvis du forlænger perioden, gendanner det IKKE det, der allerede er blevet slettet. Oprydningen kører ved opstart, og alt, der blev slettet ved tidligere kørsler, er væk for altid. Derfor bør du gøre dette først – det forhindrer fremtidige tab, men bringer ikke det, der allerede er slettet, tilbage. Hvis du vil undgå at miste din Claude Code-historik og dit projekt på grund af en utilsigtet kommando, kan du se guiden ”Sådan konfigurerer du Claude Code, så det ikke ødelægger dit projekt”.
Din sessionshistorik er en del af projektets anden hjerne: Den indeholder beslutningslogik, som du ikke har dokumenteret andre steder. cleanupPeriodDays gemmer filerne, men gør dem ikke til et system, der lader dig finde det, du har brug for, seks måneder senere.
Hvordan arkiverer du automatisk historik uden for oprydningsmappen?
Vigtigste pointer
Kopiér sessionerne til et arkiv UDEN FOR ~/.claude/projects/, hvor oprydningen ikke gælder. En simpel daglig rsync -a til en separat mappe klarer opgaven: Nye filer tilføjes, og gamle bliver liggende. Fordi arkivet ligger udenfor, påvirkes det hverken af cleanupPeriodDays eller mtime-fejlen. Automatisér kørslen med launchd (macOS) eller cron (Linux), så historikken automatisk samler sig.
Idéen er enkel: Lad Claude Code gøre, hvad det vil med sin mappe, mens du opbevarer et separat arkiv uden for den. Arkivet er beskyttet mod denne oprydningsmekanisme, men kan stadig gå tabt ved diskfejl, utilsigtet sletning eller mislykket kopiering. Sådan konfigurerer du det:
- Opret en arkivmappe uden for den administrerede mappe:
mkdir -p ~/claude-history-archive
- Kopiér din nuværende historik derover. Flaget
-abevarer strukturen og tidsstemplerne;--ignore-existinglader allerede kopierede filer være urørte:
rsync -a ~/.claude/projects/ ~/claude-history-archive/
- Automatisér kørslen én gang om dagen. På macOS bruger du launchd. Opret filen
~/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>
- Indlæs agenten, så den kører i baggrunden:
launchctl load ~/Library/LaunchAgents/com.example.claudearchive.plist
På Linux gør du det samme med én linje i crontab (crontab -e):
0 3 * * * rsync -a ~/.claude/projects/ ~/claude-history-archive/
Hvorfor virker dette, når synkroniseringen fra det forrige afsnit mislykkes? Arkivet ligger UDEN FOR ~/.claude/projects/, så oprydningen slet ikke kan se det. Kopieringen foregår i én retning (fra den aktive mappe til arkivet), og vi ændrer ikke mtime for de aktive filer – derfor opstår mtime-fejlen ikke. Selv hvis Claude Code sletter en session fra sin egen mappe i morgen, bliver kopien liggende i arkivet.
Hvordan kan du gøre dit sessionsarkiv til en søgbar anden hjerne?
Vigtigste pointer
Læg arkivet under git, så får du en versionsstyret, fuldt søgbar database over alle dine sessioner. Kør git init i arkivmappen, og kør derefter dagligt git add -A && git commit for at få en ændringshistorik og beskyttelse mod utilsigtet overskrivning. Du kan søge i tidligere sessioner med almindelig grep og udtrække struktureret indhold med jq, fordi .jsonl er linjeafgrænset JSON. Så bliver arkivet et praktisk værktøj.
Det er ikke nok bare at samle filer – du skal kunne få adgang til dem. To trin gør arkivet til et fungerende værktøj.
Først versionsstyrer du det med git. Initialisér et repository i arkivmappen:
cd ~/claude-history-archive
git init
git add -A && git commit -m "First snapshot of Claude Code history"
Føj git add -A && git commit til den samme daglige kørsel som rsync. Nu har du en versionshistorik: Du kan se, hvad der kom til, og hvornår, og fortryde en utilsigtet overskrivning med én kommando.
Dernæst søger du. .jsonl-filer er linjeafgrænset JSON, så du kan bruge velkendte værktøjer på dem. Find den session, hvor et bestemt emne blev diskuteret:
grep -rl "database migration" ~/claude-history-archive/
Udtræk kun teksten fra dine prompts fra en session (med jq, da det er JSON):
jq -r 'select(.type=="user") | .message.content' session.jsonl
Nu begynder din sessionshistorik at fungere som projektets anden hjerne: en database, hvor du på få sekunder kan finde ”hvordan vi traf denne beslutning i marts”. Se guiden ”Hvor bliver tokens af i Claude Code?” for en separat gennemgang af, hvor konteksten ender i en session, og hvordan du håndterer den.
Kan du gendanne sessioner, der allerede er blevet slettet?
Vigtigste pointer
Der findes ingen indbygget metode. Claude Code lægger ikke slettede filer i papirkurven og gemmer ingen tilbagerulning; filen slettes for altid. Den eneste mulighed er eksterne kopier, der blev lavet FØR sletningen: et Time Machine-øjebliksbillede på macOS, versionshistorik i OneDrive eller Dropbox eller en manuel sikkerhedskopi. Hvis ingen af disse findes, er sessionen tabt. Derfor skal beskyttelsen konfigureres på forhånd – før der er noget at miste.
Det ærlige svar er: sandsynligvis ikke. Claude Code har ingen gendannelsesfunktion, ingen papirkurv og ingen fortrydelseslog for slettede transskriptioner. Filen forsvinder ganske enkelt fra disken.
Der er én mulighed: systemsikkerhedskopier, hvis de blev aktiveret på forhånd:
- macOS Time Machine – hvis et øjebliksbillede indeholdt
~/.claude/projects/før sletningen, kan du hente filen fra sikkerhedskopien for den relevante dato. - OneDrive / Dropbox-versionshistorik – hvis mappen blev synkroniseret med versionshistorik aktiveret, kan du lede efter filen i skyens versionshistorik (men husk mtime-fælden: synkroniseringen kan også have udløst sletningen).
- Manuelle kopier – enhver
rsync/cp, du manuelt har kørt til et sted uden for den administrerede mappe.
Hvis ingen af disse fandtes, er sessionen væk. Og det er ikke sjældent: En forfatter til en bug i Anthropics repository fik 26 af 38 poster ødelagt, svarende til flere måneders arbejde. Den eneste pålidelige beskyttelse er den, der er på plads FØR tabet. Indstil cleanupPeriodDays, og konfigurér automatisk arkivering i dag, mens der stadig er noget at gemme.
Hvilken værdi skal du vælge for cleanupPeriodDays?
Vigtigste pointer
For de fleste er 3650 (ti år, hvilket i praksis deaktiverer sletning) plus et eksternt, automatisk arkiv det rigtige valg. Behold kun standardværdien 30, hvis du ikke har brug for historik, og det er vigtigere ikke at gemme hemmeligheder på disken. Værdien 365 er et rimeligt kompromis med årlig oprydning. En anden mulighed er slet ikke at skrive historik: Brug miljøvariablen CLAUDE_CODE_SKIP_PROMPT_HISTORY eller flaget --no-session-persistence, men det tjener det modsatte formål.
Der er én indstilling, men den kan bruges på flere måder. Sammenlign mulighederne, og vælg den, der passer til dit behov:
| Værdi | Hvad den gør | Hvem den passer til |
|---|---|---|
30 (standard) | Sletter sessioner, der er ældre end 30 dage, ved opstart | Du har ikke brug for historik; det er vigtigere at undgå at gemme følsomme data på disken |
365 | Beholder et års historik og rydder derefter op én gang om året | Du har brug for nyere historik, men ikke et ubegrænset arkiv |
3650 | Deaktiverer i praksis sletning | Du vil beholde alt + et eksternt arkiv (anbefalet) |
CLAUDE_CODE_SKIP_PROMPT_HISTORY | Skriver slet ingen historik til disken | Størst muligt privatliv; du har slet ikke brug for historik |
En vigtig sikkerhedsbemærkning: Hvis du angiver 3650 og beholder alt, accepterer du at gemme transskriptioner, som kan indeholde nøgler og kode, på disken. Det er en bevidst afvejning: bekvemmeligheden ved arkivering over for risikoen. Begræns risikoen: Opbevar arkivet på en krypteret disk (FileVault på macOS), læg det ikke i en offentlig sky, og commit det ikke til et offentligt git-repository. Jeg har samlet en separat guide om, hvilke data der kan lække via Claude Code: ”Datasikkerhed i Claude Code”.
Hvad skal du gøre i dag: tjekliste
Vigtigste pointer
Disse trin mindsker historiktab: Forlæng opbevaringen med cleanupPeriodDays: 3650, kopiér sessioner uden for ~/.claude/projects/, og versionsstyr arkivet. Kun filer, der er kopieret korrekt, er beskyttet mod Claude Codes oprydning. En daglig plan efterlader op til en dags nye ændringer uden arkivkopi, når kørsler lykkes; fejlslagne eller udeblevne kørsler gør hullet længere. En kopi på samme disk beskytter ikke mod diskfejl.
Konfigurér beskyttelsen trin for trin:
- Indstil
cleanupPeriodDays: 3650i~/.claude/settings.json– så har du stoppet sletningen. - Opret
~/claude-history-archiveuden for den administrerede mappe, og kør den førstersync -a. - Planlæg en daglig kørsel med launchd (macOS) eller cron (Linux).
- Initialisér git i arkivet, og føj
git add -A && git committil samme kørsel. - Kontrollér, at arkivet ligger på en krypteret disk og ikke synkroniseres til en offentlig sky.
- Kontrollér hver planlagt kørsel for vellykket kopiering. Undersøg derefter en nylig arkiveret session, og gendan jævnligt en prøve i en separat midlertidig mappe for at verificere, at den kan læses.
- Behold en uafhængigt lagret sikkerhedskopi med passende adgangskontrol, hvis tab af enhed eller disk er omfattet, og test også dens gendannelse. Git-historik på samme disk er ikke en uafhængig sikkerhedskopi.
Sessionshistorikken er blot ét lag af den kontekst, der gør Claude pålidelig.
Kilder
Lær Ailoot at kende.
Flere oplysninger
Spørgsmål og svar
Garanterer et dagligt arkiv, at ingen session kan gå tabt?
Nej. Det beskytter korrekt kopierede filer mod oprydning i den administrerede mappe. Selv med vellykkede daglige kørsler kan op til en dags nye ændringer mangle; fejlslagne kørsler udvider hullet, og en kopi på samme disk kan gå tabt sammen med originalen.
Hvordan kontrollerer jeg, at arkivet kan bruges?
Bekræft, at planlagte kopieringer lykkes, undersøg en nylig arkiveret session, og gendan jævnligt en prøve i en separat midlertidig mappe. Test også en sikkerhedskopi lagret uafhængigt af originalen for beskyttelse mod tab af enhed eller disk.