Hermes Agent é seguro? O que avaliar antes de dar acesso às suas contas

arquitetura local-first do Hermes Agent que mantém dados em ~/.hermes/ na própria máquina
Resposta rápida

O Hermes Agent é seguro? A resposta honesta é: depende do que você configurar. A arquitetura é local-first, o projeto é open source sob licença MIT da Nous Research e a documentação declara não coletar telemetria, dados de uso ou analytics. Conversas, memória e skills ficam em ~/.hermes/ e os segredos em ~/.hermes/.env, na sua máquina. O que sai são as chamadas para o provedor de LLM configurado, e existe caminho documentado com Ollama local para nem isso sair. O resto (aprovações, lista de usuários, dashboard em loopback) é decisão sua, item por item.

Fala aí, beleza? Um agente autônomo com acesso ao seu WhatsApp, à sua conta do GitHub e às suas chaves de API é o tipo de coisa que dá um frio na barriga antes mesmo do primeiro comando

E aqui vai o pulo do gato: a pergunta "o Hermes Agent é seguro?" não tem resposta binária

O que existe é uma arquitetura local-first com um monte de chavinha que VOCÊ decide se liga ou desliga, e o nível de segurança do seu setup é exatamente o que você configurou nelas

Então bora separar três coisas neste post: o que fica parado na sua máquina, o que atravessa a fronteira e sai, e o que só depende da sua mão…

O que fica na sua máquina e o que sai dela

Antes de discutir proteção, é bom saber onde os dados moram

O Hermes Agent é um agente open source da Nous Research publicado sob licença MIT, o que já ajuda: dá pra ler o código em vez de acreditar em marketing

O desenho é local-first, e a documentação declara que o projeto não coleta telemetria, dados de uso ou analytics

O quê Onde fica
Conversas, memória e skills ~/.hermes/, na sua própria máquina
Chaves de API, tokens e segredos ~/.hermes/.env, o local padrão dos segredos gerenciados por você
Chamadas do modelo saem da máquina, mas só para o provedor de LLM que você configurar (ex: OpenRouter) ou para a instância local
Formação Vibe Coding
Formação Recomendada

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Ou seja: o que atravessa a fronteira é a chamada de API, não um pacotinho de telemetria indo pro fabricante

E se você quiser fechar até essa porta, existe um guia oficial de setup local com Ollama: sem chave de API, sem assinatura, sem dados saindo da máquina

Esse é o modo mais paranoico possível, e é o que eu sugiro pra quem vai testar com dado real na primeira semana

As proteções que já vêm no Hermes Agent (e onde elas param)

Tem defesa embutida, sim

Mas cada uma tem um limite, e ignorar esse limite é onde a galera se ferra

Modo de aprovação de comandos:

O approvals.mode, no arquivo ~/.hermes/config.yaml, aceita três valores: manual, smart e off

O smart usa um LLM auxiliar pra aprovar comandos de baixo risco, negar os perigosos e escalar os incertos pra um prompt manual

O off desliga toda a checagem, e aí você está no modo confia

Detalhe que eu achei muito massa: o prompt de aprovação tem tempo limite e falha fechado

Se você não responder dentro do tempo configurado, o comando é negado por padrão (fail-closed), em vez de passar por omissão

E o modo YOLO?

Existe hermes --yolo (ou hermes chat --yolo), que desativa as checagens de comando perigoso daquela sessão

Porém uma blocklist rígida continua valendo, e essa não tem flag de override: apagamento irreversível de sistema de arquivos, fork bomb, escrita direta em dispositivo de bloco

Os rm -rf da vida seguem barrados, mas o resto do juízo passa a ser seu

Credenciais e servidores MCP:

As variáveis de ambiente com chaves de API, tokens e segredos são retiradas antes de passar para servidores MCP

E as mensagens de erro de ferramentas MCP são sanitizadas antes de voltar pro modelo, que é um vetor de vazamento que muita gente esquece que existe

Validação de URL:

Busca web, extração de página, visão e navegador validam o destino antes de buscar

Endereços de rede privada ficam bloqueados, e aqui entram as faixas RFC 1918: 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16

Mas a rejeição padrão do gateway é mais ampla que só essas faixas: loopback, link-local, CGNAT e endpoints de metadados de nuvem também entram na lista de destinos barrados, e eu volto nisso lá embaixo, na parte de acesso a rede privada

Cadeias de redirect são revalidadas a cada salto (o truque clássico é justamente redirecionar pra rede interna depois da checagem) e falha de DNS é tratada como bloqueio

Varredura de prompt injection:

O Hermes escaneia arquivos de contexto do projeto atrás de padrões de prompt injection antes deles entrarem no contexto do modelo, e o Skills Guard escaneia skills instaláveis

Agora vem a parte honesta, e ponto pra documentação por assumir isso: ela mesma classifica essas varreduras como heurísticas, não como fronteiras

Uma injeção formulada de um jeito novo pode passar

Traduzindo pro dia a dia: skill de terceiro e arquivo de contexto que você não escreveu continuam sendo código que você está executando

Os pontos de exposição que dependem só de você

