Dentro de tmux, las notificaciones de escritorio de Claude Code nunca llegan a tu terminal exterior hasta que añades set -g allow-passthrough on a ~/.tmux.conf. Eso lo soluciona mientras estás conectado. Cuando te desconectas, ninguna terminal muestra la sesión, así que nada en pantalla puede avisarte, pero Claude Code sigue ejecutándose y sus hooks siguen disparándose. Para enterarte de lo que pasa en una sesión desconectada, usa un hook que envíe un push por red, a tu teléfono o a una app de chat, en lugar de uno que dependa de una terminal.
01Conectado: deja pasar las notificaciones a través de tmux
tmux se sitúa entre Claude Code y tu terminal y, por defecto, se traga las secuencias de escape que Claude Code usa para las notificaciones de escritorio. La guía de terminal de Anthropic propone este bloque para ~/.tmux.conf:
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
Aplícalo al servidor en ejecución:
tmux source-file ~/.tmux.conf
allow-passthrough deja que las notificaciones y las actualizaciones de progreso lleguen a la terminal exterior. Las demás líneas arreglan Shift+Enter para los saltos de línea. Con esto, las terminales que muestran las notificaciones de Claude Code fuera de tmux (Ghostty, Kitty e iTerm2 con las alertas activadas) también las muestran dentro de tmux.
Lo mismo vale para los hooks que devuelven un terminalSequence. La referencia de hooks de Anthropic dice que Claude Code escribe estas secuencias por sí mismo, lo que funciona dentro de tmux y GNU screen. Las guías de macOS, Linux y SSH tienen ejemplos.
02Conectado, pero en otra ventana: usa la campana
Si Claude Code se ejecuta en una ventana de tmux y tú trabajas en otra, la campana es una señal sencilla. Dile a Claude Code que la envíe siempre:
{
"preferredNotifChannel": "terminal_bell"
}
Después haz que tmux reaccione a ella, en ~/.tmux.conf:
setw -g monitor-bell on
set -g bell-action other
set -g visual-bell off
monitor-bell (activado por defecto) marca la ventana que ha hecho sonar la campana, y tmux la señala con ! en la barra de estado. bell-action other reenvía a tu terminal las campanas de ventanas distintas de la que estás viendo, para que la terminal pueda pitar o rebotar. Usa any para incluir también la ventana actual. Si pones visual-bell en on, tmux muestra un mensaje en vez de reenviar la campana.
03Indica qué sesión te necesita
Con varias sesiones abiertas, una notificación que solo dice "Claude te necesita" no ayuda mucho. Un hook se ejecuta dentro del entorno del panel, así que puede pedirle a tmux el nombre de la sesión y de la ventana. Este ejemplo para Linux los muestra en una notificación de escritorio:
#!/bin/bash
msg=$(jq -r '.message // "Claude Code needs your attention"')
where=""
if [ -n "$TMUX_PANE" ]; then
where=$(tmux display-message -p -t "$TMUX_PANE" '#S:#W')
fi
notify-send "Claude Code ${where}" "$msg"
Guárdalo como ~/.claude/hooks/notify-tmux.sh, ejecuta chmod +x sobre él y úsalo como comando de un hook Notification o Stop. #S es el nombre de la sesión y #W el de la ventana; pon nombre a tus sesiones con tmux new -s api-refactor y la notificación te dirá adónde ir. Cambia notify-send por el comando de tu plataforma, o por un push. La guía de varias sesiones tiene más formas de distinguir sesiones.
04Desconectado: necesitas un push
Desconectarte es la gracia de tmux: lanzas una tarea larga, te desconectas y te vas. Claude Code sigue trabajando en la sesión desconectada. Pero ya no hay ninguna terminal que muestre una secuencia de escape o una campana, y si el servidor de tmux se inició por SSH, puede que un comando de notificación de escritorio tampoco tenga adónde ir.
A un hook que hace una petición de red le da igual si hay alguien conectado. Cualquier servicio de push sirve. La guía de ntfy y la guía de Telegram, Slack y Discord tienen hooks que puedes copiar y pegar. Te avisan de que ha pasado algo, pero no pueden responder a Claude, así que una solicitud de permiso sigue esperando hasta que vuelvas a conectarte con tmux attach -t api-refactor.
05Dónde encaja Claude Code Notifier
Claude Code Notifier es una herramienta independiente (creada por TouchTap, no por Anthropic) basada en los hooks de Claude Code. Su herramienta de línea de comandos gratuita, ccn, funciona en Mac, Windows y Linux. Como se engancha a Claude Code y no a una terminal, funciona igual en tmux, screen o una shell normal, conectado o desconectado:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
En un equipo de escritorio muestra una notificación de escritorio cuando Claude termina, necesita un permiso o hace una pregunta. Empareja un teléfono y esos mismos eventos te llegan como notificaciones push a través del relay cifrado de TouchTap, desde cualquier máquina donde se ejecute ccn, incluido un servidor al que te conectaste por SSH.
El teléfono cubre el hueco que deja una sesión desconectada. Cuando aparece un permiso, puedes permitir una vez, permitir para la sesión o denegar desde el teléfono, y Claude continúa sin que tengas que volver a conectarte. Puedes elegir una respuesta cuando Claude hace una pregunta y enviar la siguiente instrucción justo cuando Claude termina. Si has escrito en los últimos 30 segundos, no se espera al teléfono y la terminal pregunta como siempre. Si no estás, la terminal espera la respuesta del teléfono hasta un límite que tú eliges (hold_ceiling_seconds) y deja de esperar en cuanto tocas el teclado.
Consulta emparejar un teléfono, despreocúpate de las tareas largas y la página de ccn. Las apps para teléfono requieren una suscripción o una compra de por vida; consulta los precios.
06GNU screen
Para esto, screen funciona de forma muy parecida a tmux. La referencia de hooks de Anthropic dice que la salida terminalSequence de los hooks funciona dentro de screen, y screen muestra un mensaje cuando suena la campana en una ventana que no estás viendo. Las sesiones de screen desconectadas tienen el mismo problema que las de tmux: no hay nada en pantalla, así que usa un push.
07Preguntas frecuentes
¿Por qué no se ven las notificaciones de Claude Code dentro de tmux?
tmux bloquea las secuencias de escape que usa Claude Code a menos que el passthrough esté activado. Añade set -g allow-passthrough on a ~/.tmux.conf y ejecuta tmux source-file ~/.tmux.conf.
¿Claude Code sigue ejecutándose cuando me desconecto de tmux?
Sí. El proceso sigue ejecutándose en el servidor de tmux y sus hooks siguen disparándose. Solo dejan de llegarte las notificaciones que necesitan una terminal conectada.
¿Cómo recibo notificaciones de una sesión de tmux desconectada?
Usa un hook que envíe un push por la red, como ntfy, un webhook de chat o la app móvil de Claude Code Notifier. Las secuencias de escape de la terminal y la campana necesitan un cliente conectado.
¿Puedo aprobar un permiso sin volver a conectarme?
Con un servicio de push normal, no. Con Claude Code Notifier y un móvil vinculado, puedes permitir o denegar la solicitud desde el móvil y la sesión desconectada continúa.
¿Cómo sé qué sesión de tmux me necesita?
Ponle nombre a tus sesiones e incluye ese nombre en la notificación. Un hook puede leerlo con tmux display-message -p -t "$TMUX_PANE" '#S:#W'.