Notificaciones de Claude Code en tu Mac: cuando termina o te necesita.

Puedes recibir notificaciones de Claude Code en cualquier terminal de Mac cuando termina o se detiene para esperar tu permiso. La configuración depende del terminal que uses.

Por defecto, Claude Code solo envía notificaciones de escritorio en Ghostty, Kitty e iTerm2, cuando termina o espera tu permiso y parece que no estás pendiente del terminal. Terminal.app, Warp y el terminal de VS Code no muestran ningún banner. En estos casos, configura Local notifications en /config para usar la campana del terminal, o añade un hook: Stop para cuando termina y Notification para cuando te necesita.

Última actualización:

Cowork Island

macOS 14 o posterior.
Apple silicon e Intel.
El plan Gratis no requiere una cuenta.

Descarga gratis

Consulta qué hace tu terminal sin configurar nada.

El aviso integrado de Claude Code se activa cuando Claude termina una tarea o se detiene para pedir permiso y parece que no estás pendiente del terminal. Que ese aviso aparezca como un banner depende de la app de terminal.

El aviso por defecto de Claude Code en Mac, según el terminal
TerminalSin configurar nadaQué hacer
GhosttyNotificación de escritorioPermite las notificaciones del terminal en macOS.
KittyNotificación de escritorioPermite las notificaciones del terminal en macOS.
iTerm2Notificación de escritorio, tras cambiar un ajuste de iTerm2Activa los avisos de iTerm2 generados por secuencias de escape (siguiente sección).
Terminal.appSin banner. La configuración por defecto solo activa la campana si la campana audible de Terminal está desactivada.Usa el ajuste de campana del terminal o un hook.
WarpSin bannerUsa el ajuste de campana del terminal o un hook.
Terminal de VS CodeSin bannerUsa el ajuste de campana del terminal o un hook.
tmux, en cualquier terminalLas notificaciones no lleganAñade set -g allow-passthrough on a ~/.tmux.conf y ejecuta tmux source-file ~/.tmux.conf.

Activa el aviso integrado.

Claude Code tiene un ajuste para esto: preferredNotifChannel. En Claude Code, escribe /config y abre Local notifications. El valor por defecto es auto. Las demás opciones son terminal_bell, iterm2, iterm2_with_bell, kitty, ghostty y notifications_disabled.

La campana del terminal es el sonido breve o destello que emite un terminal cuando un programa reclama tu atención. Para usarla en Terminal.app, Warp o VS Code, también puedes añadir esta línea a un archivo de configuración de Claude Code, como ~/.claude/settings.json, dentro de sus llaves exteriores:

"preferredNotifChannel": "terminal_bell"

  • iTerm2: abre Settings > Profiles > Terminal, marca Notification Center Alerts, haz clic en Filter Alerts y activa Send escape sequence-generated alerts.
  • Terminal.app: para que la campana se note más, abre Settings > Profiles > Advanced y, en Bell, elige que el icono del Dock muestre un distintivo o dé saltos cuando Terminal esté en segundo plano. Si aceptaste la configuración del terminal que ofrece Claude Code al iniciarse por primera vez, se desactivó la campana audible de Terminal. Marca Audible bell en ese mismo apartado si quieres oírla.
  • Cualquier terminal: la propia app de terminal necesita permiso para mostrar notificaciones en Ajustes del Sistema > Notificaciones.

Algunas publicaciones antiguas indican que ejecutes claude config set. Ese comando ya no existe: usa /config o edita el archivo de configuración.

Usa Stop para cuando termina y Notification para cuando te necesita.

Un hook es un comando de shell que Claude Code ejecuta en un momento determinado. Los hooks se definen en un archivo de configuración. Funcionan en todos los terminales, porque el terminal no interviene en su ejecución.

La propia receta de Anthropic para recibir avisos usa el evento Notification. Ese evento solo te avisa de que Claude ha terminado mediante idle_prompt, unos 60 segundos después, y solo si no has escrito nada desde entonces. Para recibir un aviso en cuanto Claude se detenga, usa Stop.

Eventos de hooks de Claude Code para los avisos
Evento y filtro de coincidenciaCuándo se activaPara qué usarlo
StopCuando Claude termina de responder, al final de cada turno, pero no cuando lo interrumpes.Un aviso cuando Claude termina
Notification + permission_promptCuando una solicitud de permiso lleva unos seis segundos esperando. Escribir en el terminal retrasa el aviso.Un aviso cuando Claude necesita tu permiso
Notification + elicitation_dialogCuando un servidor MCP (una herramienta conectada a Claude Code) abre un formulario y llevas unos seis segundos sin escribir.Un aviso cuando Claude necesita que respondas
Notification + elicitation_url_dialogCuando un servidor MCP te pide que abras una página web y llevas unos seis segundos sin escribir.Un aviso cuando Claude necesita que respondas
Notification + idle_promptUnos 60 segundos después de que Claude termine, si no has escrito nada y no queda ningún subagente en marcha en segundo plano.Un recordatorio que llega más tarde

Un turno que termina con un error de la API, como un límite de solicitudes, activa StopFailure en lugar de Stop. Los hooks de notificación no pueden bloquear nada: solo ejecutan tu comando.

Copia un hook listo para usar.

Cada fragmento de abajo va en ~/.claude/settings.json, cuya configuración se aplica a todos tus proyectos. Se ha comprobado que cada uno tiene una sintaxis válida de JSON y shell, y ninguno necesita software adicional.

