Claude Code Sitzungsdatenverlust: Backup-Skript für Windows & Mac

Mehrere Nutzer auf r/ClaudeAI berichten, dass Claude Code stillschweigend Sitzungsdaten verliert – der Sitzungstitel bleibt in der Seitenleiste erhalten, aber ein Klick darauf zeigt ein leeres Transkript. Keine Warnung, kein Fehler, keine Wiederherstellung. Dies tritt offenbar während der Kontextkomprimierung, bei unerwarteten Beendigungen oder Problemen mit der Speicherebene auf.
Die Backup-Lösung
Ein von der Community geschriebenes Skript sichert alle Claude-Code-Daten (sessions, projects, plans, drafts, memory) aus ~/.claude in einen separaten Ordner, läuft täglich über den Taskplaner (Windows) oder launchd (Mac) und behält 7 Tage rollierende Backups.
Windows (PowerShell + Taskplaner)
Erstellen Sie den Backup-Ordner:
mkdir C:\Users\%USERNAME%\ClaudeBackupsSpeichern Sie Folgendes als backup-claude-sessions.ps1 in diesem Ordner:
$ErrorActionPreference = "Stop"
$source = "$env:USERPROFILE\.claude"
$backupRoot = "$env:USERPROFILE\ClaudeBackups"
$logFile = Join-Path $backupRoot "backup.log"
$keepDays = 7
$timestamp = Get-Date -Format "yyyy-MM-dd_HHmmss"
$backupDir = Join-Path $backupRoot $timestamp
$dirs = @("sessions", "projects", "plans", "drafts", "memory")
function Write-Log($msg) {
$line = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - $msg"
Add-Content -Path $logFile -Value $line -Encoding utf8
}
try {
Write-Log "=== Backup gestartet ==="
New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
foreach ($d in $dirs) {
$src = Join-Path $source $d
if (Test-Path $src) {
$dst = Join-Path $backupDir $d
Copy-Item -Path $src -Destination $dst -Recurse -Force
$count = (Get-ChildItem $dst -Recurse -File -ErrorAction SilentlyContinue | Measure-Object).Count
Write-Log " $d kopiert ($count Dateien)"
} else {
Write-Log " $d übersprungen (nicht gefunden)"
}
}
$size = (Get-ChildItem $backupDir -Recurse -File | Measure-Object -Property Length -Sum).Sum
Write-Log " Gesamtgröße des Backups: $([math]::Round($size/1MB, 2)) MB"
$cutoff = (Get-Date).AddDays(-$keepDays)
Get-ChildItem $backupRoot -Directory | Where-Object { $.Name -match '^\d{4}-\d{2}-\d{2}\d{6}$' -and $.CreationTime -lt $cutoff } | ForEach-Object {
Remove-Item $.FullName -Recurse -Force -Confirm:$false
Write-Log " Altes Backup rotiert: $($.Name)"
}
Write-Log "=== Backup erfolgreich abgeschlossen ==="
} catch {
Write-Log "!!! BACKUP FEHLGESCHLAGEN: $"
exit 1
}
Erstellen Sie install-schedule.ps1 und führen Sie es einmal als Administrator aus:
$action = New-ScheduledTaskAction -Execute "powershell.exe"
-Argument "-ExecutionPolicy Bypass -WindowStyle Hidden -File "$env:USERPROFILE\ClaudeBackups\backup-claude-sessions.ps1""
$trigger = New-ScheduledTaskTrigger -Daily -At 8:00AM
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries
-DontStopIfGoingOnBatteries -StartWhenAvailable Register-ScheduledTask
-TaskName "ClaudeSessionsBackup" -Action $action
-Trigger $trigger -Settings $settings
-Description "Tägliches Backup der Claude Code Sitzungen" `
-RunLevel Limited
Write-Host "Fertig! Läuft täglich um 8:00 Uhr." -ForegroundColor GreenFühren Sie das Installationsskript aus:
powershell -ExecutionPolicy Bypass -File "C:\Users%USERNAME%\ClaudeBackups\install-schedule.ps1"Mac (launchd + Shell-Skript)
Erstellen Sie den Backup-Ordner:
mkdir -p /ClaudeBackupsSpeichern Sie als /ClaudeBackups/backup-claude-sessions.sh:
#!/bin/bash
set -euo pipefail
SOURCE="$HOME/.claude"
BACKUP_ROOT="$HOME/ClaudeBackups"
LOG_FILE="$BACKUP_ROOT/backup.log"
KEEP_DAYS=7
TIMESTAMP=$(date +"%Y-%m-%d_%H%M%S")
BACKUP_DIR="$BACKUP_ROOT/$TIMESTAMP"
DIRS=("sessions" "projects" "plans" "drafts" "memory")
log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"; }
log "=== Backup gestartet ==="
mkdir -p "$BACKUP_DIR"
for d in "${DIRS[@]}"; do
src="$SOURCE/$d"
if [ -d "$src" ]; then
cp -R "$src" "$BACKUP_DIR/$d"
count=$(find "$BACKUP_DIR/$d" -type f | wc -l | tr -d ' ')
log " $d kopiert ($count Dateien)"
else
log " $d übersprungen (nicht gefunden)"
fi
done
size=$(du -sb "$BACKUP_DIR" | cut -f1)
log " Gesamtgröße des Backups: $(echo "scale=2; $size/1048576" | bc) MB"
find "$BACKUP_ROOT" -maxdepth 1 -type d -name "????-??-??_??????" -mtime +$KEEP_DAYS -exec rm -rf {} + -exec log " Altes Backup rotiert: {}" ;
log "=== Backup erfolgreich abgeschlossen ==="Machen Sie es ausführbar und planen Sie es über launchd (siehe Originalbeitrag für plist-Einrichtung).
Das Skript läuft völlig unabhängig von Claude Code, sodass Backups erhalten bleiben, selbst wenn Claude abstürzt oder Daten verliert. Es protokolliert jeden Durchlauf in backup.log zur Überprüfung.
📖 Vollständige Quelle: r/ClaudeAI
👀 Siehe auch

SideX: Ein auf Tauri basierender Port von Visual Studio Code
SideX ist ein Port von Visual Studio Code, der Electron durch Tauri ersetzt und dabei ein Rust-Backend und die native Webview des Betriebssystems nutzt. Das Projekt beansprucht dieselbe Architektur mit 96 % geringerer Größe, wobei Kern-Editier- und Terminalfunktionen derzeit funktionieren.

Kostenloser Claude-Session-Optimierer: Token-Schätzer, Prompt-Komprimierer und Session-Planer
Ein Entwickler hat ein kostenloses Tool ohne Anmeldung erstellt, um die Nutzungsgrenzen von Claude zu verwalten, mit drei Funktionen: einem Token-Schätzer zur Vorschau des Prompt-Verbrauchs, einem Prompt-Komprimierer, der Prompts durch Entfernen von Füllphrasen um 40-60% reduziert, und einem Sitzungsplaner, der Aufgaben gruppiert, um das Neuladen des Kontexts zu minimieren.

Natürliche Sprachautoencoder: Wandlung von Claudes internen Darstellungen in Text
Transformer Circuits Thread veröffentlicht Natural Language Autoencoders, die Claudes interne Aktivierungen in lesbaren Text dekodieren. GitHub-Repo und interaktive Demo verfügbar.

Total Recall: Lokales Wissensgraphen-System für den Claude-Code-Konversationsverlauf
Total Recall ist ein Open-Source-System, das JSONL-Konversationstranskripte von Claude Code in eine SQLite-Datenbank mit Volltextsuche und Vektoreinbettungen aufnimmt, wodurch der Konversationsverlauf über Sitzungen hinweg durchsuchbar wird. Es ruft tatsächliche Konversationsausschnitte mit DAG-bewusstem Kontext ab und beinhaltet einen ChatGPT-Importer.