1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
title: "/loop no Claude Code: o cron que vive e morre com seu terminal"
date: 2026-03-09T12:00:00+01:00
draft: false
slug: "loop-cron-claude-code"
slug_en: "claude-code-loop-vs-cron-scheduling"
description: "Claude Code 2.1.71 traz /loop, um scheduler inline para tarefas recorrentes. O que faz, para que serve e por que não substitui um cron de verdade."
tags: ["claude-code", "anthropic", "produtividade", "automação", "cron"]
categories: ["opinião"]

translation:
  hash: ""
  last_translated: ""
  notes: |
    - "de aquella manera": means "sort of / barely / in a half-baked way". Not literal.
    - "ojo": "watch out" / "here's the thing". Not the body part.
    - "chapuza": "hack/bodge/kludge". Quick-and-dirty solution.
    - "barra del bar": "bar counter" — casual conversation metaphor.
    - "chupar banquillo": sports metaphor meaning "to sit on the bench" / "wait unused".
---

Faz meses que estou rodando tarefas do Claude Code com um cron caseiro. Um script Bash que inicia uma sessão headless, passa um prompt, espera terminar e fecha. Funciona. Mais ou menos, mas funciona. Está no [GitHub](https://github.com/frr149/claude-cron) caso alguém queira.

E na sexta-feira, com a versão 2.1.71, a Anthropic introduziu o `/loop`. Um scheduler nativo. Dentro da própria sessão do Claude Code.

Minha primeira reação foi: "Mataram meu projeto."

Minha segunda reação, depois de testar: "Não. Mas quase."

## O que faz o /loop

A sintaxe é direta:

/loop 5m check the deploy status


Isso diz ao Claude Code: "A cada 5 minutos, executa este prompt". Sem sair da sessão. Sem cron. Sem scripts. Claude interpreta o intervalo, agenda a tarefa e a executa enquanto a sessão estiver aberta e *idle*.

Você pode encadear *slash commands*:

/loop 20m /review-pr 1234 /loop 1h make test 2>&1 | tail -5


Cada loop tem uma *rede de segurança*: expira automaticamente em três dias. Porque esquecer um cron é um clássico que dói.

## Para que vou usar

Depois de um dia testando, já arrumei três usos claros:

**1. Monitorar testes enquanto desenvolvo.** Estou no Tokamak, implementando algo grande (cinco estágios de otimização do *cold start*, por exemplo). Em vez de rodar `make test` sempre que respiro, lanço:

/loop 10m make test 2>&1 | grep -E “passed|failed”


Se algo quebrar, Claude me avisa sem que eu precise mexer um dedo.

**2. Supervisão de um deploy.** Quando faço o push de uma nova versão e quero saber quando a CI termina:

/loop 3m gh run list –limit 1


**3. Monitorar a API de status.** Hoje mesmo consertei um bug no Tokamak em que apareciam incidentes do Claude Desktop que não tinham nada a ver com o Claude Code. Enquanto corrigia, teria sido útil ter:

/loop 5m curl -s https://status.claude.com/api/v2/incidents/unresolved.json | python3 -c “import sys,json; print(len(json.load(sys.stdin)[‘incidents’]), ‘incidents’)”


## O que o /loop NÃO é

Agora vem os detalhes. `/loop` é um *in-session scheduler*. Atenção às implicações:

- **Morre com a sessão.** Fecha o terminal, acabou. Não há persistência.
- **Só funciona em *idle*.** Se Claude estiver no meio de uma tarefa, o loop espera. Não interrompe.
- **Máximo de três dias.** Não dá para deixar um loop rodando por uma semana.
- **Sem estado entre execuções.** Cada iteração é um novo prompt. Não acumula contexto das iterações anteriores.

Traduzindo: `/loop` é um `watch` com esteróides. Não é um cron.

## E para que serve o cron

Meu [claude-cron](https://github.com/frr149/claude-cron) faz algo fundamentalmente diferente. Ele inicia uma sessão **nova** em modo *headless*, executa o prompt e encerra. Não precisa de um terminal aberto. Não precisa de uma sessão ativa. Usa `launchd` (ou `cron`, ou `systemd`, o que você tiver) e funciona mesmo que você esteja dormindo.

| | `/loop` | `claude-cron` |
|---|---|---|
| Requer sessão aberta | Sim | Não |
| Sobrevive ao fechamento do terminal | Não | Sim |
| Duração máxima | 3 dias | Sem limite |
| Uso ideal | "Monitore isso enquanto trabalho" | "Faça isso todas as noites às 3h" |
| Complexidade | Zero (um comando) | Script + launchd/cron |

São complementares. `/loop` para o efêmero, `claude-cron` para o permanente.

Um exemplo real: tenho um cron que toda noite traduz novos posts do meu blog para quatro idiomas e faz o commit. Isso `/loop` não pode fazer. Não vou deixar um terminal aberto a noite toda para que um loop se lembre de traduzir às 3h.

Mas se estou escrevendo um post e quero que o Claude revise a ortografia a cada 15 minutos enquanto edito... `/loop` é perfeito. Não preciso montar infraestrutura para algo que vai durar uma tarde.

## O futuro: *scheduled tasks*

Há um terceiro participante que vai complicar as coisas: as *scheduled tasks* do Claude Code e Cowork. Tarefas agendadas que rodam em segundo plano, sem sessão, gerenciadas pela Anthropic. Isso foi o que causou o incidente do *daylight saving time* neste fim de semana (um *infinite loop* buscando tarefas no horário que não existia).

Quando isso amadurecer, provavelmente será o fim do `claude-cron`. Um scheduler nativo, integrado com autenticação, sem scripts Bash, sem `launchd`. Mas isso é futuro. Hoje, as *scheduled tasks* estão em *preview* e quebram por causa do horário de verão. Então meu script Bash vai continuar no banco de reservas mais um pouco.

## Em resumo

`/loop` é uma ferramenta brilhante para um caso de uso específico: tarefas recorrentes e efêmeras dentro de uma sessão de trabalho. Não substitui um cron, mas elimina a necessidade de um para 80% dos casos do dia a dia.

Meu fluxo agora é: `/loop` para monitorar coisas enquanto trabalho, `claude-cron` para as tarefas noturnas e um olho nas *scheduled tasks* para quando a Anthropic resolver o problema do horário de verão.

Três camadas de automação. Cada uma no seu lugar. Às vezes, a solução não é escolher uma ferramenta, mas saber quando usar cada uma.