# Por que o `execute_code` não funciona dentro dos meus cron jobs? Funciona normal no chat.

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-execute-code-funciona-dentro-meus-cron-jobs-funciona.

**Em uma frase:** Porque `approvals.cron_mode` vem `deny` por default, e nesse modo o `execute_code` é bloqueado incondicionalmente em sessões de cron. A mensagem é `BLOCKED: execute_code runs arbitrary local Python (including subprocess calls that bypass shell-string approval checks)`. Para liberar, `approvals.cron_mode: approve` (com aspas ou a palavra `approve`), ou use um job com `--script` em vez de código inline.

## A mesma pergunta, dita de outras formas

- cron job do hermes bloqueia execute_code
- BLOCKED execute_code runs arbitrary local Python no cron
- como habilitar execução de código Python em job agendado
- por que o agente do cron se recusa a rodar script python inline

## A armadilha desta pergunta

**Se você já opera isso:** Testar o job no chat (onde `execute_code` funciona porque há humano presente) e assumir que vai funcionar agendado. O gate depende de `HERMES_CRON_SESSION`, que só existe na execução do scheduler. `hermes cron run <id>` reproduz o comportamento real, o chat não.

## O comando colável

```bash
# Cron: no user is present to approve arbitrary code.
if env_var_enabled("HERMES_CRON_SESSION"):
    if _get_cron_approval_mode() == "deny":
        return {
            "approved": False,
            "message": (
                "BLOCKED: execute_code runs arbitrary local Python "
                "(including subprocess calls that bypass shell-string "
                "approval checks). Cron jobs run without a user present "
                "to approve it. Use normal tools instead, or set "
                "approvals.cron_mode: approve only if this cron profile "
                "is intentionally trusted."
            ),
            ...
        }
    return {"approved": True, "message": None}
```

```bash
approvals:
  cron_mode: approve
```

```bash
hermes cron create "every 30m" "Analise o stdout acima" --script coleta.py
```

## 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
hermes cron create "1d" "use execute_code para imprimir 2+2" --name teste-exec && hermes cron run teste-exec && hermes cron runs teste-exec --limit 1
```

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

## O que a frota corrigiu nesta resposta

Porque `approvals.cron_mode` vem `deny` por default, e nesse modo o `execute_code` é bloqueado em sessões de cron com a mensagem `BLOCKED: execute_code runs arbitrary local Python (including subprocess calls that bypass shell-string approval checks)`. O bloqueio não é absoluto: `check_execute_code_guard` já aprovou e saiu antes de olhar o cron quando `terminal.backend` é um backend isolado (`vercel_sandbox`, `singularity`, `modal`, `daytona`, ou `docker` sem host bind-mount) ou quando a sessão está em yolo / `approvals.mode: off`. Como o default de `terminal.backend` é `local`, o caso comum é bloqueio mesmo. Para liberar: `approvals.cron_mode: approve` (com aspas, ou a palavra `approve`), ou use um job com `--script` em vez de código inline, que roda por subprocess e não passa por esse guard.

## 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.

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-execute-code-funciona-dentro-meus-cron-jobs-funciona. 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.
