Pérdida de datos de la sesión de Claude Code: Script de respaldo para Windows y Mac

Múltiples usuarios en r/ClaudeAI reportan que Claude Code pierde silenciosamente datos de sesión: el título de la sesión permanece en la barra lateral, pero al hacer clic aparece una transcripción vacía. Sin advertencia, error ni recuperación. Esto parece ocurrir durante la compresión de contexto, salidas inesperadas o problemas en la capa de almacenamiento.
La solución de respaldo
Un script creado por la comunidad respalda todos los datos de Claude Code (sessions, projects, plans, drafts, memory) desde ~/.claude a una carpeta separada, se ejecuta a diario mediante el Programador de tareas (Windows) o launchd (Mac) y conserva 7 días de copias rotativas.
Windows (PowerShell + Programador de tareas)
Cree la carpeta de respaldo:
mkdir C:\Users\%USERNAME%\ClaudeBackupsGuarde lo siguiente como backup-claude-sessions.ps1 en esa carpeta:
$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 iniciado ==="
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 " Copiado $d ($count archivos)"
} else {
Write-Log " Omitido $d (no encontrado)"
}
}
$size = (Get-ChildItem $backupDir -Recurse -File | Measure-Object -Property Length -Sum).Sum
Write-Log " Tamaño total del respaldo: $([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 " Respaldo antiguo rotado: $($.Name)"
}
Write-Log "=== Respaldo completado exitosamente ==="
} catch {
Write-Log "!!! RESPALDO FALLIDO: $"
exit 1
}
Cree install-schedule.ps1 y ejecútelo como Administrador una vez:
$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 "Respaldo diario de sesiones de Claude Code" `
-RunLevel Limited
Write-Host "¡Listo! Se ejecuta diariamente a las 8:00 AM." -ForegroundColor GreenEjecute el instalador:
powershell -ExecutionPolicy Bypass -File "C:\Users%USERNAME%\ClaudeBackups\install-schedule.ps1"Mac (launchd + script de shell)
Cree la carpeta de respaldo:
mkdir -p /ClaudeBackupsGuarde como /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 iniciado ==="
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 " Copiado $d ($count archivos)"
else
log " Omitido $d (no encontrado)"
fi
done
size=$(du -sb "$BACKUP_DIR" | cut -f1)
log " Tamaño total del respaldo: $(echo "scale=2; $size/1048576" | bc) MB"
find "$BACKUP_ROOT" -maxdepth 1 -type d -name "????-??-??_??????" -mtime +$KEEP_DAYS -exec rm -rf {} + -exec log " Respaldo antiguo rotado: {}" ;
log "=== Respaldo completado exitosamente ==="Hágalo ejecutable y programe mediante launchd (consulte la publicación original para la configuración del plist).
El script funciona de forma completamente independiente de Claude Code, por lo que incluso si Claude falla o pierde datos, los respaldos se conservan. Registra cada ejecución en backup.log para verificación.
📖 Lea la fuente completa: r/ClaudeAI
👀 Ver también

OpenRoom: Una Interfaz Gráfica de Escritorio Basada en Web para Visualizar las Habilidades de los Agentes de IA
OpenRoom es un entorno de escritorio basado en web donde operan agentes de IA, con actualizaciones en tiempo real del estado del sistema como diarios y archivos durante las interacciones de chat, además de un modo de transmisión en vivo para la interacción de múltiples bots.

ClawControl v1.7.1 soluciona problemas de uso diario en el cliente OpenClaw.
ClawControl v1.7.1 es un cliente de código abierto para OpenClaw disponible en Windows, Mac, Linux, iOS y Android. Esta versión se centra en solucionar los problemas de '¿por qué está haciendo eso?' que se encuentran durante el uso diario de OpenClaw.

E2a: Puerta de enlace de correo electrónico de código abierto para agentes de IA con verificación SPF/DKIM y entrega mediante webhook/WebSocket
E2a es una puerta de enlace de correo electrónico autenticada para agentes de IA que verifica SPF/DKIM en el correo entrante, entrega mediante webhook o WebSocket y admite correo saliente con aprobación humana.

Habilidades de Claude para Emular un Entorno de Estudio de Diseño
Un diseñador comparte dos habilidades de Claude: una simula un estudio con compañeros y métodos de diseño, la otra añade 'juego riguroso' para la creatividad.