v0.5.0

Hermes Agent v0.5.0 — La Version de Durcissement


Aperçu

v0.5.0 — La Version de Durcissement. Publiée le 28 mars 2026. Cette version vise à rendre Hermes Agent prêt pour la production : plus de 50 correctifs de sécurité et de fiabilité, un audit complet de la chaîne d’approvisionnement et des extensions majeures de plateforme qui positionnent Hermes comme un concurrent sérieux dans l’espace des agents autonomes.

À ce stade, le projet avait déjà dépassé les 15 700 étoiles GitHub depuis son lancement public initial en février 2026, avec plus de 242 contributeurs. Nous Research a décrit cette version comme celle qui “durcit” chaque couche de la stack — du verrouillage des versions de dépendances et du patching des CVE, aux protections SSRF et à la prévention des injections de shell.


Fonctionnalités Majeures

1. Hugging Face comme Fournisseur d’Inférence de Première Classe

Hermes Agent s’intègre désormais nativement avec l’API d’Inférence Hugging Face, avec authentification, assistant de configuration et un sélecteur de modèles intelligent qui mappe les valeurs par défaut agentiques d’OpenRouter à leurs équivalents HF.

# Pendant la configuration, Hugging Face apparaît comme option de fournisseur
hermes setup
# Sélectionnez "Hugging Face" → entrez votre token API HF → choisissez parmi les modèles agentiques sélectionnés

# Passer à un modèle Hugging Face à l'exécution
hermes model --provider huggingface

Fonctionnement interne :

  • Liste de modèles sélectionnés mappant les valeurs par défaut d’OpenRouter aux équivalents HF, pour choisir le bon modèle sans hésitation
  • Les fournisseurs avec plus de 8 modèles sélectionnés ignorent la requête en direct du endpoint /models pour un démarrage instantané
  • Flux d’authentification complet avec votre token API HF, stocké en toute sécurité dans le magasin de credentials Hermes

2. Telegram Private Chat Topics

Des conversations basées sur des projets avec liaison de compétences fonctionnelles par sujet — vous pouvez désormais exécuter des flux de travail isolés dans un seul chat Telegram. Chaque sujet a son propre ensemble de compétences, son propre contexte et sa propre personnalité d’agent.

# hermes.config.yaml
telegram:
  private_chat_topics: true
  topic_skills:
    - topic: "ml-experiments"
      skills: [python-ml, data-analysis, notebook]
    - topic: "devops"
      skills: [docker, terraform, kubernetes]

Cela signifie qu’un seul chat Telegram peut héberger votre flux de travail ML, votre gestion d’infrastructure et votre revue de code — tout isolé, tout persistant, tout au même endroit.

3. Backend Natif Modal SDK

La dépendance swe-rex a été remplacée par le SDK Modal natif (Sandbox.create.aio + exec.aio), éliminant les tunnels SSH et simplifiant radicalement le backend terminal Modal.

# Avant : swe-rex créait des tunnels SSH pour chaque opération de sandbox
# Après : appels SDK directs — plus rapide, plus simple, sans gestion de tunnels

# L'agent utilise maintenant les primitives asynchrones natives de Modal :
# Sandbox.create.aio()  — créer des sandboxes sans surcharge de tunnel
# exec.aio()            — exécuter des commandes directement via le SDK

Ce changement supprime une dépendance architecturale significative et rend l’exécution en sandbox plus fiable et plus facile à déboguer.

4. Hooks de Cycle de Vie des Plugins Activés

Le système de hooks de plugins est maintenant pleinement opérationnel. Quatre hooks de cycle de vie se déclenchent aux points clés de la boucle de l’agent :

Hook Point de Déclenchement Cas d’Usage
pre_llm_call Avant chaque appel API LLM Modifier les prompts, injecter du contexte, journaliser les requêtes
post_llm_call Après chaque appel API LLM Post-traiter les réponses, extraire des données structurées
on_session_start Au début d’une session Initialiser les ressources, configurer l’espace de travail
on_session_end À la fin d’une session Nettoyer, persister l’état, envoyer des notifications
# Exemple de plugin utilisant les hooks de cycle de vie
# my_plugin.py
def pre_llm_call(context, messages):
    # Ajouter un contexte système personnalisé avant que le LLM ne voie le prompt
    messages.insert(0, {"role": "system", "content": "Date du jour : 2026-03-28"})
    return messages

def post_llm_call(context, response):
    # Journaliser l'utilisation des tokens vers votre plateforme d'analyse
    log_usage(response.usage)
    return response

Ces hooks se déclenchent dans le CLI, la passerelle et toutes les plateformes de messagerie — complétant une fonctionnalité d’extensibilité longtemps demandée.

5. Application de l’Utilisation d’Outils GPT

