Claude Code no muestra notificaciones de escritorio por defecto en Windows Terminal, PowerShell ni el terminal de VS Code, así que en Windows tienes que añadirlas tú. Pon un hook Notification (y un hook Stop para "terminado") en %USERPROFILE%\.claude\settings.json que ejecute PowerShell: un cuadro de mensaje funciona sin instalar nada, y el módulo BurntToast te da un toast de verdad. Si Claude Code se ejecuta dentro de WSL, el hook corre en Linux, así que tiene que llamar a powershell.exe mediante la interoperabilidad de Windows para llegar al escritorio de Windows.
01Windows nativo o WSL: dónde se ejecutan tus hooks
Claude Code se ejecuta en Windows de forma nativa o dentro de WSL, y eso determina cómo funciona un hook de notificación.
- Windows nativo. La configuración está en
%USERPROFILE%\.claude\settings.json. Según la referencia de hooks de Anthropic, los hooks de comando se ejecutan por defecto en Git Bash, o en PowerShell si Git Bash no está instalado. Puedes forzar PowerShell para un hook concreto con"shell": "powershell"; entonces Claude Code usapwsh.exe(PowerShell 7) si lo encuentra y, si no,powershell.exe(Windows PowerShell 5.1). - WSL. Instalas y ejecutas
claudedentro del terminal de WSL, así que el archivo de configuración es el de Linux,~/.claude/settings.jsondentro de tu distribución, y los hooks se ejecutan en una shell de Linux. Ahínotify-sendno suele llegar al escritorio de Windows. Llama a programas de Windows en su lugar.
02La prueba rápida: la campana del terminal
La señal más sencilla es la campana. Añade esto a tu archivo de configuración:
{
"preferredNotifChannel": "terminal_bell"
}
Así Claude Code envía un carácter de campana cuando termina o te está esperando. En Windows Terminal, lo que hace la campana se configura por perfil con bellStyle en su settings.json. "bellStyle": ["window", "taskbar"] hace parpadear la ventana y el botón de la barra de tareas en lugar de reproducir un sonido. La guía de la campana del terminal lo explica con más detalle. Solo sirve mientras tengas el terminal a la vista.
03Un Notification hook con PowerShell
Este es el ejemplo para Windows de la guía de hooks de Anthropic. Funciona sin instalar nada:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
}
]
}
]
}
}
Abre un cuadro de diálogo, no un toast en la esquina de la pantalla, y el diálogo puede quedar detrás del terminal. Prueba primero el comando en PowerShell. Escribe /hooks en Claude Code para comprobar que el hook está cargado.
El matcher vacío se dispara con todos los tipos de notificación, incluidos permission_prompt (una aprobación lleva unos seis segundos esperando) e idle_prompt (Claude terminó hace unos 60 segundos). La guía del Notification hook explica los tiempos.
04Un toast de verdad con BurntToast
BurntToast es un módulo de PowerShell muy usado y mantenido por la comunidad para mostrar notificaciones toast en Windows. Instálalo una vez para tu usuario:
Install-Module -Name BurntToast -Scope CurrentUser
Luego comprueba que funciona:
New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'
Úsalo en un hook. Esta versión inicia PowerShell sin perfil y omite la directiva de ejecución solo para esta llamada, así que se comporta igual desde Git Bash o PowerShell:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'\""
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
El hook Stop se ejecuta al final de cada turno, así que te enteras de que una tarea ha terminado al momento y no un minuto después; consulta la guía del Stop hook. "async": true ejecuta el hook en segundo plano para que un arranque lento de PowerShell no bloquee a Claude Code.
Si los toasts no aparecen nunca, revisa Configuración > Sistema > Notificaciones: las notificaciones deben estar activadas y No molestar desactivado. Los toasts de BurntToast suelen aparecer ahí bajo Windows PowerShell, que también necesita tener las notificaciones permitidas.
05Desde WSL: llama a Windows mediante interop
Dentro de WSL el hook se ejecuta en Linux, pero WSL puede lanzar programas de Windows por su nombre .exe. La guía de Anthropic indica que powershell.exe tiene que estar en tu PATH mediante la interoperabilidad de Windows. Es lo predeterminado; se controla con appendWindowsPath en la sección [interop] de /etc/wsl.conf. Compruébalo desde tu shell de WSL:
command -v powershell.exe
Con BurntToast instalado en el lado de Windows, el hook en tu ~/.claude/settings.json de WSL es el mismo comando:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
Arrancar Windows PowerShell desde WSL puede tardar un segundo o más, otro motivo para usar "async": true.
06Dónde encaja Claude Code Notifier
Los hooks anteriores están bien si estás delante del ordenador. En cuanto te alejas no sirven de nada, y un toast no puede aprobar un comando para Claude.
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; el soporte para Windows está en beta. En Windows nativo, instálala desde PowerShell:
irm https://claudecodenotifier.com/install.ps1 | iex
Añade sus entradas de hook a tu configuración de Claude Code, deja el resto del archivo intacto y guarda una copia de seguridad. Desde el primer momento muestra un toast de Windows cuando Claude termina, necesita un permiso o hace una pregunta, sin necesidad de móvil ni de red. Como se engancha a Claude Code y no a un terminal, funciona igual en Windows Terminal, PowerShell y los terminales de los IDE.
Si Claude Code se ejecuta en WSL, instala ccn dentro de WSL con la línea de Linux, porque ahí es donde están Claude Code y su configuración:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Después ejecuta ccn test. Que una notificación de escritorio desde WSL llegue a tu escritorio de Windows depende de tu configuración de WSL, así que en WSL lo más fiable es el móvil. Con un móvil emparejado, los eventos llegan como notificaciones push y puedes permitir una vez, permitir durante la sesión o denegar un permiso, responder a las preguntas de Claude y enviar la siguiente instrucción desde el móvil. Consulta cómo emparejar un móvil, la página de ccn y los precios de las apps para móvil.
Si instalas ccn, elimina tus propios hooks de toast para no recibir notificaciones duplicadas.
07Preguntas frecuentes
¿Por qué mi hook de PowerShell no hace nada en Windows?
Primero ejecuta el comando exacto en PowerShell. Si ahí funciona, comprueba que /hooks muestre el hook y que el escapado del JSON sea correcto (cada " interna necesita una barra invertida). Con BurntToast, asegúrate de que el módulo esté instalado para el mismo usuario que ejecuta Claude Code y de que No molestar esté desactivado.
¿Claude Code en Windows necesita Git Bash para los hooks?
No. Los hooks se ejecutan en Git Bash si tienes Git for Windows instalado, y en PowerShell si no. También puedes poner "shell": "powershell" en cualquier hook concreto.
¿Funciona notify-send en WSL?
Normalmente no para el escritorio de Windows. Lo fiable es llamar a powershell.exe desde el hook mediante la interoperabilidad de WSL, como se muestra arriba.
¿Puede Windows Terminal mostrar por sí solo las notificaciones de Claude Code?
No por defecto. Pon preferredNotifChannel en terminal_bell y elige un bellStyle que haga parpadear la ventana o la barra de tareas, o usa un hook para mostrar un toast.
¿Hay alguna forma gratuita de recibir una notificación en Windows?
Sí. Tanto los hooks de PowerShell de arriba como las notificaciones de escritorio de ccn son gratis. Solo las apps del móvil requieren suscripción o compra vitalicia.