Hermes Agent v0.13.0 — O Lançamento Tenacidade
Visão Geral
v0.13.0 — O Lançamento Tenacidade. Lançado em 7 de maio de 2026. 864 commits · 588 PRs mesclados · 829 arquivos alterados · 128.366 inserções · 282 issues fechadas (13 P0, 36 P1) · 295 contribuidores da comunidade (incluindo coautores).
O Lançamento Tenacidade responde a uma pergunta com três mecanismos diferentes: como um agente termina o que começa? Antes da v0.13, o Hermes era inteligente, mas não persistente — ele podia iniciar uma tarefa de várias etapas, encontrar um obstáculo e silenciosamente desviar ou morrer. A v0.13 entrega três soluções interligadas: Kanban multi-agente durável (quadros de tarefas com heartbeat, detecção de zumbis e recuperação de alucinação), /goal (o loop Ralph — trava o agente em um objetivo entre turnos) e Checkpoints v2 (persistência de estado reescrita com poda real). Juntos, eles tornam o Hermes o primeiro framework de agente de código aberto com garantias de conclusão integradas.
Este também é o maior lançamento de segurança da história do projeto — 8 correções P0 em um único lançamento. A ocultação de dados agora fica LIGADA por padrão. As listas de permissão de cargos do Discord têm escopo por servidor. O WhatsApp rejeita desconhecidos por padrão. As janelas TOCTOU são fechadas no auth.json e no OAuth do MCP. A superfície de ataque do agente diminui drasticamente enquanto seu alcance se expande: o Google Chat chega como a 20ª plataforma de mensagens, os providers se tornam uma superfície plugável, e o CLI e o gateway agora falam sete idiomas.
Principais Funcionalidades
1. Kanban Multi-Agente — Delegue para uma Equipe de IA que Realmente Finaliza
A funcionalidade principal da v0.13. O Kanban transforma o Hermes em um quadro de tarefas multi-agente durável. Crie um quadro, coloque tarefas nele e deixe vários workers do Hermes pegá-las, passá-las adiante e concluí-las. A infraestrutura é o que importa: heartbeats, recuperação por timeout, detecção de zumbis, orçamento de tentativas por tarefa, bloqueio automático em saída incompleta e um portão de recuperação de alucinação.
Criar e gerenciar um quadro kanban:
# Criar um novo quadro e alternar para ele
hermes kanban boards create project-a --name "Projeto A" --switch
# Adicionar tarefas
hermes kanban create "Implementar fluxo OAuth" \
--priority 1 \
--body "Adicionar OAuth 2.0 com suporte a PKCE ao serviço de autenticação"
hermes kanban create "Escrever testes de integração" \
--priority 2 \
--body "Cobertura de testes para todos os endpoints de autenticação"
# Listar todas as tarefas
hermes kanban list
# Verificar estatísticas do quadro
hermes kanban stats
Como funciona o mecanismo de durabilidade:
Quando um worker pega uma tarefa, ele começa a enviar heartbeats. Se os heartbeats pararem (crash, perda de rede, falta de memória), outro worker recupera a tarefa após um timeout configurável. A detecção de zumbis identifica workers que parecem vivos, mas não estão progredindo — eles são marcados como mortos e suas tarefas são redistribuídas. Se uma tarefa falhar N vezes seguidas, o orçamento de tentativas a envia para uma fila de revisão humana em vez de repetir infinitamente. Workers que saem sem completar sua tarefa atual são bloqueados automaticamente para evitar abandono silencioso.
O portão de alucinação é o que torna isso pronto para produção, não uma demonstração. Quando um worker afirma ter concluído uma tarefa, o sistema verifica a afirmação antes de aceitá-la — checando se há evidências de que o trabalho foi realmente feito, não apenas declarado.
# hermes.config.yaml — perfil de worker kanban
kanban:
board: project-a
worker:
max_spawn: 5 # até 5 workers concorrentes
heartbeat_interval: 30s
reclaim_timeout: 120s # quanto tempo antes de uma tarefa ociosa ser recuperada
max_retries: 3 # orçamento de tentativas padrão por tarefa
auto_block_on_exit: true # bloquear tarefas deixadas incompletas ao sair
Você também pode sobrescrever as tentativas por tarefa para tarefas que precisam de mais (ou menos) tentativas:
hermes kanban create "Migração de dados frágil" --max-retries 1
hermes kanban create "Trabalho de busca por força bruta" --max-retries 10
Internamente, o sistema Kanban inclui:
- Quadros multi-projeto — uma instalação do Hermes, muitos kanbans independentes
- Escritas de estado atômicas — sem corrupção parcial do quadro em caso de crash
- Notificações de canal inicial por plataforma — seja notificado no Telegram, Discord ou Slack quando as tarefas mudarem de estado
- Um mecanismo genérico de diagnóstico para sinais de perigo das tarefas — workers podem sinalizar “Estou travado, aqui está o motivo”
- Integração com dashboard — visualização do quadro em tempo real, criação inline de tarefas, entradas de workspace e caminho
2. /goal — O Agente Não Esquece o Que Você Pediu para Ele Fazer
O loop Ralph, agora uma primitiva de primeira classe. O /goal trava o agente em um objetivo e o mantém lá entre turnos. Se o usuário tentar desviar no meio da conversa, o agente reconhece o desvio e retorna ao objetivo. Se uma ferramenta falhar, ele encontra outro caminho. Se a sessão durar horas, o objetivo permanece fixado.
# Definir um objetivo persistente
/goal "Pesquise as 5 principais ferramentas de CRM, compare seus preços e resuma a melhor opção para uma startup de 50 pessoas"
# O agente permanece travado nisso entre turnos.
# Você pode fazer perguntas não relacionadas — ele responderá e depois voltará ao objetivo.
O sistema /goal usa um modelo juiz para avaliar se o objetivo foi satisfeito. O juiz é executado após cada turno, avaliando o progresso em relação ao objetivo declarado. O agente pode fazer desvios (tarefas secundárias, esclarecimentos, falhas de ferramentas), mas não pode abandonar permanentemente o objetivo até que o juiz o declare concluído.
# Verificar o status do objetivo a qualquer momento
/goal status
# Pausar e retomar
/goal pause
/goal resume
# Limpar e definir um novo
/goal clear
O /goal se combina com o /subgoal (chegando na v0.14.0) para permitir que você adicione critérios de sucesso durante o percurso. Juntos, eles se aproximam do que um plano de projeto tradicional faz — um objetivo mais refinamentos conforme você avança.
3. Checkpoints v2 — Persistência de Estado Reescrita
O sistema antigo de checkpoint acumulava repositórios shadow órfãos, não tinha poda real e crescia sem limites. O Checkpoints v2 é uma reescrita limpa:
- Arquitetura de armazenamento único — sem mais estado espalhado por diretórios
- Poda real — checkpoints antigos são realmente excluídos, com retenção configurável
- Proteções de disco — recusa-se a fazer checkpoint quando o disco está criticamente baixo
- Sem repositórios órfãos — cada shadow git tem um ciclo de vida rastreado
Combinado com o novo recurso de retomada automática do gateway, o agente agora sobrevive a reinicializações de forma transparente. O gateway caiu no meio do agente? A conversa é retomada. O /update reinicia o processo? De volta aonde você parou. Recarregamento de arquivos fonte? A sessão continua.
4. Onda de Segurança — 8 Correções P0
Este é o lançamento mais reforçado em segurança da história do Hermes. Oito vulnerabilidades críticas fechadas em um único lançamento:
| # | Correção | Gravidade | O que mudou |
|---|---|---|---|
| 1 | Ocultação LIGADA por padrão | P0 | A saída do agente oculta conteúdo sensível automaticamente — você não precisa ativar, já vem ligado |
| 2 | Listas de permissão de cargos do Discord com escopo por servidor | CVSS 8.1 | Antes, cargos de um servidor podiam autorizar acesso em outro (bypass de DM entre servidores) |
| 3 | WhatsApp rejeita desconhecidos | P0 | Novas conexões do WhatsApp bloqueadas a menos que explicitamente permitidas; nunca responde no auto-chat |
| 4 | TOCTOU do OAuth do MCP fechado | P0 | Janela de time-of-check-to-time-of-use fechada ao salvar credenciais OAuth |
| 5 | TOCTOU do auth.json fechado | P0 | Escritores de credenciais reforçados contra condições de corrida |
| 6 | Piso SSRF de metadados de nuvem do navegador | P0 | Roteamento híbrido impõe bloqueio de endpoint de metadados de nuvem mesmo em backends CDP não locais |
| 7 | Varreduras de injeção de prompt no Cron | P0 | Conteúdo de skills montadas é verificado contra injeção de prompt antes da execução do cron |
| 8 | Ocultação no hermes debug share |
P0 | Conteúdo dos logs ocultado no momento do upload, não depois |
Mais reforços adicionais:
.env,auth.jsonestate.dbrestaurados com permissões 0600 — somente leitura/escrita do proprietário- Integridade SRI para scripts de plugins do dashboard
- Servidor do nó Meet vinculado apenas ao localhost, arquivo de token restrito à leitura do proprietário
- Alvo de escrita sensível estendido para cobrir arquivos RC do shell e arquivos de credenciais
- Modo YOLO reforçado contra interpretação de string booleana entre aspas
- OSV-Scanner CI + Dependabot para monitoramento de vulnerabilidades de dependências
5. Google Chat — A 20ª Plataforma de Mensagens
O Hermes agora suporta 20 plataformas de mensagens nativamente, com o Google Chat como a mais nova adição. A lista completa:
Telegram, Discord, Slack, WhatsApp, Signal, DingTalk, SMS (Twilio), Mattermost, Matrix, Webhook, Email (IMAP/SMTP), Home Assistant, Feishu/Lark, WeCom, Weixin, BlueBubbles (iMessage), QQBot, Yuanbao, Microsoft Teams, Google Chat.
Todas as 20 plataformas rodam a partir de um único processo gateway com gerenciamento unificado de sessão, tratamento de reinicialização e roteamento de threads. A arquitetura do gateway agora inclui hooks genéricos de plugin de plataforma — env_enablement_fn e cron_deliver_env_var — para que adaptadores de terceiros se integrem sem tocar no núcleo. O IRC e o Teams já foram migrados para esta superfície.
Novas capacidades entre plataformas neste lançamento:
allowed_channels/allowed_chats/allowed_roomsconfiguráveis no Slack, Telegram, Mattermost, Matrix e DingTalk — restringem com quais canais o agente pode interagir- Flag
gateway_restart_notificationpor plataforma — controla se cada plataforma recebe uma mensagem “Estou de volta” após a reinicialização - Configuração
busy_ack_enabled— suprime mensagens de confirmação “Estou trabalhando nisso” - Exclusão automática de avisos do sistema de comandos slash após TTL
- Diretiva
[[as_document]]— skills podem forçar o gateway a entregar a saída como um documento nas plataformas que suportam
6. Providers Tornam-se uma Superfície Plugável
Os providers de inferência não estão mais codificados no núcleo. Uma nova classe abstrata ProviderProfile e o diretório plugins/model-providers/ os tornam uma superfície de plugin de primeira classe:
# plugins/model-providers/meu_provider.py
from hermes.abc import ProviderProfile
class MeuProvider(ProviderProfile):
name = "meu-provider-personalizado"
display_name = "Meu Provider Personalizado"
def list_models(self) -> list[ModelInfo]:
...
def chat_completion(self, request: ChatRequest) -> ChatResponse:
...
Coloque plugins de provider no diretório e eles aparecem no seletor de modelos ao lado do OpenAI, Anthropic e do conjunto integrado. Sem necessidade de alterações no código principal.
Novos modelos adicionados neste lançamento:
| Modelo | Provider | Observações |
|---|---|---|
deepseek/deepseek-v4-pro |
OpenRouter + Nous Portal | Último carro-chefe da DeepSeek |
x-ai/grok-4.3 |
OpenRouter + Nous Portal | O mais novo da xAI |
openrouter/owl-alpha |
OpenRouter | Camada gratuita |
tencent/hy3-preview |
OpenRouter | Rota paga |
| Arcee Trinity Large Thinking | OpenRouter | Substituições de temperatura + compressão |
O cache de respostas do OpenRouter agora é suportado para modelos que o expõem — reduza custos em contextos repetidos.
O OAuth do Nous agora persiste entre perfis via um armazenamento de token compartilhado: faça login uma vez, cada perfil herda a sessão. Sem precisar reautenticar para cada perfil.
7. Internacionalização — 7 Localidades
O Hermes agora fala chinês, japonês, alemão, espanhol, francês, ucraniano e turco — além do inglês. As mensagens estáticas do gateway (texto de ajuda do CLI, status do agente, mensagens de erro) estão totalmente traduzidas. O site de documentação ganha uma localidade em chinês (zh-Hans).
# hermes.config.yaml
display:
language: pt # ou zh, ja, de, es, fr, uk, tr
8. Vídeo e Voz — Ver e Falar
video_analyze dá ao Hermes compreensão nativa de vídeo em modelos multimodais Gemini e compatíveis:
# Analisar um vídeo a partir de um arquivo
hermes run "Assista gravacao-reuniao.mp4 e resuma as decisões tomadas"
# A partir de uma URL
hermes run "Analise https://exemplo.com/demo.mp4 — qual é o fluxo de trabalho mostrado?"
xAI Custom Voices chega como um provider TTS com suporte a clonagem de voz. Grave uma amostra de voz e o Hermes responderá com a sua voz — ou qualquer voz que você fornecer.
9. Delta Linting — O Agente Faz Lint do Que Escreve
Após cada operação write_file ou patch, o Hermes agora executa linters em processo para Python, JSON, YAML e TOML. Erros de sintaxe aparecem imediatamente em vez de serem enviados adiante:
WRITE src/auth.py
✓ Sintaxe OK (Python 3.12)
✓ Verificação de imports aprovada
WRITE config.json
✗ Erro de sintaxe: Token inesperado na linha 14, coluna 3
Nunca mais descubra sintaxe quebrada dez turnos depois, quando você tentar executar o código.
Novas Ferramentas e Comandos Integrados
| Ferramenta / Comando | Descrição | Uso |
|---|---|---|
/goal |
Rastreamento persistente de objetivo entre turnos (loop Ralph) | /goal "Pesquise X e resuma" |
/goal status |
Verificar o progresso do objetivo atual | /goal status |
/goal pause / /goal resume |
Pausar ou retomar a busca do objetivo | /goal pause |
/goal clear |
Limpar o objetivo atual | /goal clear |
video_analyze |
Compreensão nativa de vídeo em modelos multimodais | video_analyze caminho/para/video.mp4 |
hermes curator archive |
Arquivar skills curadas | hermes curator archive |
hermes curator prune |
Podar entradas antigas/consolidadas do curador | hermes curator prune |
hermes curator list-archived |
Listar todas as entradas arquivadas | hermes curator list-archived |
[[as_document]] |
Diretiva de skill — entrega a saída como documento | Adicione [[as_document]] no frontmatter da skill |
transform_llm_output |
Hook de plugin — remodelar/filtrar saída do LLM | Implementar no plugin |
X-Hermes-Session-Key |
Cabeçalho de API para escopo estável de memória de sessão | Passar via cabeçalho HTTP |
no_agent cron mode |
Watchdog somente script — executa scripts sem um agente | Defina no_agent: true na configuração do job cron |
| Cache do OpenRouter | Cache explícito para modelos suportados | Via cache: true na configuração do provider |
Melhorias
Núcleo do Agente e Conversação
- Diretiva de skill
[[as_document]]— skills podem forçar o gateway a entregar a saída como um documento baixável em vez de texto inline - Hook de plugin
transform_llm_output— novo hook de ciclo de vida que permite que plugins remodelam ou filtrem a saída do LLM antes que ela chegue à conversa; útil para redutores de janela de contexto e filtros de conteúdo - Contagem de compressão de contexto exibida na barra de status (CLI + TUI) — veja quantas vezes o contexto foi comprimido
- Cache isolado de
get_tool_definitions— deduplica a injeção LCM e evita consultas redundantes de esquema de ferramentas - Proteções de loop de chamada de ferramenta com aviso prévio — o agente avisa antes de entrar em loops infinitos de ferramentas em vez de girar silenciosamente
- Interrupção de loops permanentes de resposta vazia — caudas de ferramentas órfãs não causam mais ciclos infinitos de resposta vazia
- ContextVars propagadas para threads de trabalho de ferramentas concorrentes
- Exibição de resumos de revisão de autoaperfeiçoamento no CLI, TUI e gateway
- Estimativas de tokens agora incluem prompt do sistema + esquemas de ferramentas para gatilhos de compressão precisos
Listas de Permissão por Plataforma
allowed_channels(Slack),allowed_chats(Telegram),allowed_rooms(Mattermost, Matrix) eallowed_robots(DingTalk) — restringem a interação do agente a canais específicosgateway_restart_notificationpor plataforma — controle granular sobre mensagens pós-reinicializaçãobusy_ack_enabled— suprime mensagens de confirmação “Estou trabalhando nisso”- Limpeza automática de bolhas de progresso temporárias
Durabilidade de Sessão
- Gateway retoma automaticamente sessões interrompidas após reinicialização — sem conversas perdidas
- Avisos de atualização pendentes preservados entre reinicializações
- Alvos de thread do canal inicial preservados entre notificações de reinicialização
- Roteamento de thread preservado de fontes de sessão ativa em cache
- Metadados do assistente preservados ao ramificar sessões
- Tipo de documento preservado ao mesclar eventos enfileirados
Curador (da v0.12, amadurecido na v0.13)
hermes curator archive— arquivar entradas curadas para armazenamento de longo prazohermes curator prune— limpar entradas antigas, consolidadas ou órfãshermes curator list-archived— visualizar entradas arquivadashermes curator runmanual síncrono — veja os resultados imediatamente sem polling- Protegido contra sobrescrita de skills empacotadas e do hub
MCP (Model Context Protocol)
- Transporte SSE com encaminhamento OAuth e
sse_read_timeoutaumentado - Tentativas de transporte de pipe obsoleto como sessão expirada (reconexão automática)
- Resultados de ferramentas de imagem aparecem como tags MEDIA em vez de serem descartados silenciosamente
- Keepalive periódico em esperas de ciclo de vida de longa duração
- Reconexão automática em sessões terminadas
- Coerção defensiva de argumentos numéricos de ferramentas no
mcp_serve - Stubs de utilitários condicionados às capacidades anunciadas pelo servidor
Dashboard Kanban
- Entradas de tipo de workspace + caminho na criação inline de tarefas
- Alternadores de notificação por plataforma para alertas de canal inicial
- Área de texto multilinha para títulos de tarefas
- Filtro de quadros por tenant selecionado
- Fixação de quadro no dashboard autoritativa sobre o arquivo atual do servidor
QQBot
- Teclados de aprovação nativos — botões inline Aprovar/Negar para autorização de ferramentas
- Upload em partes para arquivos grandes
- Suporte a anexos citados
TUI e CLI
- 100 novas dicas de inicialização do CLI cobrindo cron, kanban, curador, plugins e flags menos conhecidas
- Seletor
/modelcompatível comhermes modelcom autenticação inline para todos os providers - Seções recolhíveis no banner de inicialização (skills, prompt do sistema, MCP)
/newaceita nome de sessão opcional:/new minha-sessao-de-refatoracaohermes update --yes/-ypara pular prompts interativos
Dashboard
- Página de plugins — gerencie, ative/desative e verifique o status de autenticação de todos os plugins
- Página de gerenciamento de perfis — crie, edite e exclua perfis pela interface web
- Ordenação interativa de colunas em tabelas de análise
- Tema
default-largecom tamanho de fonte base de 18px - Suporte a proxy reverso via cabeçalho
X-Forwarded-Prefix - Inicie como processo lateral via
HERMES_DASHBOARD=1no Docker
Ferramentas Web
- SearXNG é fornecido como um backend nativo somente de busca
- Seleção de backend por capacidade — escolha backends diferentes para busca vs extração vs navegação
ACP (VS Code / Zed / JetBrains)
- Comando slash
/steer— direcione o agente em voo - Comando slash
/queue— enfileire tarefas de acompanhamento - Persistência atômica de sessão via
replace_messages - Metadados de raciocínio do assistente preservados na persistência de sessão
- Tradução de cwd do Windows para sessões WSL
Segurança e Confiabilidade
Correções Críticas de Bugs
- Crash do CLI na inicialização —
Invalid key 'c-S-c'(P0): prompt_toolkit não suporta o modificador Shift; atalho removido - Auditoria de vazamento de fd CLOSE_WAIT: keepalive do httpx + vazamento aiohttp do WhatsApp + higiene do Feishu — todos corrigidos
- Gateway cria AIAgent com chave de API OpenRouter vazia quando
OPENROUTER_API_KEYestá ausente — providers de fallback agora são corretamente honrados - Revisão em segundo plano + curador protegidos contra sobrescrita de skills empacotadas/do hub
- Sessões fantasmas de continuação de compressão do TUI com metadados incompletos — corrigido
hermes mcp addlança silenciosamente o chat em vez de registrar o servidor MCP — corrigido- Propagação de runtime do agente de revisão em segundo plano — provider/modelo/credenciais agora realmente herdam do pai
- Caminhos de host de documentos de entrada traduzidos para caminhos de contêiner no backend Docker
- Condição de corrida do gateway Matrix entre ocultação automática e entrega de mensagens com modelos de alta velocidade — corrigido
/newdurante sessão ativa do agente nunca envia resposta no Telegram — corrigido- Config.yaml prevalece sobre
.envpara configurações de agente/exibição/fuso horário - SHA do HEAD do Git usado para verificação de código desatualizado, não mtimes dos arquivos
- Paradas do serviço de plano tratadas sem erros fatais falsos
- Reinicialização automática de arquivos fonte quando arquivos mudam externamente ao gateway
Reforço do WhatsApp
Além da correção P0 de rejeição de desconhecidos:
- Carregar canal inicial a partir de substituições de ambiente
- Nunca responder no auto-chat (previne amplificação de loop)
Confiabilidade de Plataforma
- Gateway reinicializado com reset-failed antes de cada reinicialização de fallback — previne estados de gateway encalhados
- Marcadores de reinicialização atômicos + offset de bloqueio de runtime do Windows
- Higiene de desligamento e reinicialização — timeout de drenagem, falso-fatal, log de sucesso
- PIDs ancestrais excluídos da varredura de processo do gateway
- Despacho de alias de comando rápido movido antes dos integrados (previne substituição acidental)
- Outros perfis exibidos no
gateway statuspara evitar confusão
Segurança de Arquivos
- Restaurar
.env/auth.json/state.dbcom permissões 0600 - Servidor do nó Meet vinculado apenas ao localhost
- Arquivo de token restrito à leitura do proprietário
- Alvo de escrita sensível estendido para arquivos RC do shell e arquivos de credenciais
Atualização
hermes update
Para novas instalações, visite o guia de instalação.
← Hermes Agent Changelog