TL;DR Cada sesión de Claude Code se guarda como un
.jsonlen texto plano bajo~/.claude/projects/(tus prompts, las respuestas y lo que pegaste, tokens incluidos). Por defecto viven 30 días. Acorta la retención concleanupPeriodDaysensettings.json, o apaga la escritura del todo conCLAUDE_CODE_SKIP_PROMPT_HISTORY. Es lo mismo que alimenta--resumey el Rewind.
Miré mi carpeta ~/.claude/projects/ y me encontré con 548 conversaciones, 541 MB, 14 proyectos. Todo en texto plano. Cada prompt que he escrito, cada respuesta, cada secreto que pegué sin pensar, ahí, sin cifrar. No es un bug: es justo lo que hace posible retomar una sesión y rebobinar. Pero conviene saber dónde vive y cuánto dura.
Dónde vive
~/.claude/projects/<ruta-del-proyecto>/<session-id>.jsonl
Una carpeta por proyecto (la ruta con / convertida en -), un .jsonl por sesión, y cada línea es un evento JSON: tu prompt, la respuesta, cada tool call. Sin cifrar. Es lo que leen --resume y el Rewind con checkpoints.
Míralo tú mismo
du -sh ~/.claude/projects/ # cuánto ocupa
find ~/.claude/projects -name '*.jsonl' | wc -l # cuántas conversaciones
Qué hacer
1. Acorta la retención
En ~/.claude/settings.json:
{ "cleanupPeriodDays": 7 }
Default 30 días, mínimo 1 (0 da error de validación). Al arrancar, borra los transcripts más viejos. Aplica en la próxima sesión, no en caliente.
2. Apágalo del todo
export CLAUDE_CODE_SKIP_PROMPT_HISTORY=1 # deja de escribir transcripts
En headless o SDK, --no-session-persistence (o persistSession: false). Ojo con el tradeoff: sin transcripts pierdes --resume y el Rewind, porque ambos leen de ahí.
3. Borra lo que ya haya
Es una carpeta normal. Borra las sesiones que no quieras conservar (con cabeza):
rm ~/.claude/projects/<proyecto>/<session-id>.jsonl
Referencia
| Control | Qué hace |
|---|---|
cleanupPeriodDays (en settings.json) |
Días de retención. Default 30, mínimo 1 |
CLAUDE_CODE_SKIP_PROMPT_HISTORY=1 |
No escribe transcripts (sesión interactiva) |
--no-session-persistence / persistSession: false |
Lo mismo, en headless o SDK |
Ojo:
- Es un tradeoff, no un interruptor gratis: apagar la escritura mata
--resumey el Rewind. - El borrado por
cleanupPeriodDaysocurre al arrancar, así que un transcript recién creado sigue en disco hasta la próxima sesión que pase el corte.
Esto es la cara oculta del Rewind con checkpoints: esa función es cómoda porque tu historial vive en disco; este tip es dónde vive y cómo controlar su vida.
Documentación oficial: Ajustes (
cleanupPeriodDays)
Relacionado: Rewind: deshaz cambios con checkpoints
Requisitos
settings.jsonen~/.claude/(usuario) o.claude/(proyecto). El cambio se aplica al arrancar la siguiente sesión.