Aqui é onde a configuração é a ÚNICA barreira, beleza?

A pasta de sessão do WhatsApp é uma credencial:

O diretório ~/.hermes/platforms/whatsapp/session contém as credenciais completas da sessão

A documentação orienta chmod 700 nessa pasta e usar um número dedicado pro bot

Tome cuidado! Copiar essa pasta pra outro lugar é o mesmo que copiar o seu login

Quem pode falar com o agente:

No WhatsApp, sem WHATSAPP_ALLOWED_USERS, sem * e sem WHATSAPP_ALLOW_ALL_USERS=true, o gateway nega todas as mensagens recebidas por segurança

O padrão é fechar a porta, e isso é ótimo

O problema aparece quando alguém, cansado de não receber nada, resolve resolver na marra com o curinga

No Telegram, o assistente de configuração pede o token do bot e os IDs de usuário permitidos, e escreve a configuração

O painel web:

O dashboard sobe em http://127.0.0.1:9119, ou seja, em loopback

A flag HERMES_DASHBOARD_INSECURE=1 virou um no-op depreciado e não desativa mais o gate de autenticação, então bind público sempre exige provedor de auth

A alternativa recomendada é manter HERMES_DASHBOARD_HOST=127.0.0.1 e acessar por túnel SSH ou Tailscale

Acesso a rede privada:

Essa é a fronteira de confiança mais perigosa do conjunto, e vem desligada por padrão

Ao habilitar, as ferramentas web, o navegador, a visão e os downloads de mídia do gateway deixam de rejeitar destinos RFC 1918, loopback, link-local, CGNAT e endpoints de metadados de nuvem

Ou seja: cai a lista inteira de destinos internos que o Hermes barra por padrão, não só as três faixas privadas que eu citei na validação de URL

A própria documentação recomenda deixar isso desligado em gateways expostos

Anonimizar identificadores:

Com privacy.redact_pii habilitado, o gateway transforma números de telefone e IDs de usuário em user_<sha256> antes de mandar pro provedor de LLM

A redação vale pras plataformas de mensagem conectadas ao gateway, WhatsApp e Telegram incluídos, onde esses IDs são só metadado de roteamento

Se você atende cliente por mensagem, isso muda bastante a conversa

O que eu vi na prática rodando o Hermes Agent

No vídeo abaixo eu mostro o meu agente instalando uma skill que dá acesso à internet pra ele, e algumas coisas dessa rodada conversam direto com o assunto deste post

A instalação foi por prompt: passei o link do repositório como guia e pedi pro próprio agente instalar

Só que precisei citar no prompt qual agente eu usava e em qual pasta de skills instalar, senão não dava certo

Aí acompanhei o processo e vi o agente baixando pacotes por conta própria, o que demorou, porque não era só um arquivo de texto sendo copiado

Para aí um segundo e pensa nisso: um agente instalando dependência sozinho na sua máquina é exatamente o cenário que o modo de aprovação existe pra vigiar

No fim da instalação ele avisou que parte dos serviços tinha sido instalada e parte não, e perguntou se eu queria instalar todos ou só alguns

Escolhi Twitter e Reddit e fazer login autenticado no GitHub, e ele concluiu a autenticação do que eu pedi

Depois rodei o comando de diagnóstico da skill pra conferir o estado: GitHub apareceu funcionando, Twitter e Reddit apareceram pedindo login pra resolver a questão dos cookies

Não travou nada, dava pra usar assim mesmo e resolver depois

No teste eu pedi os 5 pontos principais de um vídeo do YouTube: a skill fez a transcrição e devolveu o resumo em texto, sem serviço pago de transcrição no meio

Também pedi uma busca no GitHub por repositórios populares de um assunto e voltou uma lista de projetos relevantes

E pedi a leitura do README e das issues abertas de um repositório, pra entender o que a ferramenta faz e quais problemas os usuários relatam

Por baixo o processo executa scripts em Python, e cada consulta leva um tempinho pra retornar

A resposta volta em texto limpo, em vez de HTML pra converter depois, o que é muito massa quando o agente vai encadear aquilo em outra tarefa

A skill escolhe o canal de busca conforme o pedido em linguagem natural e, se um caminho é bloqueado, tenta outro pra extrair a informação

Ela foi pensada pra agente autônomo, mas como é composta de arquivos de instrução, acredito que rodaria em outros ambientes de agente também

E o ponto de cautela que eu repito sempre: eu mantenho o meu agente rodando em VPS, num ambiente isolado

É o mesmo raciocínio de quem separa ambientes ao rodar várias instâncias de n8n isoladas: se algo der ruim, o estrago fica dentro de uma caixa, não na sua máquina de trabalho com tudo logado

(a hospedagem que eu cito no vídeo é parceira do canal, tá registrado ali)

Checklist de decisão antes de conectar qualquer conta

Não é passo a passo de instalação, é decisão

