TL;DR En Opus 4.8, Sonnet 5, Fable 5 y Mythos 5 la lista de tareas está vacía porque Claude Code ya no carga
TaskCreateni sus tres hermanas: ocupan contexto y esos modelos siguen el hilo sin checklist. Lo que ves cuando pides la lista es markdown suelto dentro de la respuesta, sinCtrl+Ty sin sobrevivir a/compact. Si esa lista era tu ancla, una línea ensettings.jsonte la devuelve.
Le pides a Claude Code que desglose el trabajo en tareas. Te devuelve una lista impecable, con sus casillas marcadas. Pulsas Ctrl+T y no aparece nada.
No ha fallado nada. Desde la versión 2.1.233, en Opus 4.8, Sonnet 5, Fable 5, Mythos 5 y las versiones posteriores de esas familias, Claude Code no carga las herramientas que rellenan la lista: TaskCreate, TaskGet, TaskList, TaskUpdate y TodoWrite. Sin ellas, Claude no escribe nada en la lista mientras trabaja, así que la lista se queda vacía.
El motivo que dan los docs son dos frases: esos modelos siguen el trabajo multipaso sin necesidad de una checklist escrita, y las definiciones de esas herramientas, con sus recordatorios, ocupan contexto en cada turno. Cambiaron el andamio por ventana de contexto.
Por qué cuesta darse cuenta
Porque la respuesta sigue trayendo una lista.
Esto es una ejecución real en Opus 5, sin la variable puesta:
> Desglosa en una lista de tareas la publicación de un tip y ve marcándolas
## Publicación de un tip
**1. Escribir borrador**
- [x] Desglose de tareas (esto)
- [ ] Borradores ES + EN
- [ ] Generar la imagen
- [ ] Publicar y enlazar
Cero llamadas a herramientas. Ni un archivo nuevo en ~/.claude/tasks/. Eso no es la lista de tareas: es markdown dentro de un mensaje. No sale en Ctrl+T, no la puedes consultar ni limpiar por separado, y se va con el resto del texto en la siguiente compactación. La lista de verdad era justo lo contrario, de lo poco que sobrevive a /compact.
Compruébalo en diez segundos
claude -p --output-format stream-json --verbose "hi" | grep -c TaskCreate
0 significa que tu sesión arranca sin las herramientas. 1, que las tiene.
Cómo recuperarla
Una línea en ~/.claude/settings.json, dentro del bloque env:
{
"env": {
"CLAUDE_CODE_ENABLE_TODO_TOOLS": "1"
}
}
Vuelve a arrancar Claude Code y repite la comprobación de arriba: pasa a 1. A partir de ahí, el hábito de pedir la lista al empezar una tarea larga funciona igual que antes, y también encadenar unas tareas con otras.
Hay cuatro puertas para lo mismo, según dónde te venga mejor:
| Dónde | Cómo |
|---|---|
| Permanente, todas tus sesiones | "env": { "CLAUDE_CODE_ENABLE_TODO_TOOLS": "1" } en settings.json |
| Solo esta sesión | CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude |
| Solo esta sesión, herramienta suelta | claude --allowedTools TaskCreate |
| Sesión con las herramientas acotadas | --tools, nombrando las que quieras junto al resto |
Dónde sigue funcionando sin que hagas nada
Las sesiones en background y Claude Code en la web reciben estas herramientas en todos los modelos, estén en la lista o no. Por eso una tarea programada que dejas corriendo sí construye su checklist mientras tu terminal se queda sin ella.
Un subagente recibe las herramientas solo si las tiene tu sesión, aunque el subagente corra otro modelo. Es la misma lógica de herencia por la que los subagentes pierden herramientas al pasar a segundo plano. Sin las tareas, un agent team se coordina por mensajes en vez de por lista compartida.
Y si nunca la mirabas
Entonces no tienes nada que hacer, y has ganado el contexto que ocupaban cinco definiciones de herramienta en cada turno.
Es el argumento del tip original puesto del revés: la lista nunca fue para que el modelo trabajara mejor, era para que tú vieras el scope. Anthropic acaba de firmar esa misma idea quitándole el andamio al modelo. La decisión que te queda es honesta: si esa lista la leías, devuélvela; si nunca la abriste, ya está resuelta.
Documentación oficial: Tools reference: Task tool availability
Requisito: el problema aparece a partir de Claude Code 2.1.233. La variable funciona en cualquier versión que la tenga.