edgaralvarx
Setup · 4 minutos · Mac & Linux

Deja Claude Code
currando solo.
Y que te avise.

Dos trucos que cambian cómo trabajas con Claude Code: activa el modo automático para que pare de pedirte permisos, y conecta Telegram para que te mande un ping cuando termine la tarea. Mientras él itera tú haces otra cosa. Copy-paste exacto abajo.

2
Atajos · cero plugins
~4 min
Setup completo
0 €
Coste extra
01 · Modo automático

Los 5 modos de Claude Code Desktop · solo te interesan 2

Por defecto Claude Code Desktop te pide confirmación cada vez que ejecuta un bash o edita un archivo. Hay 5 modos seleccionables. La mayoría no los usa porque no sabe que existen. Estos son:

1
Solicitar permisos
Default. Pide confirmación en cada paso.
2
Aceptar ediciones
Aplica edits sin preguntar, pero confirma bash.
3
Modo planificación
Solo planifica, no toca nada.
4 ★
Modo automático
Gestiona permisos por contexto. Mantiene anti-injection.
5
Omitir permisos
Bypass total. Para repos con git limpio.

Cómo cambiar de modo

Tienes dos rutas: una rápida durante la sesión, otra para dejarlo configurado de forma permanente.

A · Selector rápido en la sesión

Pulsa ⇧⌘M (Cmd + Shift + M) en cualquier momento. Aparece el menú con los 5 modos numerados. Pulsa 1, 2, 3, 4 o 5 para cambiar al instante.

B · Habilitarlos en Ajustes (permanente)

Para que los modos 4 y 5 estén disponibles, hay que activarlos primero desde Ajustes:

  1. Abre Ajustes → Claude Code en la app Desktop.
  2. Activa el toggle "Permitir modo de permisos automáticos" → desbloquea el modo 4.
  3. Activa el toggle "Permitir modo de omisión de permisos" → desbloquea el modo 5.
Recomendación · empieza por el modo 4

El modo automático (4) es el sweet spot para el 95% de los casos: ejecuta sin pedirte permiso pero mantiene las protecciones contra prompt injection (filtros que bloquean comandos sospechosos inyectados desde fuentes externas). El modo 5 se las salta todas — solo cuando sepas exactamente qué estás haciendo.

Modo 5 · ojo

"Omitir permisos" ejecuta TODO sin filtros, incluyendo rm -rf, git push --force o drops de DB si Claude los propone. Úsalo solo en proyectos con git limpio + backup reciente. Nunca sobre código en producción directa.

02 · Modo pro · Telegram

Que te avise por Telegram cuando termine

Vale, ya no te pide permisos. Pero si tu tarea tarda 5 minutos te toca quedarte mirando la pantalla. La solución: un Stop hook que dispara cuando Claude termina un turno y te manda un mensaje al móvil.

Setup: 3 pasos. Te dejo el código exacto para copiar.

Crea un bot de Telegram

Abre Telegram en el móvil y busca @BotFather. Ejecuta:

  1. Comando /newbot
  2. Pon un nombre visible (ej. "Claude Notify")
  3. Pon un username terminado en bot (ej. edgar_claude_bot)
  4. Copia el token que te devuelve. Pinta así: 1234:ABC...

Saca tu chat ID

Busca @userinfobot en Telegram, dale a /start. Te devuelve un número. Ese es tu chat_id. Cópialo.

Crea los 3 archivos en tu Mac

Abre Terminal y crea estos 3 archivos. El primero guarda credenciales (tu .env), el segundo es el script que dispara la notificación, el tercero registra el hook en Claude Code.

Archivo 1 · ~/.claude/modo-pro.env

TG_TOKEN="TU_TOKEN_AQUI"
TG_CHAT="TU_CHAT_ID"
MIN_DURATION=30

Sustituye TU_TOKEN_AQUI y TU_CHAT_ID por los valores reales. MIN_DURATION es el umbral en segundos: turnos más cortos no notifican (evita spam de respuestas rápidas).

Archivo 2 · ~/.claude/hooks/modo-pro-notify.sh

#!/bin/bash
ENV_FILE="$HOME/.claude/modo-pro.env"
[ -f "$ENV_FILE" ] || exit 0
source "$ENV_FILE"
[ -z "$TG_TOKEN" ] || [ -z "$TG_CHAT" ] && exit 0

INPUT=$(cat)
TRANSCRIPT=$(echo "$INPUT" | jq -r '.transcript_path // empty')
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // empty' | head -c 8)
CWD=$(echo "$INPUT" | jq -r '.cwd // empty' | sed "s|$HOME|~|")
[ -z "$TRANSCRIPT" ] || [ ! -f "$TRANSCRIPT" ] && exit 0

LAST_USER_TS=$(grep '"type":"user"' "$TRANSCRIPT" | tail -1 \
    | jq -r '.timestamp // empty')
