TL;DR Con 110 columnas y dentro de un repo git,
/diffengancha un panel al lado de la conversación que se refresca en cada edición.Ctrl+X Bcambia contra qué compara. Y si dejó de salir solo, es que lo cerraste una vez: vuelve a escribir/diffy recupera la costumbre.
El bucle es siempre el mismo. Claude dice que ha terminado, tú preguntas qué ha tocado, Claude te lo resume, y tú te fías del resumen. O abres otra pestaña y haces git diff, que es lo mismo pero con más pasos.
Desde la v2.1.260 hay una tercera opción que no tienes que pedir: /diff deja los cambios puestos al lado de la conversación y los va actualizando él solo mientras trabajas.
El mismo comando, dos interfaces distintas
/diff no hace lo mismo en todas partes, y por eso su propia descripción cambia. Si estás en fullscreen, dentro de un repo git y tu terminal tiene 110 columnas o más, abre un panel que se queda. El fullscreen no lo tiene todo el mundo (sigue en research preview): escribe /tui a secas para ver en cuál estás, y /tui fullscreen para cambiarte sin perder la conversación. Si falla alguna de las tres condiciones, /diff cae al visor de siempre, el que ocupa el prompt y se cierra al terminar de leer: ese es el que tiene las pestañas por turno, y ahí sigue.
La diferencia no es cosmética. El visor es una parada: dejas de escribir, miras y vuelves. El panel es un acompañante: lista los archivos tocados con sus + y -, enseña el diff de cada uno debajo, y se refresca cada vez que Claude edita un archivo o ejecuta un comando.
conversación │ DIFF · sesión ✕
─────────────────────────── │ ──────────────────────────────────
> arregla el logout │ src/auth/session.ts +12 −3
│ src/auth/login.ts +4 −1
· Edit(src/auth/session.ts) │ ─────────────────────────────────
· Edit(src/auth/login.ts) │ @@ session.ts
│ - return token
Listo. He movido la limpieza │ + await revoke(token)
de sesión a revoke(). │ + return null
│
│ 2 archivos de test ocultos
(Vista previa ilustrativa: es una interfaz de terminal, no la puedo capturar desde aquí.)
Se abre solo, y también se queda cerrado
Esta es la parte que descoloca. El panel aparece por su cuenta en cuanto Claude empieza a editar, si tu terminal tiene 144 columnas o más. Una vez lo has abierto tú con /diff, la barrera baja: en las sesiones siguientes sale en cuanto Claude toca un archivo, en cualquier terminal donde quepa.
Y al revés también. Si lo cierras, se queda cerrado. No solo en esa sesión: en todas, hasta que vuelvas a escribir /diff. Esa decisión vive en tu ~/.claude.json:
{
"diffSidebarOpen": false
}
En el mío pone false, que es exactamente por qué llevaba semanas sin verlo aparecer. Lo cerré una vez con prisa y di por hecho que el panel no era para mi terminal. Si te pasa lo mismo, no hay nada que configurar: escribe /diff una vez y vuelve la costumbre.
Contra qué compara, y qué te está ocultando
Por defecto el panel enseña lo que ha cambiado en esta sesión. Con Ctrl+X B vas ciclando entre tres bases, y Claude Code se acuerda de tu elección para cada proyecto:
| Base | Qué te enseña |
|---|---|
| Sesión (por defecto) | Solo lo que ha cambiado desde que abriste esta sesión |
| Sin commitear | Todo tu working tree, como git diff HEAD |
| Rama | Todo desde que tu rama se separó de la principal |
Y la lista no es completa a propósito. Se salta los archivos de test y los generados, y todo lo que cambió antes de esta sesión lo colapsa en una línea al fondo. Las dos cosas se cuentan y se despliegan haciendo clic en su línea, así que no hay nada escondido de verdad, pero conviene saber que lo que ves de primeras está filtrado.
Señala las líneas y pregunta por ellas
La parte que más se usa una vez la descubres: selecciona líneas del panel con el ratón y Claude Code las engancha a tu siguiente prompt, con un contador junto al input hasta que envías. Ya no hace falta describir dónde está el problema ni pegar el fragmento a mano. Seleccionas las tres líneas raras y escribes "esto por qué".
Para moverte: clic en la fila de un archivo salta a su diff, la rueda del ratón hace scroll del panel, y si la lista de archivos no cabe, Alt+↑ y Alt+↓ (o Ctrl+↑ y Ctrl+↓) la recorren.
Cuando no se abre
Si /diff no te da el panel, cae al visor o te dice por qué, con estos dos mensajes:
Resize your terminal to at least 110 columns to show the diff panel
The diff panel shows git changes — the current directory isn't in a git repository
Hay un tercer estado que no es culpa tuya:
Diff unavailable
Couldn't read the git diff — it will retry on the next change
Ese aparece cuando no ha podido leer el diff en ese momento. No hay nada que tocar: el propio panel lo reintenta en el siguiente cambio.
Mirar no es auditar. El panel te enseña qué pasó; cuando quieras que alguien busque los fallos, eso es /code-review sobre tu diff.
Documentación oficial: Review changes with /diff
Requisitos
- Claude Code v2.1.260 o superior, el renderizador fullscreen (
/tui fullscreen), un repo git y un terminal de 110 columnas mínimo. Comprobado en la v2.1.263.