Hermes Agent v0.20.6
Aperçu
v0.20.6 — The Steady Roll Release. Publiée le 27 août 2026. ~525 PR fusionnées · ~1 313 commits · ~1 557 fichiers modifiés (+177 113 / −21 682) depuis la v0.20.5.
Cette fenêtre représente une avancée régulière et substantielle : le grand titre, c’est la navigation avec profil réel sous consentement explicite — l’agent peut désormais piloter un snapshot de votre propre profil de browser, pour naviguer comme vous, avec vos identifiants et cookies existants, toujours sous consentement explicite et désactivée par défaut. Autour de cela, le Browser de bureau gagne sa propre fenêtre système et un moteur de mise à jour distante managé par SSH ; le catalogue MCP distant intégré dépasse les 50 serveurs hébergés par des éditeurs vérifiés en conditions réelles (Cloudflare, Grafana Cloud, Better Stack, Railway et bien d’autres) ; web_search/web_extract ajoutent la mise en cache TTL des résultats pour que les recherches répétées cessent de refacturer les fournisseurs ; la compression lean-tail devient le mode par défaut ; tool_search apprend les recherches multi-requêtes avec racinisation ; les secrets stockés peuvent opter pour le chiffrement via le keychain de l’OS (fini les invites du keychain macOS à chaque lancement) ; les programmes de mise à jour mettent les gateways en pause via la socket de contrôle au lieu de les tuer en cascade ; et de nouveaux modèles apparaissent dans les sélecteurs (GLM-5.3-Flash, MiniMax M3 free, MiniMax H3 Max video).
Il s’agit d’une version correctrice : les notes officielles sont donc brèves, et la documentation complète et organisée arrivera avec la v0.21.0. Cette page couvre les parties les plus précieuses de cette fenêtre.
Points forts
1. Navigation avec profil réel : l’agent navigue comme vous
Le browser de l’agent tournait autrefois dans un monde vierge et déconnecté — parfait pour la recherche publique, frustrant dès qu’une tâche exige votre session authentifiée. La v0.20.6 ajoute la navigation avec profil réel sous consentement explicite (#1f4d095fd8, #830e4a29be) : une fois activée, Hermes copie le profil actif de votre browser par défaut (cookies, identifiants enregistrés, préférences) dans un snapshot managé sous ~/.hermes/browser-profile/, puis pilote ce snapshot avec son Chromium intégré. Votre profil en cours n’est jamais ouvert directement, et les fichiers d’authentification sont resynchronisés à chaque lancement d’une nouvelle session : les connexions que vous effectuez dans votre propre browser apparaissent ainsi dans la session de l’agent.
# ~/.hermes/config.yaml
browser:
use_real_profile: true
L’outil browser_exec expose un argument local (uniquement lorsque l’option est activée) qui force une session avec profil réel même sur un backend de browser cloud. Sous Windows, le browser doit être entièrement quitté avant la copie (Chrome/Edge/Brave verrouillent leurs bases de cookies), et browser.real_profile_autoclose: true permet à Hermes de proposer de le fermer à votre place — il ne le ferme jamais de lui-même. Désactiver l’option supprime le stockage de snapshots, si bien que les identifiants copiés ne subsistent pas après le retrait de votre consentement. Browsers pris en charge : Chrome, Edge, Brave, Chromium ; un browser par défaut non-Chromium (par ex. Firefox) échoue en mode fermé avec un message clair. Côté bureau : Réglages → Browser → Utiliser mon profil de browser réel.
2. Le Browser de bureau dans sa propre fenêtre système + moteur de mise à jour distante managé par SSH
Le Browser de bureau sort de son panneau intégré : il peut désormais s’ouvrir dans sa propre fenêtre système — redimensionnez-la, déplacez-la entre vos écrans, gardez-la à côté de votre éditeur. Le bureau gagne aussi un moteur de mise à jour distante managé par SSH : des mises à jour par connexion SSH pour les gateways distants, afin qu’une fleet de machines reste à jour depuis une seule application de bureau (rail de profil de fleet inclus — changez de profil et les cibles de mise à jour suivent).
3. Catalogue MCP distant : plus de 50 serveurs d’éditeurs vérifiés en conditions réelles
Le catalogue MCP distant intégré passe à plus de 50 serveurs hébergés par des éditeurs, vérifiés en conditions réelles — Cloudflare, Grafana Cloud, Better Stack, Railway, Canva, Dropbox, GitLab, Strava et bien d’autres. Chaque entrée est vérifiée contre l’endpoint live de l’éditeur, et ?codemode=false est verrouillé pour que tool_search voie toute la surface d’endpoints de chaque entrée du catalogue. Une seule commande pour voir ce qui est disponible :
hermes mcp catalog list --remote
4. Mise en cache TTL des résultats pour web_search / web_extract
Les recherches et extractions répétées dans une courte fenêtre de temps ne refacturent plus le fournisseur : les résultats de web_search/web_extract sont mis en cache avec un TTL (configurable via web.cache_ttl), si bien qu’une nouvelle tentative, une réexécution du même prompt ou un job cron qui vérifie deux fois la même URL obtient la réponse en cache au lieu d’un nouvel appel (payant). De quoi économiser sur les longues exécutions d’agent et les tâches récurrentes.
5. La compression lean-tail est désormais le mode par défaut
La compression est devenue plus discrète et moins coûteuse : lean-tail est le mode par défaut — au lieu de conserver une longue traîne de tours à faible valeur, le compresseur garde un résumé compact plus une courte traîne de haute valeur, réduisant ce que chaque tour renvoie après compression. Les configurations existantes qui n’ont jamais défini agent.compression.tail_mode adoptent le nouveau défaut lors de la mise à jour ; les réglages explicites sont laissés intacts.
6. tool_search : multi-requêtes avec racinisation
tool_search accepte désormais queries: string[] — chaque requête est cherchée indépendamment dans le même catalogue, la limite s’applique par requête (5 par défaut, 25 maximum) — et renvoie des résultats groupés : chaque groupe par requête ne porte que les noms d’outils, avec une carte tools partagée unique contenant la source, la description et les paramètres requis de chaque outil trouvé. tool_describe accepte names: string[] et renvoie une carte indexée par nom, si bien qu’un seul mauvais nom ne fait plus échouer tout l’appel. La racinisation Snowball fait correspondre « browsing » à « browser » et « searches » à « search ».
{ "queries": ["browser snapshot", "web search cache", "read pdf"] }
7. Chiffrement opt-in via le keychain de l’OS pour les secrets stockés
safeStorage d’Electron déposait autrefois une clé par application dans le keychain de connexion de macOS, et sur les machines avec un keychain verrouillé ou manquant, chaque lancement du bureau se transformait en boîte de dialogue bloquante « Keychain Not Found ». Le chiffrement adossé au keychain est désormais un opt-in explicite (Réglages → Gateway) : le chemin par défaut n’appelle jamais aucune API safeStorage, et une migration en un seul passage convertit les blobs chiffrés existants en fichiers 0600 en clair au premier lancement. Activez l’option et chaque magasin de secrets stocké (connection.json, connections.json, native-oauth-tokens.json) est ré-encodé sur place.
8. Les programmes de mise à jour mettent les gateways en pause via la socket de contrôle
hermes update ne tue plus les gateways en cours d’exécution en cascade : les programmes de mise à jour mettent les gateways en pause via la socket de contrôle — les services se mettent en veille proprement, la mise à jour est appliquée, puis les gateways reprennent — si bien que les tours en cours et les connexions de messagerie survivent à la mise à niveau. Les installations gérées par image/paquet refusent également les mises à jour sur place dangereuses via une porte partagée unique (#91277 Phase 3), et les fichiers utilisateur gitignored bloquent l’écrasement destructif par ZIP.
Améliorations
- Cron : accusés de réception durables pour les incidents (un job ayant subi un incident peut être accusé une seule fois, et l’accusé persiste), et échecs de dérive de code plus clairs lorsque le planificateur et le gateway ne s’accordent pas sur la version du code.
- Slack : contrôles de dépliage des liens (
unfurl_links/unfurl_mediaestampillés sur les métadonnées des frames sortantes) — les équipes peuvent empêcher les liens de l’agent de se déployer en cartes. - Docker : les profils de confiance peuvent opter pour un conteneur persistant partagé unique au lieu d’un découpage par chat ; l’amorçage
API_SERVER_KEYdu stage2 ne dépend plus de l’existence de.env. - Terminal : les sandbox tiers se branchent en tant que backends de terminal sans toucher au cœur.
- Modèles : GLM-5.3-Flash arrive dans les sélecteurs z.ai + OpenCode ; MiniMax M3 free rejoint OpenRouter ; MiniMax H3 Max rejoint le sélecteur vidéo FAL (t2v + i2v).
- state.db : les choix de
journal_modene sont plus ignorés silencieusement ;synchronousest épinglable sur toutes les plateformes. - browser_exec : les lignes d’outils sont titrées par leur commentaire
# step commentde tête, et le schema a perdu ~17 % de poids (803 → 663 tokens par appel) à parité de précision.
Corrections
- Gateway : vivacité de boucle à deux témoins — le battement de cœur du watchdog ne peut plus geler ni tuer un gateway sain (#92315, sauvetage de #90502).
- Gateway : double kill de launchd
--replacecorrigé — redémarrage gracieux SIGUSR1 au lieu d’une prise de contrôle de l’argv supervisé (#96427). - Sessions : le balayage des sessions vides ne supprime plus une transcription archivée (#96401) ; les sessions héritées sans propriétaire (NULL) reçoivent un backfill de propriétaire à correspondance unique + reprise de transcription stockée en lecture seule (#96110).
- MCP : la porte d’échec rapide stdio demande une relance lorsqu’elle trouve un sous-processus mort ; le contrôle de vivacité des enfants a été désinversé (#94339).
- Gemini 3.x : les images sont intégrées dans
functionResponse.partsafin que les résultats d’outils multimodaux atteignent réellement le modèle (#96466). - Bureau : les conversations de groupe cessent de fuir des sentinelles vides et d’avaler les vraies réponses ; un bot mentionné par @ obtient toujours son tour (#96239, #96240).
- Mise à jour : les fichiers utilisateur
gitignoredbloquent également l’écrasement destructif par ZIP (#96440). - Approbation : un
approvals.timeoutdémesuré ne fait plus planter les lots d’outils parallèles — plafonné à la lecture de la configuration (#86412).
Mise à jour
hermes update
Après la mise à niveau, exécutez hermes doctor pour vérifier l’installation et redémarrez le gateway (hermes gateway) afin que les changements de plateforme prennent effet. Pour voir ce que la prochaine mise à jour touchera avant de l’exécuter : hermes update --plan.