Hermes Agent v0.13.0 — La Release Ténacité
Aperçu
v0.13.0 — La Release Ténacité. Publiée le 7 mai 2026. 864 commits · 588 PRs fusionnées · 829 fichiers modifiés · 128 366 insertions · 282 tickets fermés (13 P0, 36 P1) · 295 contributeurs de la communauté (co-auteurs inclus).
La Release Ténacité répond à une question avec trois mécanismes différents : comment un agent termine-t-il ce qu’il a commencé ? Avant la v0.13, Hermes était intelligent mais pas persistant — il pouvait démarrer une tâche en plusieurs étapes, rencontrer un obstacle, puis dériver silencieusement ou mourir. La v0.13 livre trois solutions imbriquées : un Kanban multi-agent durable (tableaux de tâches avec heartbeat, détection de zombies et récupération après hallucination), /goal (la boucle Ralph — verrouiller l’agent sur un objectif entre les tours), et Checkpoints v2 (la persistance d’état réécrite avec un élagage réel). Ensemble, ils font d’Hermes le premier framework d’agent open source avec des garanties d’achèvement intégrées.
C’est également la plus grande release de sécurité de l’histoire du projet — 8 correctifs P0 en une seule release. La rédaction est désormais activée par DÉFAUT. Les listes d’autorisation de rôles Discord sont limitées au serveur. WhatsApp rejette les inconnus par défaut. Les fenêtres TOCTOU sont fermées pour auth.json et MCP OAuth. La surface d’attaque de l’agent se réduit considérablement tandis que sa portée s’étend : Google Chat rejoint les 20 plateformes de messagerie, les providers deviennent une surface pluggable, et le CLI ainsi que le gateway parlent désormais sept langues.
Fonctionnalités Majeures
1. Kanban Multi-Agent — Déléguez à une Équipe d’IA Qui Termine le Travail
La fonctionnalité phare de la v0.13. Kanban transforme Hermes en un tableau de tâches multi-agent durable. Lancez un tableau, déposez-y des tâches et laissez plusieurs workers Hermes les prendre en charge, se les transmettre et les clôturer. Ce qui compte, c’est l’infrastructure : heartbeats, récupération après timeout, détection de zombies, budget de tentatives par tâche, blocage automatique en cas de sortie incomplète et une barrière de récupération après hallucination.
Créer et gérer un tableau kanban :
# Créer un nouveau tableau et basculer dessus
hermes kanban boards create project-a --name "Project A" --switch
# Ajouter des tâches
hermes kanban create "Implement OAuth flow" \
--priority 1 \
--body "Add OAuth 2.0 with PKCE support to the auth service"
hermes kanban create "Write integration tests" \
--priority 2 \
--body "Test coverage for all auth endpoints"
# Lister toutes les tâches
hermes kanban list
# Voir les statistiques du tableau
hermes kanban stats
Comment fonctionne le mécanisme de durabilité :
Lorsqu’un worker prend une tâche, il commence à envoyer des heartbeats. Si les heartbeats s’arrêtent (crash, perte de réseau, OOM), un autre worker récupère la tâche après un délai configurable. La détection de zombies identifie les workers qui semblent vivants mais ne progressent pas — ils sont marqués comme morts et leurs tâches sont redistribuées. Si une tâche échoue N fois de suite, le budget de tentatives la place dans une file de révision humaine au lieu de la faire boucler indéfiniment. Les workers qui quittent sans terminer leur tâche en cours sont auto-bloqués pour éviter les abandons silencieux.
La barrière anti-hallucination est ce qui rend ce système digne de la production, pas une simple démo. Lorsqu’un worker prétend avoir terminé une tâche, le système vérifie cette affirmation avant de l’accepter — en cherchant des preuves que le travail a réellement été effectué, pas seulement déclaré.
# hermes.config.yaml — profil de worker kanban
kanban:
board: project-a
worker:
max_spawn: 5 # jusqu'à 5 workers concurrents
heartbeat_interval: 30s
reclaim_timeout: 120s # délai avant récupération d'une tâche inactive
max_retries: 3 # budget de tentatives par défaut par tâche
auto_block_on_exit: true # bloquer les tâches inachevées à la sortie
Vous pouvez également personnaliser les tentatives par tâche pour les tâches qui nécessitent plus (ou moins) d’essais :
hermes kanban create "Migration de données fragile" --max-retries 1
hermes kanban create "Recherche par force brute" --max-retries 10
Sous le capot, le système Kanban inclut :
- Tableaux multi-projets — une installation Hermes, plusieurs kanbans indépendants
- Écritures d’état atomiques — aucune corruption partielle du tableau en cas de crash
- Notifications par plateforme sur le canal d’accueil — soyez notifié sur Telegram, Discord ou Slack lorsque les tâches changent d’état
- Un moteur de diagnostic générique pour les signaux de détresse des tâches — les workers peuvent signaler « Je suis bloqué, voici pourquoi »
- Intégration au tableau de bord — vue du tableau en temps réel, création de tâches inline, saisie du workspace et du chemin
2. /goal — L’Agent N’Oublie Pas Ce Que Vous Lui Avez Demandé
La boucle Ralph, désormais une primitive de premier ordre. /goal verrouille l’agent sur une cible et l’y maintient entre les tours. Si l’utilisateur tente de le faire dévier en cours de conversation, l’agent reconnaît le détour et revient à l’objectif. Si un outil échoue, il trouve un autre moyen. Si la session dure des heures, l’objectif reste épinglé.
# Définir un objectif persistant
/goal "Rechercher les 5 meilleurs outils CRM, comparer leurs tarifs et résumer le meilleur choix pour une startup de 50 personnes"
# L'agent reste verrouillé dessus entre les tours.
# Vous pouvez poser des questions sans rapport — il répondra, puis y reviendra.
Le système /goal utilise un modèle juge pour évaluer si l’objectif est atteint. Le juge s’exécute après chaque tour, évaluant les progrès par rapport à l’objectif déclaré. L’agent peut faire des détours (tâches secondaires, clarifications, échecs d’outils) mais ne peut pas abandonner définitivement l’objectif tant que le juge ne l’a pas déclaré terminé.
# Vérifier le statut de l'objectif à tout moment
/goal status
# Mettre en pause et reprendre
/goal pause
/goal resume
# Effacer et en définir un nouveau
/goal clear
/goal fonctionne avec /subgoal (prévu pour la v0.14.0) pour vous permettre d’ajouter des critères de succès en cours de route. Ensemble, ils reproduisent ce que fait un plan de projet traditionnel — un objectif plus des affinements au fil du temps.
3. Checkpoints v2 — La Persistance d’État Réécrite
L’ancien système de checkpoints accumulait des dépôts fantômes orphelins, n’avait pas de véritable élagage et grossissait sans limite. Checkpoints v2 est une réécriture complète :
- Architecture à stockage unique — fini l’état dispersé dans plusieurs répertoires
- Élagage réel — les anciens checkpoints sont véritablement supprimés, avec une rétention configurable
- Garde-fous pour le disque — refuse de créer un checkpoint lorsque l’espace disque est critique
- Aucun dépôt orphelin — chaque shadow git a un cycle de vie tracé
Combiné à la nouvelle fonctionnalité de reprise automatique du gateway, l’agent survit désormais aux redémarrages de manière transparente. Le gateway redémarre en plein milieu d’une tâche ? La conversation reprend. /update relance le processus ? Vous revenez là où vous en étiez. Rechargement des fichiers source ? La session continue.
4. Vague de Sécurité — 8 Correctifs P0
C’est la release la plus renforcée en sécurité de l’histoire d’Hermes. Huit vulnérabilités critiques corrigées en une seule release :
| # | Correctif | Sévérité | Ce qui a changé |
|---|---|---|---|
| 1 | Rédaction activée par DÉFAUT | P0 | La sortie de l’agent masque automatiquement le contenu sensible — vous ne l’activez pas, c’est activé |
| 2 | Listes d’autorisation de rôles Discord limitées au serveur | CVSS 8.1 | Auparavant, les rôles d’un serveur pouvaient autoriser l’accès dans un autre (contournement DM inter-serveurs) |
| 3 | WhatsApp rejette les inconnus | P0 | Les nouvelles connexions WhatsApp sont bloquées sauf si explicitement autorisées ; ne répond jamais en auto-chat |
| 4 | MCP OAuth TOCTOU corrigé | P0 | La fenêtre de vulnérabilité TOCTOU est fermée lors de la sauvegarde des identifiants OAuth |
| 5 | auth.json TOCTOU corrigé | P0 | Les writers d’identifiants sont renforcés contre les conditions de concurrence |
| 6 | Plancher SSRF pour les métadonnées cloud du navigateur | P0 | Le routage hybride bloque les endpoints de métadonnées cloud même sur les backends CDP non locaux |
| 7 | Analyses d’injection de prompt pour les tâches cron | P0 | Le contenu des compétences assemblées est analysé contre l’injection de prompt avant l’exécution cron |
| 8 | Rédaction de hermes debug share |
P0 | Le contenu des logs est rédacté au moment du téléversement, pas après |
Plus des renforcements supplémentaires :
.env,auth.jsonetstate.dbrestaurés avec des permissions 0600 — lecture/écriture propriétaire uniquement- Intégrité SRI pour les scripts des plugins du tableau de bord
- Serveur de nœud Meet lié à localhost uniquement, fichier de jeton restreint à la lecture du propriétaire
- Cible d’écriture sensible étendue pour couvrir les fichiers RC du shell et les fichiers d’identifiants
- Mode YOLO renforcé contre l’analyse de chaînes booléennes entre guillemets
- OSV-Scanner CI + Dependabot pour la surveillance des vulnérabilités des dépendances
5. Google Chat — La 20ᵉ Plateforme de Messagerie
Hermes prend désormais en charge 20 plateformes de messagerie nativement, avec Google Chat comme dernière arrivée. La liste complète :
Telegram, Discord, Slack, WhatsApp, Signal, DingTalk, SMS (Twilio), Mattermost, Matrix, Webhook, Email (IMAP/SMTP), Home Assistant, Feishu/Lark, WeCom, Weixin, BlueBubbles (iMessage), QQBot, Yuanbao, Microsoft Teams, Google Chat.
Les 20 plateformes fonctionnent à partir d’un seul processus gateway avec une gestion unifiée des sessions, la gestion des redémarrages et le routage des fils de discussion. L’architecture du gateway inclut désormais des hooks génériques pour plugins de plateforme — env_enablement_fn et cron_deliver_env_var — pour que les adaptateurs tiers s’intègrent sans toucher au cœur. IRC et Teams ont déjà été migrés vers cette surface.
Nouvelles capacités inter-plateformes dans cette release :
allowed_channels/allowed_chats/allowed_roomsconfigurable sur Slack, Telegram, Mattermost, Matrix et DingTalk — restreignez les canaux avec lesquels l’agent peut interagir- Flag
gateway_restart_notificationpar plateforme — contrôlez si chaque plateforme reçoit un message « Je suis de retour » après un redémarrage - Config
busy_ack_enabled— supprimez les messages d’accusé « Je travaille dessus » - Suppression automatique des messages système de commande slash après TTL
- Directive
[[as_document]]— les compétences peuvent forcer le gateway à délivrer la sortie sous forme de document sur les plateformes qui le supportent
6. Les Providers Deviennent une Surface Pluggable
Les providers d’inférence ne sont plus codés en dur dans le cœur. Une nouvelle classe abstraite ProviderProfile et un répertoire plugins/model-providers/ en font une surface de plugin de premier ordre :
# plugins/model-providers/my_provider.py
from hermes.abc import ProviderProfile
class MyProvider(ProviderProfile):
name = "my-custom-provider"
display_name = "My Custom Provider"
def list_models(self) -> list[ModelInfo]:
...
def chat_completion(self, request: ChatRequest) -> ChatResponse:
...
Déposez les plugins de provider dans le répertoire, et ils apparaissent dans le sélecteur de modèles aux côtés d’OpenAI, Anthropic et de l’ensemble intégré. Aucune modification du code cœur nécessaire.
Nouveaux modèles ajoutés dans cette release :
| Modèle | Provider | Notes |
|---|---|---|
deepseek/deepseek-v4-pro |
OpenRouter + Nous Portal | Dernier flagship DeepSeek |
x-ai/grok-4.3 |
OpenRouter + Nous Portal | Le plus récent de xAI |
openrouter/owl-alpha |
OpenRouter | Niveau gratuit |
tencent/hy3-preview |
OpenRouter | Route payante |
| Arcee Trinity Large Thinking | OpenRouter | Surcharges de température et de compression |
La mise en cache des réponses OpenRouter est désormais supportée pour les modèles qui l’exposent — réduisez les coûts sur les contextes répétés.
L’OAuth Nous persiste désormais entre les profils via un stockage de jetons partagé : connectez-vous une fois, chaque profil hérite de la session. Plus besoin de se ré-authentifier pour chaque profil.
7. Internationalisation — 7 Locales
Hermes parle désormais chinois, japonais, allemand, espagnol, français, ukrainien et turc — en plus de l’anglais. Les messages statiques du gateway (texte d’aide du CLI, statut de l’agent, messages d’erreur) sont entièrement traduits. Le site de documentation gagne une locale chinoise (zh-Hans).
# hermes.config.yaml
display:
language: fr # ou zh, ja, de, es, uk, tr
8. Vidéo et Voix — Voir et Parler
video_analyze donne à Hermes une compréhension vidéo native sur Gemini et les modèles multimodaux compatibles :
# Analyser une vidéo depuis un fichier
hermes run "Regarde meeting-recording.mp4 et résume les décisions prises"
# Depuis une URL
hermes run "Analyse https://example.com/demo.mp4 — quel est le workflow présenté ?"
xAI Custom Voices débarque en tant que provider TTS avec le support du clonage vocal. Enregistrez un échantillon vocal et Hermes répondra avec votre voix — ou toute voix que vous fournissez.
9. Delta Linting — L’Agent Vérifie Ses Propres Écritures
Après chaque opération write_file ou patch, Hermes exécute désormais des linters intégrés pour Python, JSON, YAML et TOML. Les erreurs de syntaxe remontent immédiatement au lieu d’être propagées en aval :
WRITE src/auth.py
✓ Syntaxe OK (Python 3.12)
✓ Vérification d'import réussie
WRITE config.json
✗ Erreur de syntaxe : Jeton inattendu à la ligne 14, colonne 3
Fini la découverte d’une syntaxe cassée dix tours plus tard quand vous essayez d’exécuter le code.
Nouveaux Outils et Commandes Intégrés
| Outil / Commande | Description | Utilisation |
|---|---|---|
/goal |
Suivi d’objectif persistant entre les tours (boucle Ralph) | /goal "Rechercher X et résumer" |
/goal status |
Vérifier la progression de l’objectif actuel | /goal status |
/goal pause / /goal resume |
Mettre en pause ou reprendre la poursuite de l’objectif | /goal pause |
/goal clear |
Effacer l’objectif actuel | /goal clear |
video_analyze |
Compréhension vidéo native sur modèles multimodaux | video_analyze chemin/vers/video.mp4 |
hermes curator archive |
Archiver les compétences curator | hermes curator archive |
hermes curator prune |
Élaguer les entrées curator anciennes/consolidées | hermes curator prune |
hermes curator list-archived |
Lister toutes les entrées archivées | hermes curator list-archived |
[[as_document]] |
Directive de compétence — délivrer la sortie sous forme de document | Ajouter [[as_document]] dans le frontmatter de la compétence |
transform_llm_output |
Hook de plugin — remodeler/filtrer la sortie LLM | Implémenter dans le plugin |
X-Hermes-Session-Key |
En-tête API pour un périmètre de mémoire de session stable | Passer via l’en-tête HTTP |
no_agent mode cron |
Chien de garde script-only — exécuter des scripts sans agent | Définir no_agent: true dans la config de la tâche cron |
| Cache control OpenRouter | Mise en cache explicite pour les modèles compatibles | Via cache: true dans la config du provider |
Améliorations
Agent Principal et Conversation
- Directive de compétence
[[as_document]]— les compétences peuvent forcer le gateway à délivrer la sortie sous forme de document téléchargeable au lieu de texte inline - Hook de plugin
transform_llm_output— nouveau hook de cycle de vie qui permet aux plugins de remodeler ou filtrer la sortie LLM avant qu’elle n’atteigne la conversation ; utile pour les réducteurs de fenêtre de contexte et les filtres de contenu - Nombre de compressions de contexte affiché dans la barre de statut (CLI + TUI) — voyez combien de fois le contexte a été compressé
- Cache
get_tool_definitionsisolé — déduplique l’injection LCM et évite les requêtes redondantes de schémas d’outils - Garde-fous de boucle d’appel d’outils avec avertissement préalable — l’agent avertit avant d’entrer dans des boucles infinies d’outils au lieu de tourner silencieusement
- Rupture des boucles permanentes de réponse vide — les queues d’outils orphelines ne causent plus de cycles infinis de réponse vide
- ContextVars propagées aux threads workers concurrents des outils
- Affichage des résumés de révision d’auto-amélioration dans le CLI, le TUI et le gateway
- Les estimations de jetons incluent désormais le prompt système + les schémas d’outils pour des déclencheurs de compression précis
Listes d’Autorisation par Plateforme
allowed_channels(Slack),allowed_chats(Telegram),allowed_rooms(Mattermost, Matrix), etallowed_robots(DingTalk) — restreignez l’interaction de l’agent à des canaux spécifiquesgateway_restart_notificationpar plateforme — contrôle granulaire des messages post-redémarragebusy_ack_enabled— supprimez les messages d’accusé « Je travaille dessus »- Nettoyage automatique des bulles de progression temporaires
Durabilité des Sessions
- Le gateway reprend automatiquement les sessions interrompues après redémarrage — aucune conversation perdue
- Les invites de mise à jour en attente préservées entre les redémarrages
- Les cibles de fil de discussion du canal d’accueil préservées entre les notifications de redémarrage
- Routage des fils de discussion préservé depuis les sources de session actives en cache
- Métadonnées de l’assistant préservées lors du branchement des sessions
- Type de document préservé lors de la fusion des événements en file d’attente
Curator (de la v0.12, mûri dans la v0.13)
hermes curator archive— archiver les entrées curator pour le stockage à long termehermes curator prune— nettoyer les entrées anciennes, consolidées ou orphelineshermes curator list-archived— voir les entrées archivéeshermes curator runmanuel synchrone — voir les résultats immédiatement sans scrutation- Protégé contre l’écrasement des compétences groupées et du hub
MCP (Model Context Protocol)
- Transport SSE avec transfert OAuth et
sse_read_timeoutaugmenté - Tentatives de transport sur tuyau obsolète traitées comme session expirée (reconnexion automatique)
- Les résultats d’outils image apparaissent comme balises MEDIA au lieu d’être silencieusement ignorés
- Keepalive périodique sur les attentes de cycle de vie de longue durée
- Reconnexion automatique sur les sessions terminées
- Coercition numérique défensive des arguments d’outils dans
mcp_serve - Stubs d’utilitaires conditionnés aux capacités annoncées par le serveur
Tableau de Bord Kanban
- Saisie du type de workspace et du chemin dans la création de tâche inline
- Bascule de notification par plateforme pour les alertes du canal d’accueil
- Zone de texte multiligne pour les titres de tâches
- Les tableaux filtrent par tenant sélectionné
- L’épinglage du tableau dans le tableau de bord prévaut sur le fichier courant du serveur
QQBot
- Claviers d’approbation natifs — boutons inline Approuver/Refuser pour l’autorisation des outils
- Téléversement fragmenté pour les fichiers volumineux
- Support des pièces jointes citées
TUI et CLI
- 100 nouveaux conseils de démarrage CLI couvrant cron, kanban, curator, plugins et flags moins connus
- Le sélecteur
/modelcorrespond àhermes modelavec authentification inline pour tous les providers - Sections repliables dans la bannière de démarrage (compétences, prompt système, MCP)
/newaccepte un nom de session optionnel :/new ma-session-refactohermes update --yes/-ypour ignorer les invites interactives
Tableau de Bord
- Page Plugins — gérez, activez/désactivez et vérifiez le statut d’authentification de tous les plugins
- Page de gestion des profils — créez, modifiez et supprimez des profils depuis l’interface web
- Tri interactif des colonnes dans les tableaux d’analyse
- Thème
default-largeavec une taille de police de base de 18px - Support reverse-proxy via l’en-tête
X-Forwarded-Prefix - Lancement en tant que processus secondaire via
HERMES_DASHBOARD=1dans Docker
Outils Web
- SearXNG livré comme backend de recherche natif
- Sélection de backend par capacité — choisissez différents backends pour la recherche, l’extraction et la navigation
ACP (VS Code / Zed / JetBrains)
/steercommande slash — dirigez l’agent en vol/queuecommande slash — mettez en file d’attente des tâches de suivi- Persistance atomique des sessions via
replace_messages - Métadonnées de raisonnement de l’assistant préservées lors de la persistance des sessions
- Traduction Windows cwd pour les sessions WSL
Sécurité et Fiabilité
Corrections de Bugs Critiques
- Crash du CLI au démarrage —
Invalid key 'c-S-c'(P0) : prompt_toolkit ne supporte pas le modificateur Shift ; le raccourci a été supprimé - Audit de fuite de fd CLOSE_WAIT : keepalive httpx + fuite WhatsApp aiohttp + hygiène Feishu — tous corrigés
- Le gateway crée AIAgent avec une clé API OpenRouter vide lorsque
OPENROUTER_API_KEYest absente — les providers de secours sont désormais correctement honorés - Révision en arrière-plan + curator protégés contre l’écrasement des compétences groupées/du hub
- Sessions fantômes de continuation de compression TUI avec métadonnées incomplètes — corrigé
hermes mcp addlance silencieusement le chat au lieu d’enregistrer le serveur MCP — corrigé- Propagation de l’exécution de l’agent de révision en arrière-plan — le provider/modèle/identifiants héritent désormais réellement du parent
- Chemins d’hôte des documents entrants traduits en chemins de conteneur pour le backend Docker
- Condition de concurrence du gateway Matrix entre l’auto-rédaction et la livraison de messages avec les modèles à haute vitesse — corrigé
/newpendant une session d’agent active n’envoie jamais de réponse sur Telegram — corrigé- Config.yaml l’emporte sur
.envpour les paramètres agent/affichage/fuseau horaire - Le SHA HEAD de Git utilisé pour la vérification de code obsolète, pas les mtimes des fichiers
- Les arrêts du service Plan gérés sans fausses erreurs fatales
- Redémarrage automatique des fichiers source quand les fichiers changent sous le gateway
Renforcement de WhatsApp
En plus du correctif P0 de rejet des inconnus :
- Chargement du canal d’accueil depuis les variables d’environnement
- Ne jamais répondre en auto-chat (empêche l’amplification en boucle)
Fiabilité des Plateformes
- Le gateway réinitialisé en cas d’échec avant chaque redémarrage de secours — empêche les états de gateway bloqués
- Marqueurs de redémarrage atomiques + décalage de verrouillage d’exécution Windows
- Hygiène d’arrêt et de redémarrage — délai de vidange, fausses erreurs fatales, log de succès
- PIDs ancêtres exclus de l’analyse des processus du gateway
- Distribution des alias de commandes rapides déplacée avant les built-ins (empêche les écrasements accidentels)
- Autres profils affichés dans
gateway statuspour éviter la confusion
Sécurité des Fichiers
- Restaurer
.env/auth.json/state.dbavec les permissions 0600 - Serveur de nœud Meet lié à localhost uniquement
- Fichier de jeton restreint à la lecture du propriétaire
- Cible d’écriture sensible étendue aux fichiers RC du shell et fichiers d’identifiants
Mise à Niveau
hermes update
Pour les nouvelles installations, consultez le guide d’installation.
← Hermes Agent Changelog