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
# 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}
approvals:
cron_mode: approve
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.
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.