Notificaciones de Claude Code: distingue cuándo espera y cuándo ha terminado
“Una sesión bloqueada se ve exactamente igual que una sesión terminada, así que abro primero la que no es.” Esa frase de una solicitud de funcionalidad de Claude Code lo resume todo. Así puedes obtener una señal distinta para cada caso.
RESPUESTA CORTA
Claude Code ya lanza una notificación cuando termina o espera un permiso mientras estás fuera, pero de forma predeterminada solo Ghostty, Kitty e iTerm2 la muestran como notificación de escritorio. En los demás casos, establece "preferredNotifChannel": "terminal_bell". Para tener dos sonidos distintos, usa un hook Notification con el matcher permission_prompt para “te necesita” y un hook Stop para “ha terminado”.
Lo que Claude Code hace por sí solo
Cuando Claude termina una tarea o se detiene en una solicitud de permiso, y parece que no estás en la terminal, lanza un evento de notificación. De forma predeterminada, solo lo convierte en notificación de escritorio en Ghostty, Kitty e iTerm2. En Windows Terminal, la terminal de VS Code, Warp y el resto, no ocurre nada visible a menos que lo configures.
La solución más sencilla es la campana de la terminal:
Lo que hace la campana depende de tu terminal. En Windows Terminal, el ajuste bellStyle puede ser audible (el predeterminado), window, taskbar, all o none. Con all, Windows Terminal reproduce un sonido y hace parpadear el icono de la barra de tareas.
- iTerm2: Settings → Profiles → Terminal → marca “Notification Center Alerts” y luego, en Filter Alerts, activa “Send escape sequence-generated alerts”.
- tmux: añade
set -g allow-passthrough ona~/.tmux.conf; si no, las notificaciones nunca llegan a la terminal exterior. - Por SSH: la notificación de escritorio viaja de vuelta a tu máquina local, así que las sesiones remotas también pueden avisarte.
La solicitud de notificaciones del sistema (#26581, 34 votos) se cerró como ya disponible, remitiendo justamente a esta notificación integrada. La solicitud de una señal distinta para “esperando” y “terminado” (#94373) sigue abierta. Ahí es donde entran los hooks.
Dos eventos: Notification y Stop
Notificationse dispara cuando Claude Code envía una notificación. Su matcher es el tipo de notificación. Los dos que te interesan sonpermission_prompt(Claude necesita que apruebes el uso de una herramienta y la solicitud lleva unos seis segundos esperando) eidle_prompt(Claude terminó de responder hace unos 60 segundos y no has escrito nada desde entonces).Stopse dispara cada vez que Claude termina de responder. No se dispara cuando lo interrumpes; los errores de la API disparanStopFailureen su lugar.
Los hooks se ejecutan junto a la notificación integrada en lugar de sustituirla, así que puedes conservar ambos.
Windows: dos sonidos distintos
En Windows, los hooks se ejecutan en Git Bash, o en PowerShell si Git Bash no está instalado. Establecer "shell": "powershell" elimina las conjeturas. Esta configuración reproduce un doble pitido agudo cuando Claude necesita permiso y un pitido grave cuando ha terminado:
Console.Beep recibe una frecuencia en hercios y una duración en milisegundos, y espera hasta que termina el pitido. La guía de hooks de Anthropic también muestra un ejemplo para Windows que abre un cuadro de mensaje con System.Windows.Forms; la propia guía advierte que es un cuadro de diálogo y no una notificación, y que puede abrirse detrás de la terminal.
macOS y Linux
La documentación de Anthropic usa afplay en macOS:
Para una alerta visible, usa osascript -e 'display notification "Claude needs you" with title "Claude Code"' en macOS, o notify-send "Claude Code" "Claude needs you" en Linux.
Detalles que te ahorran una tarde
- Stop se dispara mucho. Se dispara cada vez que Claude termina de responder, no solo cuando termina una tarea completa. Si resulta demasiado insistente, usa la notificación
idle_prompt. Espera alrededor de un minuto y solo se dispara si no has escrito nada. - Lee el evento si lo necesitas. La entrada de Notification incluye
message,titleynotification_type, así que un script puede mostrar la solicitud real. - Vista de agentes. Si ejecutas sesiones en segundo plano con
claude agents, te avisa por el mismopreferredNotifChannelcuando una sesión empieza a necesitar tu intervención, termina o falla, y dispara el hook Notification con el tipoagent_needs_inputoagent_completed. - Estado en la terminal. Las terminales que implementan el protocolo de estado OSC 7501 pueden mostrar si cada sesión de Claude Code está trabajando, esperando o ha terminado. Claude Code v2.1.295 o posterior lo informa automáticamente.
- ¿El hook no se dispara en Windows? Consulta Los hooks de Claude Code no funcionan en Windows. Casi siempre es culpa de la shell.
Ver qué sesión es y responderla
Un sonido te dice que algo ha pasado. No te dice de cuál de tus tres terminales viene ni qué quiere ejecutar Claude. Pet Island da a cada sesión de Claude Code un sitio en una pequeña isla en la parte superior de la pantalla: trabajando, esperándote o terminada. Una solicitud de permiso llega con el comando o el diff, y la permites o la deniegas ahí mismo; las preguntas y los planes funcionan igual. Con un clic saltas a la terminal exacta cuando quieras mirar más de cerca.
PREGUNTAS FRECUENTES
¿Tiene notificaciones Claude Code?
Sí. Cuando termina o espera un permiso mientras estás fuera, lanza una notificación. Ghostty, Kitty e iTerm2 la muestran como notificación de escritorio de forma predeterminada; en otras terminales, establece preferredNotifChannel en "terminal_bell" o añade un hook Notification.
¿Cómo consigo un sonido cuando Claude Code termina?
Añade un hook Stop que reproduzca un sonido, por ejemplo afplay en macOS o [Console]::Beep en PowerShell en Windows.
¿Cómo distingo “necesita permiso” de “ha terminado”?
Usa un hook Notification con el matcher permission_prompt para un sonido y un hook Stop para otro.
¿Por qué no recibo notificaciones en Windows Terminal ni en VS Code?
Claude Code solo envía notificaciones de escritorio de forma predeterminada en Ghostty, Kitty e iTerm2. Establece preferredNotifChannel en "terminal_bell" o usa un hook.
¿Funcionan las notificaciones dentro de tmux?
Sí, después de añadir set -g allow-passthrough on a ~/.tmux.conf.
Fuentes
Cada ajuste y comportamiento de esta página se comprobó con estas páginas el 26 de octubre de 2026. Los agentes cambian rápido; si algo ya no coincide, manda la página oficial.
- Documentación de Claude Code: Configure your terminal (notificaciones)
- Documentación de Claude Code: Hooks guide
- Documentación de Claude Code: Hooks reference
- Documentación de Claude Code: Agent view
- Issue #26581: Notificaciones del sistema cuando Claude necesita atención
- Issue #94373: Notificar de forma distinta al esperar y al terminar
- Issue #2427: Notificación sonora al completar una tarea
- Microsoft Learn: Configuración de perfiles de Windows Terminal (bellStyle)
- Microsoft Learn: Console.Beep