Claude Code guarda cada versión que instala en la carpeta ~/.local/share/claude/versions. Como el binario lleva dentro sus propios textos, puedes contar cuántas veces aparece una cadena en cada versión y ver en cuál nació una función: cero en las anteriores, alguna en la nueva. Es un diff de funciones que corres en tu máquina en dos minutos.
Claude Code se actualiza cada pocos días. Un martes te aparece un ajuste que el lunes no estaba, y la pregunta es siempre la misma: ¿esto es nuevo, o llevaba semanas ahí y yo no lo había visto?
Hay una forma de responderla con precisión de día, sin esperar a que nadie lo anuncie y sin instalar nada. La respuesta ya está en tu disco.
El instalador nativo de Claude Code no pisa la versión anterior: la deja guardada. En una máquina que lleva unas semanas actualizándose hay cuatro o cinco versiones conviviendo, una por cada actualización.
Cada una de esas versiones es un binario que lleva dentro todos sus textos: nombres de ajustes, descripciones de ayuda, mensajes de error. Una función que todavía no existe no tiene textos. Una que acaba de nacer los tiene, y la versión anterior no.
Ahí está el truco: no comparas código, cuentas cadenas de texto. Si una palabra aparece cero veces en la versión de ayer y varias veces en la de hoy, esa función nació hoy.
ls -1 ~/.local/share/claude/versions/
Y para saber cuándo se instaló cada una, que es la fecha que de verdad te interesa:
ls -lT ~/.local/share/claude/versions/
En mi máquina esa lista tenía cinco entradas: 2.1.231 y 2.1.232 del 13 de agosto, la .233 del 14, la .234 del 17 y la .235 del 18 a las 16:38. Esa columna de fechas es tu línea de tiempo.
Elige un texto que identifique la función que te interesa: el nombre del ajuste, un trozo de su descripción, una palabra rara. Y cuéntalo en cada versión con una sola línea:
for v in ~/.local/share/claude/versions/*; do echo "$(basename "$v"): $(grep -oa "Continue automatically at usage limit" "$v" | wc -l | tr -d ' ')"; done
En mi máquina eso devuelve, exactamente:
Cero, cero, cero, dos, dos. Esa función nació en la 2.1.234, que se instaló el 17 de agosto. No "a mediados de agosto": el 17.
El parámetro -a de grep es el que importa: le dice que trate el binario como si fuera texto. Sin él, grep se limita a decirte que el archivo coincide y no te da el número.
El paso 2 sirve cuando ya sospechas de algo. Cuando no tienes ni idea de qué cambió, dale la vuelta: pídele a la máquina la lista de textos que la versión nueva tiene y la anterior no.
comm -13 <(strings -a ~/.local/share/claude/versions/2.1.234 | sort -u) <(strings -a ~/.local/share/claude/versions/2.1.235 | sort -u) | grep -i spell
Eso te devuelve solo lo nuevo, filtrado por la palabra que te interese. Quita el último filtro y tendrás la lista completa: es larga, porque un binario minificado trae mucho ruido, pero se lee en diagonal buscando frases en inglés que suenen a mensaje de ayuda.
Así encontré, en la 2.1.235 del 18 de agosto, esta descripción que la .234 no tenía:
Turn on spell checking of the prompt input (default: false)
Un corrector ortográfico para el prompt, apagado por defecto. Y con la misma técnica del paso 2: la palabra hunspell aparece cero veces en la .231, la .232, la .233 y la .234, y aparece en la .235. La función no es de "hace un tiempo". Es de ese día.
Esta es la parte que más tiempo ahorra y casi nadie usa. Los ajustes de Claude Code no son solo nombres: cada uno lleva su descripción escrita al lado, y esa descripción te dice el valor por defecto, qué acepta y qué hace.
strings -a ~/.local/share/claude/versions/2.1.235 | grep -o "Turn on spell checking of the prompt input (default: false)"
En el caso del corrector, el bloque completo tiene cuatro piezas: enabled para encenderlo, checker para elegir cuál (la lista literal del binario es aspell, hunspell, ispell, o auto para el primero que encuentre instalado), language para el diccionario, que se le pasa al corrector tal cual como hacen aspell --lang o hunspell -d, y color para el subrayado.
Es documentación de primera mano, escrita por quien programó la función, y la tienes antes que cualquier artículo que la explique.
El ejemplo completo, porque aquí está la trampa: encender el ajuste no basta.
Un detalle que sale del propio binario y que te ahorra un rato de confusión: ese bloque se lee de la configuración de usuario, de flags y de la configuración gestionada. La descripción dice, literal, que se ignora en el .claude/settings.json del proyecto. Si lo pones ahí, no aplica.