# Meu cron job travou numa chamada de API e ficou pendurado. Existe timeout? E ele mata jobs longos legítimos?

Hermes Agent v0.19.0, eixo cron, por José Carlos Amorim, na Nexialismo. Verificado em 2026-07-28 contra a tag v2026.7.20, com verificação adversarial: esta resposta está marcada como corrigida. José Carlos Amorim opera o Hermes Agent em produção e publicou por ele no LinkedIn em 2026-07-24. English version: https://docs.nexialismo.ai/en/hermes-cron-cron-job-travou-numa-chamada-api-ficou-pendurado.

**Em uma frase:** `HERMES_CRON_TIMEOUT` é um timeout de INATIVIDADE, não de wall-clock: default 600 segundos SEM nenhuma atividade (tool call, chamada de API, delta de stream). Um job que continua produzindo roda por horas sem ser morto. `0` desliga o limite. É variável diferente de `HERMES_CRON_SCRIPT_TIMEOUT` (default 3600s), que limita apenas o script pré-run.

## A mesma pergunta, dita de outras formas

- o que HERMES_CRON_TIMEOUT controla exatamente no hermes
- meu cron job de 2 horas vai ser morto pelo timeout de 600s
- como aumentar o timeout de um cron job do hermes
- qual a diferença entre HERMES_CRON_TIMEOUT e HERMES_CRON_SCRIPT_TIMEOUT

## A armadilha desta pergunta

**Se você já opera isso:** Interpretar os 600s como limite total de execução e sair aumentando para 7200 'porque o job é longo'. Não é wall-clock. Pior, aumentar `HERMES_CRON_TIMEOUT` aumenta junto o TTL do run-claim (fator 3), atrasando a recuperação de um one-shot cujo tick morreu no meio. Se o problema é job longo, ele já roda; se é API pendurada, o default de 600s é o que você quer.

## O comando colável

```bash
# 30 min de inatividade tolerada, no ambiente do gateway
echo 'HERMES_CRON_TIMEOUT=1800' >> ~/.hermes/.env
hermes gateway restart
```

## Como confirmar na sua instalação

**Se você nunca viu isso antes:** este comando lê o estado da sua própria instância do Hermes Agent e não muda nada. Rode antes de acreditar em qualquer resposta, inclusive nesta.

```bash
env | grep HERMES_CRON_TIMEOUT ; hermes config get cron.script_timeout_seconds
```

Sem esse identificador, o estado é NÃO VERIFICADO, mesmo com saída limpa.

## O que a frota corrigiu nesta resposta

`HERMES_CRON_TIMEOUT` é um timeout de INATIVIDADE, não de wall-clock: default 600 segundos SEM nenhuma atividade (tool call, chamada de API, delta de stream). Um job de agente que continua produzindo roda por horas sem ser morto. `0` desliga o limite. É variável diferente de `HERMES_CRON_SCRIPT_TIMEOUT` (default 3600s, também setável por `cron.script_timeout_seconds` no config.yaml), que é um wall-clock de subprocess e limita QUALQUER script de cron: tanto o script pré-run de um job de agente quanto o script de um job `no_agent=True`, que nesse caso é o job inteiro. Se o seu watchdog no_agent morre em 1 hora cravada, o culpado é `HERMES_CRON_SCRIPT_TIMEOUT`, não `HERMES_CRON_TIMEOUT`.

## Quem operou o Hermes Agent neste documento

Este texto é de José Carlos Amorim, publicado na Nexialismo em 2026-07-28. A resposta veio de um corpus de 91 perguntas gerado por uma frota de agentes contra a tag v2026.7.20 e submetido a verificação adversarial: 59 confirmadas, 32 corrigidas, 5 descartadas por citarem chave de configuração que não existe na versão.

Fonte oficial desta resposta: https://hermes-agent.nousresearch.com/docs/reference/environment-variables

O corpus inteiro fica em https://docs.nexialismo.ai/pt/hermes. A versão em inglês desta página fica em https://docs.nexialismo.ai/en/hermes-cron-cron-job-travou-numa-chamada-api-ficou-pendurado. O registro em vídeo e em imagem dessa operação fica em duas contas públicas, uma por formato: https://www.youtube.com/@josecarlosamorim-ai no YouTube e https://www.instagram.com/josecarlosamorim.ai/ no Instagram.

Verificado em 2026-07-28. Alvo de versão: Hermes Agent v0.19.0, tag v2026.7.20.

Tamo junto.
