Audit d'utilisation Claude
Quatre scripts locaux sur ~/.claude/projects/**/*.jsonl (sessions principales et subagents/). Chaque appel API est dédupliqué sur (message.id, requestId) ; le coût est le prix public de l'API par modèle, donc sur un abonnement il est lu comme un « équivalent API », un proxy pour le quota du forfait.
Exécution
SKILL_DIR="${CLAUDE_SKILL_DIR}/scripts"
OUT=$(mktemp -d) # ou le bloc-notes de session
python3 -I "$SKILL_DIR/usage.py" "$OUT/usage.json" # totaux, quotidien, modèles, projets, sessions, reconstructions de cache, outils, compétences, agents
python3 -I "$SKILL_DIR/context_sources.py" "$OUT/usage2.json" # familles de commandes Bash par taille de sortie, Read complète vs partielle, points d'entrée SDK, écarts d'inactivité
python3 -I "$SKILL_DIR/cost_split.py" # coût par type de token, taxe de lecture du cache au-dessus de 200k / 300k de contexte
python3 -I "$SKILL_DIR/history.py" "$OUT/hist.json" # prompts hebdomadaires, coût par prompt, commandes slash, sessions, heure x jour de la semaine (90 jours par défaut)
Fenêtre : AUDIT_DAYS=90 dans l'environnement (30 par défaut, 90 pour history.py). Les transcriptions ne remontent que jusqu'à cleanupPeriodDays (réglé à 120 dans les paramètres ; Claude Code par défaut à 30), tandis que ~/.claude/history.jsonl conserve chaque prompt : au-delà de la durée de conservation, seules les métriques au niveau du prompt sont réelles. Marquer les semaines dont les transcriptions ont été partiellement supprimées comme partielles, jamais comme à faible coût.
Avant de citer des dollars
Les prix se trouvent dans trois tables : PRICES dans usage.py et history.py, P dans cost_split.py. Vérifiez-les d'abord par rapport à la compétence claude-api et corrigez la table lorsqu'un modèle est manquant (un modèle inconnu compte pour 0 $).
Quoi regarder, dans l'ordre
| Signal | Champ | Levier |
|---|---|---|
| Appels au-dessus de 200k de contexte | ctx_cost, taxe de cost_split.py | autoCompactWindow dans les paramètres, /clear par sujet |
| Reprises à froid (cache reconstruit après >1h d'inactivité) | cache_miss | hook cold-resume-guard.sh |
Points d'entrée non CLI (sdk-py, sdk-cli) | entry, sdk dans usage2 | un plugin ou hook lançant Claude : épingler son modèle (SG_AGENTIC_MODEL pour security-guidance) |
| Plus grandes sorties d'outils | tool_result_kchars, bash_fam, read | Read ciblé, sortie de commande plafonnée |
| TTL du cache 1h vs 5m | w1h vs le nombre d'écarts de 5 à 60 min dans gaps | conserver 1h tant que les écarts de 5 à 60 min x contexte x 1,25 dépassent la prime 0,75x sur les écritures 1h |
| Part et modèle des sous-agents | main_sub, agents | Sonnet pour le travail de modèle |
Les prompts de session dans top_sessions sont le texte propre de l'utilisateur : gardez-les en dehors de tout ce qui est partagé.