Pertes de données de session Claude Code : Script de sauvegarde pour Windows et Mac

Plusieurs utilisateurs sur r/ClaudeAI signalent que Claude Code perd silencieusement les données de session — le titre de la session reste dans la barre latérale, mais en cliquant dessus, la transcription est vide. Aucun avertissement, aucune erreur, aucune récupération. Cela semble se produire lors de la compression de contexte, des sorties inattendues ou de problèmes de couche de stockage.
La solution de sauvegarde
Un script communautaire sauvegarde toutes les données de Claude Code (sessions, projects, plans, drafts, memory) depuis ~/.claude vers un dossier séparé, s'exécute quotidiennement via le Planificateur de tâches (Windows) ou launchd (Mac), et conserve 7 jours de sauvegardes tournantes.
Windows (PowerShell + Planificateur de tâches)
Créez le dossier de sauvegarde :
mkdir C:\Users\%USERNAME%\ClaudeBackupsEnregistrez le contenu suivant sous backup-claude-sessions.ps1 dans ce dossier :
$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 started ==="
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 " Copied $d ($count files)"
} else {
Write-Log " Skipped $d (not found)"
}
}
$size = (Get-ChildItem $backupDir -Recurse -File | Measure-Object -Property Length -Sum).Sum
Write-Log " Total backup size: $([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 " Rotated old backup: $($.Name)"
}
Write-Log "=== Backup completed successfully ==="
} catch {
Write-Log "!!! BACKUP FAILED: $"
exit 1
}
Créez install-schedule.ps1 et exécutez-le en tant qu'administrateur une fois :
$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 "Daily backup of Claude Code sessions" `
-RunLevel Limited
Write-Host "Done! Runs daily at 8:00 AM." -ForegroundColor GreenExécutez l'installateur :
powershell -ExecutionPolicy Bypass -File "C:\Users%USERNAME%\ClaudeBackups\install-schedule.ps1"Mac (launchd + script shell)
Créez le dossier de sauvegarde :
mkdir -p /ClaudeBackupsEnregistrez sous /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 started ==="
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 " Copied $d ($count files)"
else
log " Skipped $d (not found)"
fi
done
size=$(du -sb "$BACKUP_DIR" | cut -f1)
log " Total backup size: $(echo "scale=2; $size/1048576" | bc) MB"
find "$BACKUP_ROOT" -maxdepth 1 -type d -name "????-??-??_??????" -mtime +$KEEP_DAYS -exec rm -rf {} + -exec log " Rotated old backup: {}" ;
log "=== Backup completed successfully ==="Rendez-le exécutable et planifiez-le via launchd (voir l'article original pour la configuration plist).
Le script s'exécute complètement indépendamment de Claude Code, donc même si Claude plante ou perd des données, les sauvegardes sont préservées. Il journalise chaque exécution dans backup.log pour vérification.
📖 Lire la source complète : r/ClaudeAI
👀 See Also

PromoClock : Suiveur de fuseaux horaires pour les heures creuses 2x de Claude, développé avec Claude 4.6
Un développeur a créé PromoClock.co, un outil gratuit qui convertit automatiquement les heures promotionnelles hors pointe de Claude « 5-11h PT / 12-18h GMT » en heure locale, utilisant Claude 4.6 pour la logique des fuseaux horaires, une configuration Next.js 15 et la conception de l'interface utilisateur.

Claude-IDE-Bridge fonctionne désormais sur des serveurs distants pour le développement assisté par IA
L'outil Claude-IDE-Bridge connecte désormais Claude AI à des environnements de développement distants sur des VPS ou des machines cloud, permettant d'accéder aux diagnostics en direct, aux fichiers ouverts et aux échecs de tests depuis n'importe quel appareil.

Klaw.sh : Orchestration de style Kubernetes pour les agents d'IA
Klaw.sh offre une solution d'orchestration pour le déploiement d'agents IA, inspirée de Kubernetes. Il simplifie la gestion avec des clusters, des espaces de noms et des canaux, réduisant la mémoire en réécrivant de Node.js vers Go.

OS Agent Creux : Les travailleurs IA locaux appellent Claude en tant qu'architecte senior en cas de blocage
Hollow Agent OS utilise des modèles Qwen locaux qui fonctionnent 24h/24, mais lorsqu'ils rencontrent des erreurs logiques ou ont besoin de changements majeurs, ils déclenchent un appel Claude via MCP. Claude réorganise les structures de fichiers, révise le code et agit comme un gestionnaire pour les travailleurs locaux autonomes.