TL;DR Una línea en el
.claude/settings.jsondel proyecto,"plansDirectory": "./plans", y el plan vive junto al código: lo encuentras en la siguiente sesión, lo citas con@y viaja en el PR.
Cada vez que apruebas un plan en plan mode, Claude Code ya lo ha escrito en un archivo markdown. No hace falta pedirle que lo guarde. Y ese archivo vuelve entero después de compactar: la documentación lo pone en la misma fila que tu CLAUDE.md raíz, se re-inyecta desde disco. Justo lo contrario de lo que les pasa a las reglas con paths: y al CLAUDE.md de las subcarpetas.
El problema es dónde lo deja.
Dónde está tu plan
Por defecto, en ~/.claude/plans: una sola carpeta para todos tus proyectos, con nombres generados.
$ ls -t ~/.claude/plans
expressive-chasing-frost.md
docs-craft-logout-plan-md-pure-plum.md
docs-craft-logout-plan-md-humble-honey.md
docs-craft-logout-plan-md-zany-avalanche.md
...
En la mía hay 12 planes. El más reciente es de la web de wmedia y está al lado de los de otro repo, y ningún nombre dice a qué proyecto pertenece. Mientras dura la sesión da igual, porque Claude sabe cuál es el suyo. Cuando la cierras, recuperar el plan de la semana pasada es abrir archivos uno a uno.
Una línea y vive en tu repo
1. Apunta plansDirectory a una carpeta del proyecto
// .claude/settings.json
{
"plansDirectory": "./plans"
}
La ruta se resuelve contra la raíz del proyecto. Si apunta fuera de ella, Claude Code la ignora y sigue usando ~/.claude/plans.
2. Planifica como siempre
Lo probé en un repo de prueba: plan mode, y la tarea de añadir una función subtract con sus tests. Claude creó la carpeta y dejó el plan dentro:
$ find . -path ./.git -prune -o -name "*.md" -print
./plans/plan-adding-a-subtract-eventual-cat.md
Dentro está el plan completo: el contexto, los cambios archivo por archivo y cómo verificarlos. Esta salida es de una ejecución con -p --permission-mode plan.
3. Haz commit del plan con el código
El plan explica por qué existe el cambio, así que pertenece al mismo PR. Quien lo revise lee primero la intención y después el diff. Y en la sesión siguiente lo retomas citándolo con @plans/..., en vez de rebuscar en una carpeta global.
El archivo es el relevo
Hay un ajuste que lo deja claro. Con "showClearContextOnPlanAccept": true, el menú de aprobación gana una primera opción, Yes, clear context and …: aprueba el plan, vacía la conversación y Claude implementa leyendo solo el archivo. Planificar consume mucho contexto, y esa opción lo descarta entero para quedarse con lo único que hace falta. Viene desactivado por defecto.
Sin él, el resultado es parecido: si la sesión compacta a mitad de la implementación, el plan vuelve desde disco. La lista de tareas de los modelos nuevos se pierde con el resumen. El plan, no.
Si todavía no usas plan mode, empieza por lo que hace y lo que no. Y si apruebas todos tus planes igual, un hook puede aprobarlos por ti.
Documentación oficial: plansDirectory · What survives compaction · Review and approve a plan
Probado en Claude Code v2.1.284, el 1 de octubre de 2026.