À propos du projet

cctrace est un proxy d'interception TLS local, sans configuration, qui se place entre les agents de codage (Claude Code, OpenAI Codex CLI, Grok CLI, Kimi Code CLI et opencode) et leurs API respectives, capturant chaque appel HTTP en temps réel. Contrairement aux proxys basés sur l'URL de base qui ne voient que le point de terminaison de chat, cctrace intercepte au niveau de la couche transport, atteignant les flux OAuth, les points de terminaison d'utilisation/crédit, les appels de registre MCP, les requêtes d'amorçage et la télémétrie qu'une simple réécriture d'URL ne peut pas observer. L'outil génère automatiquement un certificat CA et configure l'agent pour router via HTTPS_PROXY, sans configuration manuelle. Les hôtes de première partie sont déchiffrés et entièrement capturés ; les hôtes externes (npm, GitHub, apt) passent comme des tunnels opaques comptés en octets, gardant les traces légères. L'interface web en direct fournit des vues de requêtes catégorisées avec des filtres, des flux SSE décodés, des verdicts sur l'effort de raisonnement et le cache de prompt, la latence du premier jeton et un coût estimé par requête. Les sessions sont reconstruites comme un humain les compterait, avec une barre de trajectoire montrant les voies dans le temps, des lignes d'outils nommant les fichiers touchés, des branches de sous-agents, des époques de modèle et des limites de compaction. La relecture de session permet de parcourir ou de jouer toute session capturée, avec un suivi en direct pendant les exécutions actives. Une vue Contexte montre la fenêtre de l'agent dans le temps avec un aperçu interactif : des colonnes empilées par requête filaire colorées par six catégories de contexte, des marqueurs de compaction et des répartitions en temps réel. La sélection peut être lue de trois manières : comme un graphe de contexte (décomposition en icicle), comme un flux linéaire d'enregistrements, ou comme une chronologie d'événements d'injections et de compactions. Le suivi des coûts montre où va le quota avec des répartitions de lecture/écriture/entrée/sortie du cache, identifie les échecs de cache avec leurs causes (TTL expiré, changements de préfixe, nouvelles tentatives 529) et affiche le quota du compte tel qu'interrogé par le client. La commande insights agrège les exécutions par jour, projet et client, avec une analyse approfondie optionnelle pour les divisions de cache et les pourcentages de quota. La commande doctor diagnostique la fenêtre de requêtes la plus récente d'une session, identifiant les schémas d'outils inutilisés, les injections récurrentes du harnais, le contenu dupliqué et les inefficacités de cache avec des leviers actionnables. Les traces sont enregistrées en fichiers .jsonl (archivés en .jsonl.zst), réouvrables à tout moment avec cctrace view, et exportables en transcriptions markdown ou en instantanés HTML hors ligne. Un tableau de bord multi-projets montre toutes les exécutions en direct et terminées avec des vues de session en un clic, des contrôles d'arrêt et une gestion du stockage. Les identifiants sont masqués des en-têtes, corps et URL avant tout écriture sur disque. Les traces vivent hors de l'arborescence du projet dans ~/.local/share/cctrace/. L'outil nécessite Bun, openssl et le CLI cible, et est disponible via npm ou en binaire compilé autonome.