Rode esta lista ANTES de plugar a primeira conta de verdade:

  1. Decida o provedor de modelo ou vá de Ollama local. Se a sua dúvida é "o que sai da minha máquina", o caminho documentado com Ollama resolve na raiz: sem chave de API e sem dados saindo
  2. Defina o approvals.mode conscientemente. Abra o ~/.hermes/config.yaml e veja o que está lá antes de sair usando, em vez de descobrir depois do comando
  3. Não use o modo YOLO em máquina com dado sensível. A blocklist rígida continua valendo, mas ela cobre catástrofe de sistema de arquivos, não o seu segredo vazando num log
  4. Trave a pasta de sessão do WhatsApp. chmod 700 em ~/.hermes/platforms/whatsapp/session e número dedicado pro bot, como a documentação orienta
  5. Configure a lista de quem pode falar com o agente. WHATSAPP_ALLOWED_USERS no WhatsApp e os IDs autorizados no Telegram. O erro comum aqui é liberar geral com * ou WHATSAPP_ALLOW_ALL_USERS=true só pra "destravar o teste" e nunca mais voltar atrás
  6. Mantenha o dashboard em loopback. HERMES_DASHBOARD_HOST=127.0.0.1 e acesso por túnel SSH ou Tailscale quando precisar de fora
  7. Deixe o acesso a rede privada desligado. Ligar derruba a rejeição de RFC 1918, loopback, link-local, CGNAT e endpoints de metadados de nuvem, e em gateway exposto isso é pedir pra alguém passear na sua rede interna
  8. Avalie o privacy.redact_pii. Se você lida com telefone de cliente, virar user_<sha256> antes de ir pro provedor muda o risco de lugar
  9. Lembre que o gateway é UM processo só. Ele conecta todas as plataformas que você configurou, administra as sessões e entrega as mensagens. Quem tem acesso a esse processo tem acesso ao conjunto, não a um canal isolado
  10. Se for pedir ajuda, o relatório de diagnóstico já vem redigido. Por padrão os uploads são redigidos pra não incluir segredos, e o pacote leva info de sistema, versão do Python, versão do Hermes, logs recentes (limite de 512 KB por arquivo) e o status redigido das chaves de API

Conclusão

O Hermes Agent é seguro? O veredito honesto é que a arquitetura joga a favor e a configuração decide o resto

A favor você tem: projeto open source sob licença MIT, dados de conversa, memória e skills parados em ~/.hermes/ na sua máquina, declaração de zero telemetria, aprovação que falha fechado, credenciais retiradas antes de ir pra servidor MCP e validação de URL barrando rede privada

Contra, ou melhor, sob sua responsabilidade: a pasta de sessão do WhatsApp é uma credencial completa, a lista de usuários permitidos é sua, o bind do dashboard é seu, e a varredura de prompt injection é heurística por admissão da própria documentação

Não existe modo mágico que te isente de decidir, e desconfie de quem te vender isso

Meu próximo passo sugerido, se você está começando agora: sobe com Ollama local e approvals em manual, brinca com tarefa sem risco por alguns dias, e só depois pensa em conectar uma conta de mensagem de verdade

Depois me conta como foi no seu setup, bora trocar uma ideia 🙂

até o próximo post!

Perguntas frequentes

O Hermes Agent envia dados de uso para a Nous Research?

Não, a documentação declara que o projeto não coleta telemetria, dados de uso ou analytics. O que sai da máquina é só a chamada de API para o provedor de LLM que você configurar (como o OpenRouter) ou para a instância local, nada de pacotinho de telemetria voltando pro fabricante

Dá pra usar o Hermes Agent sem enviar nada pra fora, tipo 100% offline?

Dá sim. Existe um guia oficial de setup local com Ollama, sem chave de API, sem assinatura e sem dados saindo da máquina. É o modo mais fechado que o Hermes Agent permite rodar

O modo YOLO do Hermes Agent desativa todas as proteções de segurança?

Não desativa tudo. O hermes –yolo desliga as checagens de comando perigoso daquela sessão, mas uma blocklist rígida sem flag de override continua valendo, cobrindo apagamento irreversível de sistema de arquivos, fork bomb e escrita direta em dispositivo de bloco

O que acontece se eu não responder o pedido de aprovação de comando do Hermes Agent?

O comando é negado. O prompt de aprovação tem tempo limite e falha fechado (fail-closed), então passar do tempo sem responder bloqueia a execução em vez de liberar por omissão

Preciso configurar quem pode falar com o agente no WhatsApp?

Precisa, senão nada funciona: sem WHATSAPP_ALLOWED_USERS, sem * e sem WHATSAPP_ALLOW_ALL_USERS=true, o gateway nega todas as mensagens recebidas por segurança. No Telegram o assistente de configuração pede o token do bot e os IDs de usuário permitidos

Posso deixar o painel web do Hermes Agent acessível de fora da minha máquina?

Dá, mas exige autenticação: qualquer bind público sempre pede um provedor de auth, já que a flag antiga HERMES_DASHBOARD_INSECURE=1 virou um no-op depreciado. A recomendação é manter HERMES_DASHBOARD_HOST=127.0.0.1 e acessar por túnel SSH ou Tailscale




Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Formações

Formação SAAS com IA

Formação SAAS com IA

Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!

  • 291 aulas
  • 18 projetos
  • 24h 17min

Blog | Mais populares