Pourquoi Hermes annonçait que votre run avait coûté 0,00 $


Vous terminez un long run d’agent, vous jetez un œil à la barre de statut et vous lisez la ligne Cost : $0.00. Ou n/a. Vous étiez sur votre propre clé OpenAI du début à la fin, le run a de toute évidence déplacé des dizaines de milliers de tokens, et le chiffre devant vous affirme que la session était gratuite. Soit elle l’était vraiment, soit Hermes n’avait aucune idée de ce qu’elle avait coûté — et jusqu’à cette semaine, aucun moyen de distinguer les deux cas. Cette ambiguïté a disparu pour la configuration la plus courante. Un run qui parle directement à une API first-party — OpenAI, xAI, Anthropic, Google, DeepSeek — est désormais tarifé même quand le modèle est absent de la table embarquée dans Hermes, et la ligne cesse de faire croire qu’une dépense réelle valait zéro (#120441, qui sauve #56625 ; plus #120517 pour Anthropic).

Trois endroits d’où peut venir un prix

Chaque chiffre de coût imprimé par Hermes passe par une seule fonction de résolution, get_pricing_entry. Elle gravit une courte échelle et retient le premier barreau qui répond :

  1. Une route par abonnement n’est pas tarifée du tout. Si la route de facturation indique que le modèle est inclus dans un forfait (openai-codex, xai-oauth), l’entrée est un marqueur « inclus » figé. Rien n’est facturé au token, donc rien n’est estimé.
  2. OpenRouter garde son propre chemin, parce que le routeur publie des prix live par modèle avec le catalogue qu’il sert.
  3. La table de prix embarquée — un instantané livré avec Hermes — répond pour les modèles grand public.
  4. L’endpoint /models du provider lui-même est interrogé ensuite, quand vous avez configuré une base URL qui expose des métadonnées de tarification.
  5. Nouveau : le tarif catalogue du fournisseur via models.dev, quand les quatre premiers barreaux restent muets.

Le cinquième barreau est le plus intéressant, et il est délibérément étroit. Il ne s’active que lorsque votre route de facturation pointe vers le fournisseur lui-même :

Route de facturation Hôte de confiance
openai openai.com
xai x.ai
anthropic anthropic.com
google googleapis.com
deepseek deepseek.com
xiaomi xiaomimimo.com

L’absence totale de base URL compte elle aussi comme de confiance, puisque cela désigne l’endpoint par défaut du provider.

Pourquoi un relais ou un proxy reste non tarifé

Voici la partie qu’il vaut la peine d’intégrer avant de faire confiance à un chiffre de coût : un même identifiant de modèle peut être facturé à un tarif différent selon qui le sert.

Un proxy, un relais ou un endpoint personnalisé peut servir gpt-5-nano avec une marge, une remise, ou un forfait à prix fixe. Le tarif catalogue du fournisseur serait alors un mensonge parfaitement assuré. Le fallback vérifie donc l’origine qu’il s’apprête à tarifer : elle doit être en https sur le port 443, et l’hôte doit être le domaine de ce fournisseur ou l’un de ses sous-domaines. Tout le reste ne renvoie rien et la session conserve son honnête unknown.

Ce qui s’affiche alors comme n/a dans la barre de statut, plutôt qu’un montant inventé, et la documentation de la CLI précise désormais exactement quelles sources alimentent cette ligne : d’abord la table de prix officielle embarquée, puis la liste /models du provider, models.dev ne comblant le vide que pour une API first-party directe.

Lire ce que vous avez réellement dépensé

  • La ligne Cost de la barre de statut est l’estimation d’un coup d’œil (n/a quand c’est inconnu ou réellement à prix nul).
  • /usage ouvre la ventilation détaillée, y compris les tokens d’entrée et de sortie et les catégories de lecture et d’écriture du cache.
  • hermes insights agrège les analytics de tokens et de coûts à travers les sessions, ce que vous voulez quand vous décidez si un modèle mérite d’être gardé pour un travail donné.

Deux mots de statut portent un vrai sens, il vaut donc la peine de savoir lequel vous regardez. Un coût estimated signifie que Hermes a trouvé une grille tarifaire et l’a multipliée par les tokens qu’il a comptés. unknown signifie qu’il n’existait aucune grille tarifaire qu’il était prêt à appliquer — pas que le run était gratuit.

L’estimation elle-même est de l’arithmétique sur des nombres que Hermes possède déjà. Le fallback lit les métadonnées du modèle depuis le cache en processus ou sur disque plutôt que d’appeler l’extérieur en plein tour, donc une session en API directe ne paie pas un aller-retour réseau pour apprendre son propre prix.

Les petits runs ne s’arrondissent plus à $0.00

Il y a un second piège, plus ancien, dans le même affichage : les modèles bon marché. Un run court sur un petit modèle peut légitimement coûter une fraction de centime, et un format à deux décimales l’affiche comme $0.00 — impossible à distinguer de « non tarifé ». Les coûts inférieurs à un centime sont désormais rendus avec quatre décimales, vous lisez donc $0.0046 au lieu d’un zéro tout plat.

Ce qui reste une estimation

Soyez clair sur ce que vous regardez : ce sont des tarifs catalogue multipliés par des tokens comptés, pas votre facture. Si votre compte bénéficie de tarifs négociés, de remises sur engagement ou d’une politique de cache différente, la facture du fournisseur différera. Ces estimations sont là pour répondre à « ce modèle est-il dix fois plus cher que cet autre ? » — une question à laquelle elles répondent bien — pas pour prédire votre relevé mensuel au centime près.

Pour les chiffres du correctif d’origine : un run openai-api direct sur gpt-5-nano (19 750 tokens d’entrée / 109 de sortie) enregistrait cost_status=unknown, estimated_cost_usd=0.0 et enregistre désormais $0.0010266 ; un run xai direct sur grok-4.3 (21 157 en entrée / 156 en sortie) est passé de unknown, 0.0 à $0.02637205. Les deux se réconcilient à la main avec les tarifs publiés du fournisseur.

La passe de suivi a également aligné le fast mode d’Anthropic sur la documentation Claude actuelle, pour que le mode que vous sélectionnez soit celui qui est rapporté.

Où cela arrive

Les deux changements ont atterri sur main après le tag v0.21.4, ils ne sont donc pas encore dans une release — un hermes update qui tire main, ou la prochaine release taguée, sera le moment où ils arrivent. Il n’y a rien à configurer : si vous routez vers une API first-party, le fallback s’applique de lui-même, et la ligne Cost de la référence CLI nomme désormais ses trois sources pour que vous puissiez vérifier le comportement par vous-même.

Si vous passez effectivement par un relais pour des raisons de coût, gardez un œil là-dessus : n/a sur un relais est délibéré, et c’est le seul cas où Hermes préfère ne rien dire plutôt que deviner. Pour une vue plus large de ce que suit la barre de statut, notre guide des métriques de la barre de statut détaille chaque ligne, et le guide des hooks de plugin provider couvre les données de capacité par modèle que le même cache de métadonnées expose aux plugins. Les utilisateurs d’abonnement devraient d’abord lire le guide du provider d’abonnement Claude — ces routes sont volontairement non tarifées.