v0.13.0

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.json e state.db restaurados 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 plataformaenv_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_rooms configuráveis no Slack, Telegram, Mattermost, Matrix e DingTalk — restringem com quais canais o agente pode interagir
  • Flag gateway_restart_notification por 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) e allowed_robots (DingTalk) — restringem a interação do agente a canais específicos
  • gateway_restart_notification por plataforma — controle granular sobre mensagens pós-reinicialização
  • busy_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 prazo
  • hermes curator prune — limpar entradas antigas, consolidadas ou órfãs
  • hermes curator list-archived — visualizar entradas arquivadas
  • hermes curator run manual 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_timeout aumentado
  • 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 /model compatível com hermes model com autenticação inline para todos os providers
  • Seções recolhíveis no banner de inicialização (skills, prompt do sistema, MCP)
  • /new aceita nome de sessão opcional: /new minha-sessao-de-refatoracao
  • hermes update --yes/-y para 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-large com tamanho de fonte base de 18px
  • Suporte a proxy reverso via cabeçalho X-Forwarded-Prefix
  • Inicie como processo lateral via HERMES_DASHBOARD=1 no 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_KEY está 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 add lanç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
  • /new durante sessão ativa do agente nunca envia resposta no Telegram — corrigido
  • Config.yaml prevalece sobre .env para 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 status para evitar confusão

Segurança de Arquivos

  • Restaurar .env / auth.json / state.db com 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.


Changelog completo no GitHub

← Hermes Agent Changelog