v0.20.6

Hermes Agent v0.20.6


Visão Geral

v0.20.6 — The Steady Roll Release. Lançada em 27 de agosto de 2026. ~525 PRs mesclados · ~1.313 commits · ~1.557 arquivos alterados (+177.113 / −21.682) desde a v0.20.5.

Esta janela é um rolamento constante de substância: a manchete é a navegação com perfil real sob consentimento — o agente agora pode dirigir um snapshot do seu próprio perfil de browser, navegando como você, com seus logins e cookies existentes, sempre sob consentimento explícito e desativada por padrão. Ao redor disso, o Browser do desktop ganha sua própria janela de SO e um mecanismo gerenciado de atualização remota via SSH; o catálogo remoto de MCP embutido passa de 50 servidores hospedados por fornecedores verificados ao vivo (Cloudflare, Grafana Cloud, Better Stack, Railway e mais); web_search/web_extract ganham cache de resultados com TTL, para que buscas repetidas parem de cobrar o fornecedor de novo; a compactação lean-tail vira o padrão; o tool_search aprende buscas multi-query com stemming; segredos armazenados podem optar pela criptografia no keychain do SO (chega de prompts do Keychain do macOS a cada inicialização); os updaters pausam gateways pelo control socket em vez de matar a árvore de processos; e novos modelos aparecem nos seletores (GLM-5.3-Flash, MiniMax M3 free, MiniMax H3 Max video).

Esta é uma patch release, então as notas oficiais são breves e a documentação curada completa chega com a v0.21.0. Esta página cobre as partes mais valiosas da janela.


Destaques

1. Navegação com perfil real: o agente navega como você

