Hermes Agent Lab

Blog do Hermes Agent — Guias Práticos e Insights

Últimos artigos e insights.

Renomear um profile do Hermes deixava um fantasma

Renomear um profile deixava a state DB no nome antigo. O PR #112653 migra essa identidade, adiciona um comando de retry e impede que profiles apagados voltem.

Ler mais

Multiplexação de perfis no gateway agora é o padrão

gateway.multiplex_profiles agora vem ativado, mas uma guarda de inicialização decide valores não definidos: um gateway serve todos os perfis quando é seguro.

Ler mais

Por que o state.db se corrompe dentro de mounts do Docker Desktop, OrbStack e WSL2

Faça bind mount do seu diretório de dados em um container e o virtiofs ou o 9p não conseguem dar ao SQLite WAL o lock compartilhado de que ele precisa, então dois writers corrompem o state.db em silêncio enquanto toda checagem de integridade passa. Desde a PR #111433, o Hermes avisa isso na inicialização e no hermes doctor, com duas correções concretas.

Ler mais

Você já paga por um pensamento que não precisa: reasoning effort em todo seletor de modelo do Hermes

Cobrar um rename de uma linha em ultra reasoning effort é o desperdício mais comum em uma configuração de agent. A PR #110346 coloca um passo de effort em todo seletor de modelo — hermes model, /model, a TUI Ink, o gateway de mensageria. Aqui está toda a superfície de controle: /reasoning, a pill do composer no Desktop, effort por tarefa em Settings → Model → Auxiliary, agent.reasoning_overrides e delegation.reasoning_effort.

Ler mais

Por que suas ferramentas MCP vivem pedindo login de novo: dentro do ciclo de vida dos tokens OAuth

Figma, Linear e Notion não param de pedir que o Hermes faça login outra vez — e geralmente não é erro de configuração. Aqui está o ciclo de vida dos tokens por trás disso: como refreshes concorrentes disparam a detecção de reuso, por que um refresh token precisa ficar vinculado ao servidor que o emitiu, e as quatro correções que o Hermes lançou para isso.

Ler mais

hermes profile update apagava as suas skills e os seus cron jobs

O PR #111344 corrige um bug P1 de perda de dados: atualizar uma distribution de profile substituía os diretórios skills/ e cron/ inteiros, apagando tudo o que o usuário havia adicionado. Agora eles são mesclados root por root, então as suas adições sobrevivem enquanto os roots publicados pelo autor continuam atualizando.

Ler mais

Hermes v0.21.3: a sua sessão de desktop para de se desconectar sozinha depois de dormir

A v0.21.3 (tag v2026.9.14) é a tag de correção que leva as correções de sign-in remoto para usuários de Docker e Cloud: bursts de refresh concorrentes não revogam mais a sessão inteira, o refresh roda fora do event loop, e processos de longa duração param de vazar handles de escrita duplicados no state.db.

Ler mais

Suas fotos de iPhone finalmente funcionam: decodificação HEIC no vision_analyze e ferramentas de visão que param de desaparecer

Enviar uma foto de iPhone para o Hermes costumava devolver uma única linha: source is not a recognized image. O PR #106408 adicionou sniffing de ftyp ISO-BMFF e normalização com pillow-heif; o PR #110136 corrigiu o cache poisoning que fazia as ferramentas de visão desaparecerem em processos de longa duração.

Ler mais

Como concluir o OAuth em um servidor remoto: túneis SSH, callbacks colados e device codes

Quando o Hermes roda em uma VM na nuvem ou atrás de um jump box, o OAuth com redirect de loopback (Spotify, servidores MCP remotos) quebra em 127.0.0.1. Três caminhos que funcionam: um encaminhamento local via SSH, colar a URL de redirect de volta e fluxos de device code ou de código colado.

Ler mais

169.254.169.254 agora pede licença: o Hermes coloca a busca de credenciais do instance metadata na nuvem atrás de aprovação

Em uma VM na nuvem, o instance metadata service entrega credenciais IAM temporárias para qualquer processo local sem autenticação nenhuma. Depois do PR #106418, comandos que atingem 169.254.169.254, fd00:ec2::254, metadata.google.internal ou 100.100.100.200 pedem aprovação em vez de serem auto-aprovados.

Ler mais

Quando os dedos apertam Esc: keybindings do Vim no composer do CLI do Hermes (e o nome do branch na sua status bar)

Você digita um prompt longo, acha um erro de digitação e aperta Esc por reflexo para corrigir — e nada acontece. Depois do PR #106412, display.vim_mode transforma o composer de entrada do CLI em um editor estilo vi, com rótulo NORMAL/INSERT/REPLACE ao vivo na status bar.

Ler mais

Hermes v0.21.2: isolamento entre perfis e o fim da tempestade de backends

v0.21.2 fecha sete vazamentos entre perfis, impede que o desktop abra um backend para cada perfil e corrige uma série de comportamentos de cron, kanban e memória que não faziam sentido.

Ler mais

Sem reiniciar: o Hermes passa a servir na hora os perfis criados com o gateway em execução

São duas da manhã, você acabou de criar um terceiro perfil, colou o token do bot, mandou um olá no Telegram — e ninguém responde. O desktop continua mostrando o gateway desse perfil como parado. A única saída documentada era reiniciar o gateway, o que interrompe os outros dois perfis no meio de tarefas longas. O PR #109239 muda isso: um gateway multiplex em execução passa a reconciliar o diretório de perfis a quente. Perfis novos são servidos na hora, credenciais coladas depois reconstroem o adaptador, perfis removidos são desmontados e saem do roteamento, e um rescan a cada 30 segundos cobre as falhas. Mesclado na main em 2026-09-12, depois da versão v0.21.2.

Ler mais

O Hermes agora pede aprovação antes de desinstalar um pacote

Um pacote npm global está deixando seus builds lentos, você digita `npm uninstall -g some-package` e aperta Enter. Dois dias depois ele falta na CI e todos os projetos daquela máquina são afetados. Esse comando antes rodava sem nenhuma pergunta, porque o portão de comandos perigosos só conhecia primitivas de shell. O PR #109170 (já na main) adiciona uma regra package manager uninstall para npm, pnpm, yarn, pip e brew: as desinstalações agora perguntam, enquanto instalações e atualizações continuam passando. As regras são ancoradas com _CMDPOS, então texto entre aspas não é marcado por engano, e uma opção global seguida de um argumento também não escapa.

Ler mais

Hermes MCP include: uma lista vazia agora bloqueia tudo, em todo lugar

Várias interfaces liam tools.include: [] como «chave não definida». Depois do PR #109188, o hermes mcp list, o hermes mcp configure, o hermes tools, a reinstalação do catálogo e o painel MCP do desktop mostram 0 selecionados.

Ler mais

As tarefas cron do Hermes agora degradam em vez de falhar em gateways systemd sem sessão D-Bus de usuário

Em gateways gerenciados pelo systemd que não têm sessão D-Bus de usuário (contêineres, LXC enxuto, contas de serviço sem linger), cada tarefa cron falhava no exato momento do despacho. O PR #109311 faz essas tarefas degradarem: continua sendo um processo worker externo, só que sem isolamento de cgroup, com um único aviso por processo de gateway. Defina cron.require_restart_safe_scope: true para recuperar o comportamento fail-closed. Mesclado na main em 2026-09-12; ainda não está em nenhuma versão publicada.

Ler mais