Les modèles GPT avaient une particularité persistante : ils décrivaient ce qu’ils avaient l’intention de faire au lieu d’appeler réellement les outils. v0.5.0 ajoute GPT_TOOL_USE_GUIDANCE — une injection spécialisée dans le prompt système qui force les modèles GPT à utiliser les outils plutôt qu’à narrer les actions.

# Interne : avant chaque appel API GPT, l'agent injecte des instructions :
GPT_TOOL_USE_GUIDANCE = """
Lorsque vous devez effectuer une action, vous DEVEZ utiliser l'outil approprié.
Ne décrivez PAS ce que vous feriez — appelez réellement l'outil.
"""

De plus, les avertissements de budget obsolètes qui s’accumulaient dans l’historique de conversation (et amenaient les modèles à éviter les outils sur plusieurs tours) sont maintenant automatiquement supprimés de la transcription.

6. Correction des Limites de Sortie Anthropic

La limite rigide de 16K max_tokens a été remplacée par des limites de sortie natives par modèle :

Modèle Ancienne Limite Nouvelle Limite
Claude Opus 4.6 16K 128K
Claude Sonnet 4.6 16K 64K
Autres modèles Claude 16K Spécifique au modèle

Cela corrige deux problèmes de longue date :

  • Erreurs “Response truncated” lorsque l’agent avait besoin de plus de 16K tokens de sortie
  • Épuisement du budget de réflexion — l’agent détecte maintenant quand un modèle utilise tous les tokens de sortie pour le raisonnement et saute intelligemment les tentatives de continuation inutiles

7. Support Nix Flake

Par @alt-glitch — build uv2nix complet, module NixOS avec mode conteneur persistant, clés de configuration auto-générées depuis le code source Python, et PATHs avec suffixe pour la convivialité agent.

# flake.nix
{
  inputs.hermes-agent.url = "github:NousResearch/hermes-agent";
  # ...
  hermes-agent.nixosModules.default
  # Fournit : service hermes-agent avec mode conteneur persistant
}

8. Durcissement de la Chaîne d’Approvisionnement

Cette version a mis en place une défense complète de la chaîne d’approvisionnement :

  • Dépendance litellm compromise supprimée — un incident de chaîne d’approvisionnement largement médiatisé
  • Toutes les plages de version de dépendances verrouillées — plus de dérive de version flottante
  • uv.lock régénéré avec des hachages cryptographiques — chaque dépendance est vérifiée au moment de l’installation
  • Workflow CI ajouté qui scanne chaque PR à la recherche de motifs d’attaque de la chaîne d’approvisionnement
  • Dépendances mises à jour pour corriger les CVE connus dans tout l’arbre de dépendances

Nouvelles Compétences

Compétence Description
G0DM0D3 Compétence de jailbreak Godmode pour l’ingénierie avancée de prompts et l’exploration de capacités
Gestion Docker Gestion du cycle de vie des conteneurs, construction d’images et orchestration compose
Migration OpenClaw v2 17 nouveaux modules pour migrer d’OpenClaw vers Hermes Agent, incluant le récapitulatif terminal

Améliorations du Système de Compétences

  • Transmission de variables d’environnement — les compétences peuvent déclarer les variables d’environnement dont elles ont besoin, et Hermes les transmet en toute sécurité
  • Prompts de compétences mis en cache avec module partagé skill_utils pour un temps jusqu’au premier token (TTFT) significativement plus rapide
  • API Git Trees utilisée pour l’installation de compétences afin d’éviter la perte silencieuse de sous-répertoires
  • Les compétences créées par l’agent sont maintenant correctement traitées comme de confiance (et non comme du contenu communautaire non fiable)

Plateformes de Messagerie

Telegram

  • Private Chat Topics avec liaison de compétences par sujet (voir Fonctionnalités Majeures ci-dessus)
  • Découverte automatique d’IP de secours via DNS-over-HTTPS lorsque api.telegram.org est inaccessible — l’agent trouve des routes alternatives
  • Mode de threading de réponse configurable — contrôlez comment l’agent organise ses réponses en fils
  • Reconnexion auto-planifiée lorsque le polling échoue après des erreurs 502

Discord

  • Correction de l’indicateur fantôme “en train d’écrire” qui persistait après la fin du tour de l’agent

Slack

  • Les messages de progression des appels d’outils sont maintenant correctement routés vers le bon fil Slack

WhatsApp

  • Support de téléchargement de médias — les documents, l’audio et les messages vidéo sont maintenant téléchargeables par l’agent

Cœur de la Passerelle

  • Commande /verbose pour les plateformes de messagerie — basculer la verbosité de sortie des outils depuis n’importe quel chat
  • Notifications de revue en arrière-plan livrées directement dans le chat utilisateur
  • Réessayer les échecs d’envoi transitoires et notifier l’utilisateur lorsque les tentatives sont épuisées
  • /stop force la libération du verrou de session — récupérer les agents bloqués sans redémarrer la passerelle
  • SessionStore thread-safe avec threading.Lock
  • La passerelle ne gaspille plus environ 10K tokens en chargeant le AGENTS.md du dépôt Hermes dans chaque session
  • Timeouts de requête ajoutés aux adaptateurs HA, Email, Mattermost et SMS

