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

Mengram fügt OpenClaw-Agenten persistenten Speicher hinzu.
Mengram ist ein Open-Source-Speichersystem, das OpenClaw-Agenten ein Langzeitgedächtnis über Sitzungen hinweg ermöglicht und das Problem löst, dass Agenten bei einem Neustart alles vergessen. Es bietet episodisches, Entitäts- und prozedurales Gedächtnis mit intelligenter Archivierung veralteter Fakten.

Ausführen von OpenClaw in einer isolierten Mikro-VM mit Void-Box
OpenClaw kann als Dienst innerhalb einer isolierten Mikro-VM mit Void-Box ausgeführt werden, einer fähigkeitsbeschränkten Laufzeitumgebung, die Workflows in KVM-Mikro-VMs ausführt und eine saubere Ausführungsgrenze ohne Container-Laufzeitumgebung bietet.
LTM: Ein JSON-Protokoll für portables Agentengedächtnis über Modelle und Maschinen hinweg
LTM ist ein JSON-Protokoll (Core Memory Packet) plus CLI/Server zum Speichern von Agentenkontext – Sackgassen, Einschränkungen, nächste Schritte – über Modelle, Editoren und Maschinen hinweg. Pakete sind 2-5 KB groß, schwärzen Geheimnisse und unterstützen MCP.

AutoDream: 11-Hook-Speichersystem für Claude Code mit Sicherheitsfunktionen
AutoDream ist ein Open-Source-Tool, das Projektspeicherpersistenz und Befehlsicherheit zu Claude Code hinzufügt. Es verwendet 11 Hooks über 6 Ereignisse hinweg, um Kontext einzuspritzen, gefährliche Befehle zu blockieren und den /compact-Vorgang zu überstehen.