Añade sin sobrescribir. Si el archivo ya tiene un objeto "hooks", añade dentro la clave "Stop" o "Notification", junto a lo que ya haya. Si esa clave ya existe (Cowork Island, por ejemplo, añade ambas), no la añadas otra vez: copia la entrada del fragmento, la parte entre llaves dentro de los corchetes, como un elemento nuevo en la lista de esa clave. Separa los elementos con una coma. No pegues un segundo bloque "hooks", porque puedes perder tus otros hooks, ni sustituyas el archivo, porque borrarías los demás ajustes. El archivo usa JSON estricto: no admite comentarios ni comas al final de las listas u objetos.

Un banner en el Mac cuando Claude termina.

En ~/.claude/settings.json

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title \"Claude Code\" sound name \"Glass\"' -e 'end run' \"Finished in ${PWD##*/}\""
          }
        ]
      }
    ]
  }
}

Un banner en el Mac cuando Claude necesita tu permiso.

En ~/.claude/settings.json

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|elicitation_dialog|elicitation_url_dialog",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title \"Claude Code needs you\" sound name \"Ping\"' -e 'end run' \"Waiting for your OK in ${PWD##*/}\""
          }
        ]
      }
    ]
  }
}

Ambos banners muestran el nombre de la carpeta donde se ejecuta la sesión.

Permite que Editor de Scripts muestre los banners.

En Mac, los banners de osascript proceden de la app integrada Editor de Scripts. Hasta que Editor de Scripts tenga permiso para mostrar notificaciones, el comando falla sin avisar y macOS no te pide permiso.

  1. En Terminal, ejecuta esto una vez:

osascript -e 'display notification "test"'

  1. Abre Ajustes del Sistema > Notificaciones, busca Editor de Scripts y activa Permitir notificaciones.

Un sonido en lugar de un banner.

En ~/.claude/settings.json

{
  "hooks": {
    "Stop": [
      { "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" } ] }
    ],
    "Notification": [
      { "matcher": "permission_prompt", "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Ping.aiff" } ] }
    ]
  }
}

Un aviso de voz.

En ~/.claude/settings.json

{
  "hooks": {
    "Stop": [
      { "hooks": [ { "type": "command", "command": "say \"Claude has finished\"", "async": true } ] }
    ],
    "Notification": [
      { "matcher": "permission_prompt", "hooks": [ { "type": "command", "command": "say \"Claude needs your permission\"", "async": true } ] }
    ]
  }
}

"async": true permite que Claude Code siga trabajando mientras el Mac habla.

Para recibir un banner con un evento y un sonido con el otro, usa el generador de hooks de notificación dos veces: elige un evento y su tipo de aviso cada vez, y después usa el cuadro para combinar configuraciones y añadir ambos resultados a tu archivo. El generador te indica en qué archivo va cada fragmento y todo se ejecuta en tu navegador.

Comprueba estos puntos si no pasa nada.

  • Marca la carpeta como de confianza. Claude Code no ejecuta ningún hook, ni siquiera los de ~/.claude/settings.json, hasta que aceptas el diálogo de confianza del espacio de trabajo para esa carpeta.
  • Comprueba qué se ha cargado. Escribe /hooks en Claude Code. Muestra tus hooks y el archivo del que procede cada uno, pero no permite añadirlos. Claude Code suele detectar tus cambios por sí solo. Si no lo hace, reinicia la sesión.
  • Macs de empresa. Una organización puede permitir únicamente sus propios hooks administrados. En ese caso, /hooks muestra «Only hooks from managed settings run here» y los hooks personales no se ejecutan.
  • Dos avisos a la vez. Los hooks de todos los niveles de configuración se acumulan. Por tanto, si hay un hook de aviso en un archivo del proyecto y otro distinto en tu archivo de usuario, se activan ambos. Un hook exactamente igual en varios archivos solo se ejecuta una vez. Los hooks también se ejecutan junto con la notificación integrada. Si recibes ambos avisos, cambia Local notifications a notifications_disabled y conserva el hook.
  • Demasiados avisos. Stop se activa después de cada turno, no solo cuando termina una tarea completa.
  • Si también usas Cowork Island. Mantén cada uno de tus hooks en su propia entrada, como en los fragmentos de arriba, y fuera de ~/.perch/. La app solo considera suyos los comandos que contienen /.perch/ y sustituye las entradas completas. Por eso, un comando colocado dentro de una de sus entradas se eliminaría junto con ella.

La opción sin configuración.

Cowork Island es una app para Mac del creador de esta guía. Reúne tus sesiones de agentes de IA en un panel bajo el notch y muestra el estado de cada una para que veas de un vistazo cuál te necesita. Funciona con o sin notch.

  • Claude Code se conecta solo. La app añade sus propias entradas de hooks, que conviven con tus hooks existentes.
  • Cada sesión aparece como En curso, Pendiente o «Te necesita». Por defecto, cuando una sesión pasa a necesitarte, la isla se abre sola, salvo que el terminal de esa sesión ya esté en primer plano.
  • Cuando termina una sesión, la isla se abre durante 5 segundos por defecto. Puedes cambiarlo para que aparezca un punto en la isla o no ocurra nada.
  • En Claude Code, puedes permitir o rechazar una acción, o responder a una pregunta con varias opciones desde la isla. Responder ahí es gratis.
  • Los sonidos están desactivados hasta que los actives. El sonido «Se necesita aprobación» es gratis; el de «Sesión completada» forma parte de Pro.
  • La app no muestra banners propios de macOS. El aviso consiste en que la isla se abre y, si has activado el sonido, también suena.

Gratis muestra una tarjeta de sesión a la vez. Pro muestra todas tus sesiones, y saltar a la ventana, pestaña o panel de una sesión es una función de Pro. Empieza sola una prueba de Pro de 7 días, solo una vez por Mac, y no pide datos de pago. Consulta los planes y la guía de instalación.

Descarga gratis

Fuentes.

Recibe el enlace de descarga para usarlo más tarde.