CLI & Expérience Utilisateur

Améliorations du CLI Interactif

  • Mode d’entrée occupée configurable — contrôlez ce qui se passe lorsque vous tapez pendant le traitement de l’agent
  • Collage multiligne préservé — plus d’entrée déformée lors du collage de commandes multilignes
  • Callback de génération d’outils — mises à jour en streaming “preparing terminal…” pendant que l’agent génère les arguments d’outils
  • Corrections de la barre d’état : les tokens avec des zéros finaux s’affichent maintenant correctement (260K au lieu de 26K), les doublons et la dégradation corrigés pendant les longues sessions
  • La boîte de raisonnement ne s’affiche plus 3 fois pendant les boucles d’appels d’outils
  • “Event loop is closed” / “Press ENTER to continue” pendant les sessions inactives — corrigé avec une solution à trois couches
  • Le TUI se rafraîchit avant la sortie des tâches d’arrière-plan pour éviter le chevauchement visuel

Configuration et Paramétrage

  • Refonte de la commande /model — pipeline partagé extrait pour CLI et passerelle, support d’endpoint personnalisé
  • Le menu de configuration pour utilisateurs récurrents utilise maintenant un mapping de touches explicite au lieu d’un index positionnel fragile
  • hermes update durci contre l’historique divergent, les branches non principales et les cas limites de passerelle
  • La migration OpenClaw ne remplace plus les valeurs par défaut ; l’assistant de configuration saute les sections déjà importées
  • Le chargement d’AGENTS.md s’arrête maintenant au niveau supérieur — plus de parcours récursif de répertoires
  • Chemins Homebrew macOS ajoutés à la résolution PATH du navigateur et du terminal
  • SOUL.md par défaut réinitialisé au texte d’identité de base

Système d’Outils

Serveur API

  • Support Idempotency-Key — sémantique de réessai sécurisée pour les appels API
  • Limites de taille de corps et enveloppe d’erreur compatible OpenAI
  • Annule les agents orphelins à la déconnexion SSE avec une véritable interruption
  • Le streaming ne se casse plus lorsque l’agent effectue des appels d’outils

Terminal et Opérations sur Fichiers

  • L’analyseur de patch V4A gère maintenant correctement les blocs d’ajout uniquement
  • Backoff exponentiel pour le polling persistant du shell — réduction de l’utilisation CPU
  • Timeout ajouté aux appels de sous-processus dans context_references
  • Protection SSRF ajoutée à browser_navigate, vision_tools et web_tools
  • Erreur 402 crédits insuffisants gérée élégamment dans l’outil de vision
  • Le timeout de commande du navigateur est maintenant configurable via config.yaml

MCP

  • Résolution unifiée des ensembles d’outils MCP basée sur l’exécution et la configuration
  • Protection contre les collisions de noms d’outils MCP — empêche l’écrasement silencieux des outils

Sécurité et Fiabilité

Durcissement de la Sécurité (plus de 50 correctifs)

Catégorie Correctif
Protection SSRF browser_navigate, vision_tools et web_tools bloquent maintenant le Server-Side Request Forgery
Restriction des Sous-agents Les ensembles d’outils des sous-agents limités à l’ensemble activé du parent — pas d’escalade de privilèges
Prévention Zip-Slip L’auto-mise à jour durcie contre les attaques de path traversal
Injection de Shell L’expansion de chemin ~user ne permet plus l’injection de commandes
Détection de Commandes Entrée normalisée avant la détection de commandes dangereuses
Tirith Les verdicts de blocage sont maintenant approuvables au lieu d’un blocage strict (humain dans la boucle)
Dépendances litellm/typer/platformdirs compromis supprimés, toutes les plages verrouillées, lockfile avec hachages

Fiabilité

  • Contention de verrou d’écriture WAL SQLite causant des gels TUI de 15-20s — corrigé
  • Concurrence SQLite durcie avec garanties d’intégrité des transcriptions de session
  • Prévention du re-déclenchement des tâches cron dans les boucles de crash/redémarrage de la passerelle
  • Sessions cron correctement marquées comme terminées après l’achèvement de la tâche

Performance

  • Optimisations de démarrage TTFT — améliorations rapides pour des démarrages à froid plus rapides
  • Mise en cache des prompts de compétences avec module partagé skill_utils réduit les calculs répétés
  • Lectures de fichiers redondantes éliminées pour les conditions de compétences dans le constructeur de prompts
  • Délai d’expiration API par défaut augmenté de 900s à 1800s pour les modèles à raisonnement lent

Mise à Niveau

hermes update

Pour les nouvelles installations, consultez le guide d’installation.


Journal des modifications complet sur GitHub

← Hermes Agent Changelog