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_mediacarimbados 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_KEYnã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_modenã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 commentinicial, 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
--replacecorrigido — 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.partspara 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.timeoutsuperdimensionado 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.