Dois Gmails, um Hermes só: as contas dos connectors finalmente ganharam nome


Nove da manhã: você pergunta ao Hermes no chat se caiu algo importante na sua caixa de entrada hoje. Ele abre a caixa pessoal que você criou para um projeto de fim de semana, e a resposta do cliente que está parada no seu e-mail de trabalho passa batido. Então você acrescenta “quis dizer a do trabalho” — e o melhor que ele consegue responder é “o Gmail está conectado”, porque é genuinamente só isso que ele sabe.

O modelo não estava sendo lento. O Hermes conhecia exatamente um login conectado por app, sem nome e sem uma segunda conta para escolher.

Um app, uma conta

O Hermes alcança apps externos por meio de connectors: o gateway os hospeda como tools com nomes do tipo connectors__gmail__SEND_EMAIL, que você encontra com tool_search e chama com tool_call. Nesse modelo, a versão antiga assumia uma conta por app, e as consequências eram bem concretas:

  • Um segundo login do Gmail não tinha nome que o modelo pudesse usar, então ele pegava a conta mais recente;
  • reconnect gmail checava a flag “connected” do connector inteiro. Com uma conta saudável e outra expirada, ele dizia conectado e não reparava nada;
  • Um card de conexão do Gmail já aberto era reaproveitado para qualquer outro pedido de conexão do Gmail;
  • Os resultados nunca diziam sob qual conta a chamada rodou.

Para uma pessoa em uma máquina só, isso é apenas irritante. Quando o mesmo gateway passa a servir mais de uma pessoa, vira um problema de controle de acesso — exatamente o muro com que a comunidade esbarrou na issue #15602, ligando um mesmo gateway Hermes ao Gmail de duas pessoas ao mesmo tempo.

As contas ganham nome: o alias

A versão nova dá a cada conta um nome curto, chamado de alias no formato de dados: de 1 a 32 letras minúsculas, dígitos ou hífens, começando com letra ou dígito. Uma conta sem alias aparece com o label do próprio app.

A regra é simples: assim que um app tem duas contas ativas, o gateway adiciona um campo connector_alias ao schema da tool daquele connector, listando os nomes que ela aceita. O modelo passa um deles na chamada:

tool_call  connectors__gmail__SEND_EMAIL
           {"connector_alias": "work", ...}

O resultado devolve account, e o label ao vivo da tool é renderizado como Gmail · send email (work). Uma olhada basta para saber qual identidade mandou o e-mail.

Junto com o nome, outras coisas mudaram:

  • Os objetos target do manage_connections aceitam alias (qual conta) e to (o novo nome), além de uma ação rename. Uma chamada com alias carrega esse único target; targets MCP recusam os dois campos;
  • connect com nome pede essa conta ao gateway: ou adiciona uma nova, ou responde connected quando já existe uma conta ativa com aquele nome;
  • reconnect com nome lê a linha daquela conta em vez da flag do connector inteiro, então conserta a quebrada enquanto a saudável continua funcionando. Se essa linha não puder ser lida, a tool reporta o erro em vez de criar uma conta nova em silêncio;
  • status lista as contas de cada connector com alias, label, status e active.

O CLI: hermes connectors

Um comando novo cobre listar, conectar, renomear e remover:

hermes connectors list
hermes connectors accounts
hermes connectors accounts gmail --all
hermes connectors connect gmail --alias home
hermes connectors rename gmail work --to office
hermes connectors disconnect gmail --alias home --yes
Subcomando O que ele faz
list (alias ls) Todos os connectors e se estão conectados
accounts [app] [--all] Contas conectadas; as linhas aposentadas são dobradas, a menos que você passe --all
connect <app> [--alias NAME] [--reconnect] [--force] Conecta uma conta nova; --reconnect conserta uma quebrada; --force loga de novo uma saudável
rename <app> <name-or-label> --to <new> Renomeia uma conta
disconnect <app> [--alias NAME] [--yes] Remove uma conta; com stdin não interativo é preciso --yes

Detalhes que vale saber antes de digitá-los:

  • connect imprime o link de login e espera até a conta se estabilizar ou o prazo estourar. Ctrl-C fecha o connect aberto e sai com 130, para o próximo connect daquele app não ficar bloqueado;
  • Um nome que quebra o formato, ou que outra conta viva do mesmo app já usa, é recusado antes de qualquer requisição sair;
  • Com mais de uma conta em um app, um comando sem --alias dá erro e lista os nomes entre os quais você pode escolher.

O overlay /connectors no TUI

Digite /connectors na interface de terminal e um overlay flutuante abre, com uma linha por conta mostrando app, nome e status:

  • r renomeia ali mesmo — Enter salva, Esc cancela;
  • a adiciona uma conta: escolha o app, digite um nome, abra o link. O overlay espera até a conta se estabilizar, o link expirar ou o gateway recusar;
  • c reconecta a conta selecionada. Ele nunca apaga nada, uma conta saudável responde connected na hora, e uma linha sem nome pede que você dê um nome antes;
  • x remove a conta selecionada depois do prompt de confirmação compartilhado do TUI;
  • Tab mostra ou dobra as contas aposentadas, que não podem ser reconectadas enquanto estiverem dobradas.

Vale uma regra conservadora do começo ao fim: enquanto qualquer pergunta ou confirmação do agente estiver aberta, o overlay para de ler teclas, para que responder a um prompt não apague uma conta sem querer.

O app de desktop

Em Capabilities → Connectors, cada app agora lista todas as suas contas, com ações de nomear, renomear, adicionar, reconectar e remover; a remoção passa por uma confirmação. Quando o agente nomeia uma conta nova, o chat diz qual nome ele escolheu — por exemplo “O Hermes chamou esta conta do Gmail de work. Renomeie quando quiser.” O nome é escolha do agente; não há prompt de nome para responder.

Ressalvas

  • É obrigatório fazer login no Nous Portal. Connectors são tools hospedadas, então hermes login vem primeiro; sem isso, o comando manda você entrar em vez de falhar com algo incompreensível.
  • Renomear depende do Portal. Enquanto o Portal não entregar a rota de rename, rename responde “This Nous Portal cannot rename connector accounts yet.” e o editor do desktop mostra essa recusa e restaura o nome antigo. Todo o resto funciona.
  • Remover uma conta continua sendo só seu. O CLI pede confirmação, o desktop pede um clique. Nenhum fluxo automático apaga uma conta por você.
  • Status: este trabalho (PRs #135097 / #135151 / #135173) entrou na main em 2026-10-11. A release tagueada atual, v0.21.6 de 8 de outubro, ainda não o contém — ele chega na próxima release.
  • Connectors só existem para contas Nous logadas, e é por isso que hermes connectors list pode responder “Connectors are not available. Sign in with hermes login first.”

Para fechar

“Usa a do trabalho” agora é algo que o agente consegue de fato seguir: a conta tem nome, o modelo diz o nome na chamada, o resultado informa qual identidade rodou, e um reparo mexe só na conta quebrada. Dar um nome custa um comando e rende rastreabilidade em cada ação de saída — o que importa muito mais do que conveniência quando uma máquina guarda tanto os seus logins de trabalho quanto os pessoais.

Se a camada de connectors é novidade para você, comece por como funciona a busca de tools e depois veja de onde vêm as tools hospedadas no catálogo oficial de MCP remoto. Instalando o Hermes pela primeira vez? O guia de instalação é o lugar de começar.