[ -z "$LAST_USER_TS" ] && exit 0

START_EPOCH=$(date -ju -f "%Y-%m-%dT%H:%M:%S" \
    "${LAST_USER_TS%.*}" +%s 2>/dev/null || echo 0)
NOW_EPOCH=$(date -u +%s)
DUR=$((NOW_EPOCH - START_EPOCH))

MIN=${MIN_DURATION:-30}
[ "$DUR" -lt "$MIN" ] && exit 0

if [ $DUR -lt 60 ]; then DUR_STR="${DUR}s"
elif [ $DUR -lt 3600 ]; then DUR_STR="$((DUR/60))m $((DUR%60))s"
else DUR_STR="$((DUR/3600))h $(((DUR%3600)/60))m"
fi

LAST_TEXT=$(grep '"type":"assistant"' "$TRANSCRIPT" | tail -1 \
    | jq -r '.message.content[]? | select(.type=="text") | .text' \
    | head -c 280 | tr '\n' ' ')
[ -z "$LAST_TEXT" ] && LAST_TEXT="(turno sin texto)"

MSG="Claude Code listo · ${DUR_STR}
${CWD}
ID ${SESSION_ID}

${LAST_TEXT}"

curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
    --data-urlencode "chat_id=${TG_CHAT}" \
    --data-urlencode "text=${MSG}" >/dev/null 2>&1 &

exit 0

Después: chmod +x ~/.claude/hooks/modo-pro-notify.sh

Archivo 3 · ~/.claude/settings.json (añadir el bloque Stop)

"Stop": [
  {
    "hooks": [
      {
        "type": "command",
        "command": "/Users/TU_USER/.claude/hooks/modo-pro-notify.sh",
        "timeout": 8
      }
    ]
  }
]

Sustituye TU_USER por tu nombre de usuario macOS (sale con whoami). Pega el bloque dentro del objeto "hooks" que ya hay en tu settings.json.

Test rápido

Para verificar que el bot funciona antes de probar Claude:

source ~/.claude/modo-pro.env && curl -s -X POST \
  "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
  --data-urlencode "chat_id=${TG_CHAT}" \
  --data-urlencode "text=Test modo pro OK"

Si te llega el mensaje al Telegram, está listo. Si no, revisa token y chat_id.

03 · Resultado

Cómo se ve cuando Claude termina

Lanzas la tarea, bloqueas el Mac, sacas el móvil. ~2 minutos después llega esto:

CC
Claude Notify
hace 2 min
Claude Code listo · 1m 47s ~/Desktop/jarvis-claude ID a3f9b2c1 He generado el reporte mensual completo con los datos de Shopify, Klaviyo y Meta Ads. Documento en Documentos/MAXODY/. Listo para revisar.

Tres campos clave del mensaje: duración (sabes si tardó lo esperado), directorio (sabes en qué proyecto estabas), resumen (los primeros 280 caracteres de la última respuesta — suficiente para decidir si vuelves a la pantalla o sigues con lo tuyo).

04 · FAQ

Lo que probablemente vas a preguntar

¿Esto consume créditos de la API de Anthropic?

No. El hook es un script bash local que se ejecuta en tu Mac. Telegram tampoco cobra por mensajes de bot. Coste real: 0 €.

¿Por qué solo notifica turnos largos?

Por la línea MIN_DURATION=30. Si Claude responde en menos de 30s no es nada útil que te llegue un push — sería ruido. Sube o baja el umbral según tu gusto.

¿Puedo desactivarlo sin borrar el hook?

Sí. Renombra el .env: mv ~/.claude/modo-pro.env ~/.claude/modo-pro.env.off. El hook ve que el archivo no existe y sale silenciosamente. Cuando quieras volver a activarlo, renombra al revés.

¿Funciona en Windows / WSL?

Bash + curl + jq → sí en WSL. En PowerShell nativo necesitarías reescribirlo. Versión WSL te recomiendo: arranca Claude Code dentro de WSL Ubuntu y sigue los pasos tal cual.

¿No es peligroso tener el token del bot en un .env?

El token del bot solo controla ese bot — si se filtra, el peor escenario es que alguien te mande mensajes spam por ese bot. No tiene acceso a tu cuenta de Telegram. Aún así, dale chmod 600 ~/.claude/modo-pro.env para que solo tu usuario pueda leerlo.

¿Puedo añadir más info al mensaje (commits, archivos modificados…)?

Sí. El hook recibe el path del transcript JSON Lines de la sesión. Puedes parsear ahí los tool_use de tipo Edit/Write y contar archivos tocados. Si te interesa, te subo una versión extendida — escríbeme por IG.

¿Y si quiero que también me avise cuando hay un permiso pendiente?

Eso requiere un hook distinto: PreToolUse con matcher por tipo. Más complejo porque te obligaría a tener Claude en modo default. La solución elegante es la de arriba: pones modo auto + ping al final.