Les journaux de jetons de Claude Code surcomptent l'usage de 2,5x. Voici comment les compter correctement
Mis à jour November 3, 2026 · première publication November 3, 2026
Claude Code écrit le même message de l'assistant plusieurs fois dans son journal pendant que la réponse est diffusée en flux. En additionnant chaque ligne d'usage d'octobre, nous avons obtenu 21,3 milliards de jetons et 12 438 $ de valeur au prix public. En comptant chaque message une seule fois, nous obtenons 8,4 milliards de jetons et 4 323 $. La somme brute surcompte d'environ 2,5x en jetons et 2,9x en dollars.
Publié le 3 novembre 2026 · transcriptions de Claude Code, du 1er octobre au 3 novembre 2026 (UTC ; 1er au 3 novembre partiels)
Pourquoi un même message apparaît-il plusieurs fois ?
Chaque entrée de l'assistant dans une transcription de Claude Code (~/.claude/projects/.../*.jsonl) porte un objet usage avec les nombres de jetons d'entrée, de sortie, d'écriture dans le cache et de lecture du cache. Dans nos journaux, la même paire message.id et requestId apparaît sur plusieurs lignes, et les lignes suivantes portent des compteurs de sortie plus élevés que les premières. Nous n'avons pas retracé toutes les causes ; le schéma est cohérent avec une réponse écrite au fur et à mesure de sa diffusion. Quelle qu'en soit la cause, additionner toutes les lignes compte plusieurs fois la même requête. Sur 175 884 lignes d'usage de la période, seules 70 592 étaient des messages distincts.
De combien la somme brute se trompe-t-elle ?
La somme brute est 2,5x trop élevée en jetons et 2,9x trop élevée en dollars. Les dollars gonflent plus que les jetons, ce qui signifie que les lignes répétées étaient pondérées vers les types de jetons les plus chers ; nous n'avons pas détaillé davantage.
Pourquoi garder la première ligne est aussi une erreur
La solution évidente consiste à conserver la première ligne de chaque message. Cela sous-compte la sortie, car la première ligne est un instantané partiel. Nous gardons la plus grande valeur de chaque champ parmi toutes les lignes qui partagent le même identifiant de message et le même identifiant de requête.
L'écart varie selon le modèle : Claude Haiku 4.5 a perdu 100 % de ses jetons de sortie, tandis que Claude Fable 5.1 en a perdu 0,0 %. En dollars, l'effet était ici faible (4 297 $ contre 4 323 $, soit environ 0,6 %) car la sortie représentait une petite part de notre volume de jetons. Une charge de travail qui écrit davantage et lit moins le ressentirait plus.
Trois autres façons dont les journaux d'agents induisent en erreur
- Une colonne de coût à zéro. OpenCode a enregistré 4 938 messages d'assistant sur la même période, 82,4 millions de jetons d'entrée et 279,7 millions de jetons de lecture du cache, et chaque message affiche un coût de 0 car il a tourné sur des routes de modèles gratuites. Un coût enregistré nul ne signifie pas un usage nul : les jetons et le quota gratuit qui les couvre sont bien réels.
- Des compteurs qui ne correspondent pas à votre fenêtre. Les fichiers de conversation d'Antigravity contiennent des nombres d'appels de modèle sur toute la vie de chaque conversation, pas seulement octobre. Une conversation que vous avez touchée le 30 octobre apporte aussi son historique de septembre.
- Des journaux qui continuent de bouger. Notre propre session écrivait dans les journaux pendant que nous mesurions. Deux exécutions à quelques minutes d'intervalle différaient d'environ 0,1 % sur le nombre de messages. Fixez la fenêtre et indiquez quand vous avez pris l'instantané.
Comment nous avons compté
- Lire les entrées de l'assistant qui ont un objet
usage, entre le 1er octobre et le 3 novembre 2026 (UTC). Ignorer les messages de substitution synthétiques. - Identifier chaque entrée par
message.idplusrequestId. Si aucun des deux n'existe, utiliser le fichier et l'identifiant de l'entrée. - Pour chaque clé, garder le maximum de chaque champ d'usage parmi ses lignes. Inclure les messages des sous-agents (sidechain), qui sont journalisés dans les mêmes fichiers.
- Valoriser les jetons aux prix publics d'Anthropic (vérifiés le 3 novembre 2026) : par exemple Opus 5.5 à 4 $ en entrée, 0,20 $ en lecture du cache et 20 $ en sortie par million de jetons, et Sonnet 5.5 à 2 $, 0,10 $ et 10 $. Les écritures dans le cache utilisent la répartition 5 minutes / 1 heure enregistrée. Haiku 5.5 applique son tarif plus élevé pour les prompts de plus de 100 000 jetons, que nous estimons message par message à partir de ses jetons côté entrée.
Ce que cela ne dit pas
- Ce n'est pas votre facture. Avec un abonnement forfaitaire, le chiffre est une valeur équivalente API, et les journaux ne contiennent aucun montant en dollars.
- Nous n'avons pas comparé avec la facturation du fournisseur. Faites-le avant de vous fier à un total issu des journaux.
- Le mécanisme des répétitions est notre lecture du schéma, pas une déclaration d'Anthropic.
Que faire de tout cela
- Dédoublonnez avant d'additionner. Tout tableau de bord qui additionne des lignes de journal surcompte probablement. Demandez quelle est sa clé.
- Utilisez le maximum, pas la première ligne, par message.
- Rapprochez d'une facture du fournisseur ou de la passerelle une fois par mois. Voir le suivi des jetons LLM et l'observabilité de l'IA pour ce qu'un registre doit contenir.
- Ne vous fiez pas à un zéro. Suivez les jetons même là où le prix est gratuit.
Pour la vue d'usage que cela alimente, voir Claude Code en octobre : jetons, cache et valeur au prix public et comment vérifier et réduire la consommation de jetons de Claude Code.
Questions fréquentes
Comment compter correctement les jetons de Claude Code ?
Lisez les entrées de l'assistant dans les fichiers de transcription, identifiez chacune par son identifiant de message plus son identifiant de requête, et gardez le maximum de chaque champ d'usage parmi les lignes qui partagent la clé. Additionner chaque ligne a compté notre usage d'octobre 2,5 fois trop haut.
Pourquoi les journaux de Claude Code montrent-ils plusieurs fois le même message ?
Dans nos transcriptions, le même identifiant de message et le même identifiant de requête apparaissaient sur plusieurs lignes (175 884 lignes pour 70 592 messages uniques), les lignes suivantes portant des compteurs de sortie plus élevés. Ce schéma est cohérent avec une réponse journalisée pendant sa diffusion ; nous n'avons pas confirmé la cause auprès d'Anthropic.
Garder la première ligne de chaque message suffit-il ?
Cela sous-compte les jetons de sortie, car la première ligne est un instantané partiel. Nous avons manqué 14 % des jetons de sortie au total, et jusqu'à 100 % pour un modèle, bien que l'effet en dollars n'ait été que d'environ 0,6 % sur notre mix.
La valeur au prix public est-elle égale à ce que j'ai payé ?
Non. C'est le coût des mêmes jetons aux prix publics de l'API d'Anthropic. Un abonnement ou une remise de passerelle change ce que vous payez réellement, et les journaux ne contiennent aucun montant en dollars.
À lire aussi
- Claude Code en octobre : jetons, cache et valeur au prix public
- Comment vérifier et réduire la consommation de jetons de Claude Code
- Suivi des jetons LLM
- Nous avons utilisé Codex Pro $100 pendant 30 jours : 14 réinitialisations
Vous souhaitez appliquer cela à votre plateforme ? Transmettez vos factures fournisseurs, journaux de passerelle et principaux workflows ; nous cartographierons les coûts et les économies possibles. Demander un audit gratuit →