Ejecutar prompts en un horario
Utilice /loop y las herramientas de programación cron para ejecutar prompts repetidamente, sondear el estado o establecer recordatorios únicos dentro de una sesión de Claude Code.
Las tareas programadas con alcance de sesión permiten que Claude vuelva a ejecutar un prompt automáticamente en un intervalo dentro de una sesión de Claude Code. Úsalas para sondear un despliegue, supervisar un PR, verificar una compilación de larga duración o recordarte que debes hacer algo más adelante en la sesión.
[!NOTE]
Estos casos se tratan en otras páginas:
Las tareas tienen alcance de sesión. Cuando reanudas con --resume o --continue, Claude Code restaura las tareas que no han expirado, excepto las enumeradas en Limitaciones. Para la programación que sobrevive independientemente de cualquier sesión, crea una tarea programada en la nube, configura una tarea programada de Desktop o usa GitHub Actions.
Comparar opciones de programación
Claude Code ofrece tres formas de programar trabajo recurrente o puntual:
| Cloud | Desktop | /loop |
|
|---|---|---|---|
| Se ejecuta en | Cloud, administrado por Anthropic de forma predeterminada | Su máquina | Su máquina |
| Requiere máquina encendida | No | Sí | Sí |
| Requiere sesión abierta | No | No | Sí |
| Persistente entre reinicios | Sí | Sí | Restaurado en --resume, con excepciones |
| Acceso a archivos locales | No (clon nuevo) | Sí | Sí |
| Servidores MCP | Conectores configurados por tarea | Archivos de configuración y conectores | Heredado de la sesión |
| Solicitudes de permiso | Modo automático de forma predeterminada | Configurable por tarea | Heredado de la sesión |
| Programación personalizable | Sí | Sí | Sí |
| Intervalo mínimo | 1 hora | 1 minuto cuando Claude lo establece, 1 hora en los formularios | 1 minuto |
[!TIP]
Utilice tareas en la nube para trabajo que debe ejecutarse de forma confiable sin su máquina. Utilice tareas de Desktop cuando necesite acceso a archivos y herramientas locales. Utilice
/looppara sondeo rápido durante una sesión.
Ejecutar un prompt repetidamente con /loop
El /loop bundled skill es la forma más rápida de ejecutar un prompt repetidamente mientras la sesión permanece abierta. Tanto el intervalo como el prompt son opcionales, y lo que proporcione determina cómo se comporta el bucle.
| Lo que proporciona | Ejemplo | Qué sucede |
|---|---|---|
| Intervalo y prompt | /loop 5m check the deploy |
Su prompt se ejecuta en un horario fijo |
| Solo prompt | /loop check the deploy |
Su prompt se ejecuta en un intervalo que Claude elige en cada iteración |
| Solo intervalo, o nada | /loop |
El prompt de mantenimiento integrado se ejecuta, o su loop.md si existe uno |
También puede pasar un skill como el prompt, por ejemplo /loop 20m /review-pr 1234, para volver a ejecutar ese skill en cada iteración. Un disparo programado solo ejecuta skills que Claude está autorizado a invocar por su cuenta. Lo siguiente llega a Claude como texto sin formato en lugar de ejecutarse:
- Comandos integrados como
/permissions,/model, o/clear - Skills marcados
disable-model-invocation: true, incluido el bundled skill/verify - Skills retenidos de Claude por una configuración
skillOverrideso una regla de denegación deSkill - Prompts MCP como
/mcp__github__list_prs
Ejecutar en un intervalo fijo
Cuando proporciona un intervalo, Claude lo convierte en una expresión cron, programa el trabajo y confirma la cadencia y el ID del trabajo.
/loop 5m check if the deployment finished and tell me what happened
El intervalo puede encabezar el prompt como un token simple como 30m, o seguirlo como una cláusula como every 2 hours. Las unidades admitidas son s para segundos, m para minutos, h para horas y d para días.
Los segundos se redondean al minuto más cercano ya que cron tiene una granularidad de un minuto. Los intervalos que no se asignan a un paso cron limpio, como 7m o 90m, se redondean al intervalo más cercano que sí lo hace y Claude le dice cuál eligió.
Dejar que Claude elija el intervalo
Cuando omite el intervalo, Claude elige uno dinámicamente en lugar de ejecutarse en un horario cron fijo. Después de cada iteración, elige un retraso entre un minuto y una hora según lo que observó: esperas cortas mientras una compilación se está terminando o un PR está activo, esperas más largas cuando no hay nada pendiente. El retraso elegido y la razón del mismo se imprimen al final de cada iteración.
El ejemplo a continuación verifica CI y comentarios de revisión, con Claude esperando más tiempo entre iteraciones una vez que el PR se queda en silencio:
/loop check whether CI passed and address any review comments
En una sesión donde la herramienta Monitor está disponible, Claude puede usarla directamente cuando solicita un horario /loop dinámico. Monitor ejecuta un script de fondo y transmite cada línea de salida, lo que evita el sondeo por completo y a menudo es más eficiente en tokens y más receptivo que volver a ejecutar un prompt en un intervalo.
Un bucle programado dinámicamente aparece en tu lista de tareas programadas como cualquier otra tarea, por lo que puedes enumerarlo o cancelarlo de la misma manera. La lista muestra su despertar pendiente como una tarea de una sola ejecución, por lo que un despertar programado para :00 o :30 puede ejecutarse un poco antes. El vencimiento de siete días también se aplica al bucle.
[!NOTE]
Los intervalos elegidos dinámicamente y el prompt de mantenimiento integrado funcionan en todos los proveedores, y con obtención de banderas de características desactivada. En Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform y Microsoft Foundry, o con obtención desactivada, ambos requieren Claude Code v2.1.248 o posterior.
Ejecutar el prompt de mantenimiento integrado
Cuando omite el prompt, Claude usa un prompt de mantenimiento integrado en lugar de uno que proporcione. En cada iteración, trabaja a través de lo siguiente, en orden:
- continuar cualquier trabajo inacabado de la conversación
- cuidar el pull request de la rama actual: comentarios de revisión, ejecuciones de CI fallidas, conflictos de fusión
- ejecutar pasadas de limpieza como búsquedas de errores o simplificación cuando no hay nada más pendiente
Claude no inicia nuevas iniciativas fuera de ese alcance, y las acciones irreversibles como insertar o eliminar solo proceden cuando continúan algo que la transcripción ya autorizó.
/loop
Un /loop simple ejecuta este prompt en un intervalo elegido dinámicamente. Agregue un intervalo, por ejemplo /loop 15m, para ejecutarlo en un horario fijo en su lugar. Para reemplazar el prompt integrado con el suyo propio, consulte Personalizar el prompt predeterminado con loop.md.
Personalizar el prompt predeterminado con loop.md
Cree un archivo loop.md para reemplazar el prompt de mantenimiento integrado con sus propias instrucciones. Define un único prompt predeterminado para /loop simple, no una lista de tareas programadas separadas, y Claude Code lo ignora siempre que proporcione un prompt en la línea de comandos. Para programar prompts adicionales junto a él, use /loop <prompt> o pida a Claude directamente.
Claude busca el archivo en dos ubicaciones y usa el primero que encuentra.
| Ruta | Alcance |
|---|---|
.claude/loop.md |
Nivel de proyecto. Tiene precedencia cuando ambos archivos existen. |
~/.claude/loop.md |
Nivel de usuario. Se aplica en cualquier proyecto que no defina el suyo propio. |
El archivo es Markdown simple sin estructura requerida. Escríbalo como si estuviera escribiendo el prompt /loop directamente. El siguiente ejemplo mantiene una rama de lanzamiento saludable:
Check the `release/next` PR. If CI is red, pull the failing job log,
diagnose, and push a minimal fix. If new review comments have arrived,
address each one and resolve the thread. If everything is green and
quiet, say so in one line.
Las ediciones a loop.md tienen efecto en la siguiente iteración, por lo que puede refinar las instrucciones mientras un bucle se está ejecutando. Cuando no existe loop.md en ninguna ubicación, el bucle vuelve al prompt de mantenimiento integrado. Mantenga el archivo conciso: el contenido más allá de 25,000 bytes se trunca.
Detener un bucle
- Bucle de ritmo propio: mientras el bucle espera su siguiente iteración, presiona
Escpara detenerlo. También puedes detenerlo conCtrl+Cmientras Claude está inactivo, excepto en una sesión en segundo plano a la que te hayas adjuntado. Un avisoPending wakeup cancelledconfirma que el bucle no volverá a ejecutarse. - Bucle de intervalo fijo: para detener un bucle como
/loop 5m, pídele a Claude que lo cancele, por ejemplocancel the deploy check loop.EscyCtrl+Cno lo detienen, ni tampoco ninguna tarea que hayas programado pidiéndoselo a Claude directamente. Un bucle que no canceles termina cuando transcurren siete días.
En modo de ritmo propio, Claude también puede terminar el bucle por su cuenta una vez que la tarea se complete. Claude llama a la herramienta ScheduleWakeup con stop: true, que cancela el despertar pendiente inmediatamente. Si una iteración termina sin reprogramar ni detener, Claude Code programa un despertar de respaldo aproximadamente 20 minutos después y termina el bucle cuando esa iteración tampoco se reprograma.
Desconectarse sin detener un bucle
Cuando estás adjuntado a una sesión en segundo plano y Claude está inactivo, presiona Ctrl+C dos veces en un prompt vacío para desconectarte. Un bucle de ritmo propio que esté esperando allí su siguiente iteración sigue ejecutándose, y esa iteración comienza según lo programado. Para detener el bucle en su lugar, presiona Esc antes de desconectarte. Desconectarse con Ctrl+C sin detener el bucle requiere Claude Code v2.1.295 o posterior.
Establecer un recordatorio único
Para recordatorios únicos, describa lo que desea en lenguaje natural en lugar de usar /loop. Claude programa una tarea de un solo disparo que se elimina a sí misma después de ejecutarse.
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claude fija la hora de disparo a un minuto y hora específicos usando una expresión cron y confirma cuándo se ejecutará.
Gestionar tareas programadas con alcance de sesión
Pida a Claude en lenguaje natural que enumere o cancele tareas, o haga referencia directamente a las herramientas subyacentes.
what scheduled tasks do I have?
cancel the deploy check job
Estas son las herramientas subyacentes que Claude utiliza:
| Herramienta | Propósito |
|---|---|
CronCreate |
Programar una nueva tarea. Acepta una expresión cron de 5 campos, el prompt a ejecutar y si se repite o se ejecuta una sola vez. |
CronList |
Enumerar las tareas programadas con sus IDs, horarios, próximas horas de ejecución y prompts. |
CronDelete |
Cancelar una tarea por ID. |
Cada tarea programada tiene un ID de 8 caracteres que puede pasar a CronDelete. Una sesión puede contener hasta 50 tareas programadas a la vez.
Cómo se ejecutan las tareas programadas con alcance de sesión
El programador verifica cada segundo si hay tareas vencidas y las encola con baja prioridad. Un prompt programado se ejecuta entre sus turnos, no mientras Claude está en medio de una respuesta. Si Claude está ocupado cuando vence una tarea, el prompt espera hasta que termine el turno actual.
Todos los tiempos se interpretan en su zona horaria local. Una expresión cron como 0 9 * * * significa las 9am donde está ejecutando Claude Code, no UTC.
Jitter
Una tarea programada puede ejecutarse en un momento distinto al que indica su programación. Si las tareas de cada sesión se ejecutaran exactamente según lo programado, muchas de ellas llamarían a la API en el mismo momento, por lo que Claude Code desplaza la hora de ejecución de cada tarea. Las tareas recurrentes se ejecutan con retraso, excepto una tarea que se ejecuta cada cinco minutos, escrita como */5 * * * *. Las tareas únicas programadas en punto o a la media hora se ejecutan un poco antes.
Para ver cuándo le toca a una tarea su próxima ejecución, lee la fila debajo de la llamada CronCreate de Claude en tu terminal. La fila muestra esa hora después de la programación, por ejemplo next run 10:21 AM. Para volver a comprobarlo más tarde, pídele a Claude que liste tus tareas y busca next run en las filas debajo de la llamada CronList. Las horas de próxima ejecución en estas filas requieren Claude Code v2.1.299 o posterior.
Cuánto se retrasa una tarea recurrente
A menos que se ejecute cada cinco minutos, una tarea recurrente inicia cada ejecución con un retraso de hasta la mitad del intervalo hasta la siguiente ejecución, y como máximo de 30 minutos. Tu tarea corresponde a uno de estos tres casos:
- Ejecuciones espaciadas uniformemente: una tarea con intervalos iguales, como cada hora, una vez al día o cada 10 minutos, se ejecuta con la misma cantidad de minutos de retraso cada vez, incluso cuando la sesión está inactiva.
- Ejecuciones espaciadas de forma irregular: una tarea con intervalos desiguales, como una programada para
:00y:15cada hora, puede ejecutarse con una cantidad distinta de minutos de retraso en cada una. - Cada cinco minutos: una tarea escrita como
*/5 * * * *no se retrasa. Una ejecución exactamente cinco minutos después de la anterior empezaría después de que una caché de prompts de cinco minutos hubiera expirado, por lo que cada ejecución empieza 15 segundos antes.
Busca tu programación en la primera columna de esta tabla para ver cuándo empieza cada una de sus ejecuciones.
| Programación | Cuándo empieza cada ejecución |
|---|---|
Cada 5 minutos, escrita como */5 * * * *, que es lo que crea /loop 5m |
4 minutos y 45 segundos después de la ejecución anterior |
| Cada 10 minutos | Entre 0 y 5 minutos de retraso |
| Cada 30 minutos | Entre 0 y 15 minutos de retraso |
| Cada hora, o con menos frecuencia, como una vez al día | Entre 0 y 30 minutos de retraso |
Por ejemplo, 7,37 * * * * programa una tarea para :07 y :37, que están separados por 30 minutos, por lo que su retraso está entre 0 y 15 minutos. Si el retraso de esta tarea es de 14 minutos, se ejecuta a las :21 y :51 cada hora. Cambiar la programación a un minuto diferente mueve la hora de ejecución, y aun así se agrega un retraso encima.
Cuándo una tarea única se ejecuta antes
Una tarea única programada para :00 o :30 se ejecuta hasta 90 segundos antes. Claude Code no desplaza una tarea única programada para cualquier otro minuto, así que cuando el momento exacto importa, prográmala fuera de la hora en punto y la media hora: 3 9 * * * en lugar de 0 9 * * *.
Vencimiento de siete días
Las tareas recurrentes expiran automáticamente 7 días después de su creación. La tarea se ejecuta una última vez, luego se elimina a sí misma. Esto limita cuánto tiempo puede ejecutarse un bucle olvidado. Si necesitas que una tarea recurrente dure más, cancélala y vuelve a crearla antes de que expire, o usa tareas programadas en la nube o tareas programadas de Desktop para una programación duradera.
Referencia de expresión cron
CronCreate acepta expresiones cron estándar de 5 campos: minute hour day-of-month month day-of-week. Todos los campos admiten comodines (*), valores únicos (5), pasos (*/15), rangos (1-5) y listas separadas por comas (1,15,30).
| Ejemplo | Significado |
|---|---|
*/5 * * * * |
Cada 5 minutos |
0 * * * * |
Cada hora en punto |
7 * * * * |
Cada hora a los 7 minutos |
0 9 * * * |
Todos los días a las 9am local |
0 9 * * 1-5 |
Días de semana a las 9am local |
30 14 15 3 * |
15 de marzo a las 2:30pm local |
El día de la semana usa 0 o 7 para domingo hasta 6 para sábado. La sintaxis extendida como L, W, ? y alias de nombres como MON o JAN no se admiten.
Cuando tanto el día del mes como el día de la semana están restringidos, una fecha coincide si cualquiera de los campos coincide. Esto sigue la semántica estándar de vixie-cron.
Deshabilitar tareas programadas con alcance de sesión
Establezca CLAUDE_CODE_DISABLE_CRON=1 en su entorno para deshabilitar completamente el programador. Las herramientas cron y /loop dejan de estar disponibles, y cualquier tarea ya programada deja de ejecutarse. Consulte Variables de entorno para la lista completa de banderas de deshabilitación.
Limitaciones
La programación con alcance de sesión tiene limitaciones inherentes:
- Las tareas solo se ejecutan mientras Claude Code está ejecutándose e inactivo. Cerrar la terminal o dejar que la sesión salga detiene su ejecución. Poner la sesión en segundo plano traslada las tareas
/loopa una sesión en segundo plano, que sigue ejecutándose sin una terminal. - Sin recuperación de disparos perdidos. Si el tiempo programado de una tarea pasa mientras Claude está ocupado en una solicitud de larga duración, se ejecuta una vez cuando Claude queda inactivo, no una vez por intervalo perdido.
- En una sesión en segundo plano, un loop autorrítmico se detiene si su próxima activación vence mientras el proceso de la sesión no se está ejecutando, por ejemplo después de un fallo. Cuando el proceso se inicia de nuevo, la transcripción muestra un aviso de que la activación no se ejecutará. Para continuar el loop, responde a la sesión y pídele a Claude que lo mantenga en ejecución.
- Cuando reanudas una sesión con
claude --resumeoclaude --continue, Claude Code restaura las tareas programadas conCronCreate, excepto las tareas recurrentes que han expirado y las tareas únicas cuyo tiempo programado ha pasado. Un/loopautorrítmico no se restaura, así que ejecuta/loopnuevamente para reiniciarlo. - Una tarea recurrente restaurada no se ejecuta para las ejecuciones que perdió mientras la sesión no estaba en ejecución. Su próxima ejecución es la primera que vence después de reanudar, y a esa ejecución se le aplica jitter.
- Cuando reanudas con
claude --resumeoclaude --continue, Claude Code no reinicia los comandos de Bash en segundo plano ni los monitores que se estaban ejecutando cuando terminó la sesión. Si todavía necesitas alguno, pídele a Claude que lo inicie de nuevo. - Con obtención de banderas de características desactivada, Claude Code almacena una tarea que solicitó mantener entre sesiones en el archivo
.claude/scheduled_tasks.jsondel proyecto. Cuando el directorio.claudeo ese archivo es un enlace simbólico, Claude Code devuelve un error en lugar de programar la tarea. Una tarea guardada se ejecuta solo en la carpeta del proyecto donde la creó. Si copia el archivo en otra carpeta, como un nuevo worktree, las sesiones allí enumeran las tareas copiadas pero no las ejecutan, así que cree la tarea nuevamente en esa carpeta.
Para la automatización impulsada por cron que necesita ejecutarse sin supervisión:
- Tareas programadas en la nube: se ejecutan en la nube en un horario, mediante llamada a API o en eventos de GitHub
- GitHub Actions: utilice un disparador
scheduleen CI - tareas programadas de Desktop: se ejecutan localmente en su máquina