O browser do agente costumava rodar num mundo limpo e deslogado — ótimo para pesquisa pública, frustrante no momento em que uma tarefa precisa do seu estado logado. A v0.20.6 adiciona a navegação com perfil real sob consentimento (#1f4d095fd8, #830e4a29be): quando ativada, o Hermes copia o perfil ativo do seu browser padrão (cookies, logins salvos, preferências) para um snapshot gerenciado em ~/.hermes/browser-profile/ e dirige esse snapshot com seu Chromium empacotado. Seu perfil ao vivo nunca é aberto diretamente, e os arquivos de autenticação são ressincronizados sempre que uma sessão nova é iniciada, então logins feitos no seu próprio browser aparecem na sessão do agente.

# ~/.hermes/config.yaml
browser:
  use_real_profile: true

A ferramenta browser_exec expõe um argumento local (apenas quando a opção está ligada) que força uma sessão com perfil real mesmo sob um backend de browser em nuvem. No Windows, o browser precisa estar totalmente fechado antes da cópia (Chrome/Edge/Brave bloqueiam seus bancos de cookies), e browser.real_profile_autoclose: true permite que o Hermes se ofereça para fechá-lo por você — ele nunca fecha por conta própria. Desligar a opção exclui o armazenamento de snapshots, então as credenciais copiadas não ficam para trás depois que você revoga o consentimento. Browsers suportados: Chrome, Edge, Brave, Chromium; um padrão que não seja Chromium (ex.: Firefox) falha de forma segura com uma mensagem clara. Também no desktop: Configurações → Browser → Use My Real Browser Profile.

2. Browser do desktop em janela própria do SO + mecanismo gerenciado de atualização remota via SSH

O Browser do desktop deixa de ser um painel embutido: agora ele pode abrir em sua própria janela de SO — redimensione, mova entre monitores, mantenha ao lado do seu editor. O desktop também ganha um mecanismo gerenciado de atualização remota via SSH: atualizações por conexão via SSH para gateways remotos, de modo que uma frota de máquinas se mantenha atualizada a partir de um único app desktop (com o trilho de perfis da frota — troque de profile e os alvos de atualização acompanham).

3. Catálogo remoto de MCP: 50+ servidores de fornecedores verificados ao vivo

O catálogo remoto de MCP embutido cresce para 50+ servidores hospedados por fornecedores verificados ao vivo — Cloudflare, Grafana Cloud, Better Stack, Railway, Canva, Dropbox, GitLab, Strava e mais. Cada entrada é verificada contra o endpoint ao vivo do fornecedor, e ?codemode=false é fixado para que o tool_search veja a superfície completa de endpoints de cada entrada do catálogo. Um comando para ver o que está disponível:

hermes mcp catalog list --remote

4. Cache de resultados com TTL para web_search / web_extract

Buscas e extrações repetidas dentro de uma janela curta não cobram mais o fornecedor de novo: os resultados de web_search/web_extract são guardados em cache com um TTL (configurável via web.cache_ttl), então uma nova tentativa, a reexecução do mesmo prompt ou um cron job que verifica o mesmo URL duas vezes recebe a resposta em cache em vez de uma chamada nova (paga). Economiza dinheiro em execuções longas do agente e em jobs recorrentes.

5. Compactação lean-tail agora é o padrão

A compactação ficou mais discreta e mais barata: lean-tail é o modo padrão — em vez de manter uma cauda longa de turnos de baixo valor, o compressor mantém um resumo compacto mais uma cauda curta e de alto valor, cortando o que cada turno reenvia após a compactação. Configs existentes que nunca definiram agent.compression.tail_mode adotam o novo padrão na atualização; configurações explícitas não são tocadas.

6. tool_search: multi-query com stemming

tool_search agora aceita queries: string[] — pesquisadas de forma independente no mesmo catálogo, com limite por query (padrão 5, máximo 25) — e retorna resultados agrupados: os grupos por query trazem apenas nomes de tools, com um único mapa compartilhado de tools contendo a source, a descrição e os parâmetros obrigatórios de cada tool encontrada. tool_describe aceita names: string[] e retorna um mapa indexado por nome, então um nome errado não derruba mais a chamada inteira. O stemming Snowball aproxima ‘browsing’ de ‘browser’ e ‘searches’ de ‘search’.

{ "queries": ["browser snapshot", "web search cache", "read pdf"] }

7. Criptografia opcional no keychain do SO para segredos armazenados

O safeStorage do Electron costumava estacionar uma chave por app no keychain de login do macOS, e em máquinas com keychain bloqueado/ausente isso transformava cada inicialização do Desktop num diálogo bloqueante de “Keychain Not Found”. A criptografia com keychain agora é um opt-in explícito (Configurações → Gateway): o caminho padrão nunca chama nenhuma API do safeStorage, e uma migração única converte os blobs criptografados existentes em arquivos simples 0600 na primeira inicialização. Ligue a opção e cada armazenamento de segredos (connection.json, connections.json, native-oauth-tokens.json) é recodificado no lugar.

8. Updaters pausam gateways pelo control socket

hermes update não mata mais a árvore de processos dos gateways em execução: os updaters pausam gateways pelo control socket — os serviços entram em quiescência graciosamente, a atualização é aplicada e os gateways retomam — então turnos em andamento e conexões de mensagens sobrevivem à atualização. Instalações gerenciadas por imagem/package também recusam atualizações in-place inseguras por meio de um portão compartilhado (#91277 Phase 3), e arquivos de usuário gitignored bloqueiam o overlay ZIP destrutivo.

Melhorias

  • Cron: acks duráveis de incidentes (um job que bateu num incidente pode ser reconhecido uma vez, e o ack persiste), e falhas de code-skew mais claras quando o scheduler e o gateway discordam sobre a versão do código.
  • Slack: controles de unfurl de links (unfurl_links/unfurl_media carimbados nos metadados de frames de saída) — equipes podem impedir que os links do agente virem cards expandidos.
  • Docker: profiles de confiança podem optar por um único container persistente compartilhado em vez de dividir por chat; o bootstrap stage2 do API_SERVER_KEY não depende mais da existência de .env.
  • Terminal: sandboxes de terceiros plugam como backends de terminal sem tocar no core.
  • Modelos: GLM-5.3-Flash chega aos seletores z.ai + OpenCode; MiniMax M3 free entra no OpenRouter; MiniMax H3 Max entra no seletor de vídeo da FAL (t2v + i2v).
  • state.db: as escolhas de journal_mode não são mais ignoradas silenciosamente; synchronous é fixável em todas as plataformas.
  • browser_exec: as linhas de tools são intituladas pelo seu # step comment inicial, e o schema emagreceu ~17% (803 → 663 tokens/chamada) com paridade de precisão.

Correções

  • Gateway: liveness de loop com duas testemunhas — o heartbeat do próprio watchdog não pode mais congelar ou matar um gateway saudável (#92315, resgate do #90502).
  • Gateway: double-kill do launchd --replace corrigido — restart gracioso via SIGUSR1 em vez de assumir o argv supervisionado (#96427).
  • Sessões: a varredura de sessões vazias não exclui mais um transcript arquivado (#96401); sessões legadas com owner NULL recebem backfill de owner com correspondência única + retomada de transcript armazenado somente leitura (#96110).
  • MCP: o portão de fast-fail do stdio solicita um respawn quando encontra um subprocesso morto; verificação de liveness dos filhos desinvertida (#94339).
  • Gemini 3.x: imagens são embutidas em functionResponse.parts para que resultados de tools multimodais cheguem de fato ao modelo (#96466).
  • Desktop: group chats param de vazar sentinelas vazias e de engolir respostas reais; um bot mencionado com @ sempre tem seu turno (#96239, #96240).
  • Update: arquivos de usuário gitignored também bloqueiam o overlay ZIP destrutivo (#96440).
  • Aprovação: approvals.timeout superdimensionado não derruba mais lotes paralelos de tools — limitado na leitura da config (#86412).

Atualização

hermes update

Após atualizar, rode hermes doctor para verificar a instalação e reinicie o gateway (hermes gateway) para que as mudanças de plataforma entrem em vigor. Para ver o que a próxima atualização vai tocar antes de rodá-la: hermes update --plan.

← Hermes Agent Changelog