Confidentialité et sécurité
Brimline touche à des connexions : il est donc conçu pour en faire le moins possible.
Lecture seule
Pour chaque compte Claude, Brimline lit un élément du Trousseau de macOS : celui que Claude Code garde pour ce dossier. Il demande cet élément précis, par son nom, à l'outil security de macOS, et ne liste jamais le Trousseau. De ce qu'il lit, il n'utilise que le jeton d'accès. Pour ChatGPT, Grok et Cursor, il lit le seul fichier que garde leur outil (~/.codex/auth.json, ~/.grok/auth.json, la base d'état de Cursor), n'en décode que les quelques champs dont il a besoin, et ne lit jamais un élément du Trousseau de ces outils.
Coupé tant que vous ne l'activez pas
Claude est activé. ChatGPT, Gemini, Grok et Cursor sont coupés tant que vous n'activez pas chacun dans les Réglages (ou avec brimline providers enable <nom>), et un fournisseur coupé n'est pas touché du tout : aucun fichier ouvert, aucune requête envoyée, aucun programme lancé. Un compte marqué Ne pas lire ce compte n'est jamais lu non plus. Un agent ne peut pas activer un fournisseur à votre place.
Le seul programme que Brimline lance
Pour lire Gemini, Brimline lance la commande de Google agy --print /usage (Antigravity CLI), et rien d'autre. Le programme de Google peut alors renouveler sa propre connexion ; Brimline ne lit ni n'écrit cette connexion. Le lancement est encadré : seulement le chemin exact ~/.local/bin/agy (le PATH n'est jamais parcouru), seulement une version que Brimline a vérifiée (son empreinte et sa version doivent figurer sur la liste), des arguments fixes avec --sandbox, un dossier de travail vide, un environnement réduit, 20 secondes au plus, et un lancement toutes les 15 minutes au plus.
Cursor. Sa requête porte le cookie de la session web de Cursor, qui vaut une session complète de cursor.com : Brimline l'envoie à cette seule adresse, en HTTPS, et nulle part ailleurs.
Relevés Claude Code et icônes cachées
brimline report claude lit ce que Claude Code affiche de ses propres limites sur son entrée standard et ne garde que la part utilisée et l'heure de remise à zéro de la session de 5 h et de la semaine, dans un fichier du dossier de Brimline. Elle ne lit aucun jeton et n'envoie aucune requête. Cacher les icônes des autres apps (coupé par défaut) n'écrit aucun fichier de macOS ou d'une autre app. Sous macOS 27 et après, cela passe par un cadre privé de macOS (sa liste d'autorisation de la barre des menus) et par l'autorisation Accessibilité, avec laquelle Brimline lit seulement où sont les icônes des autres apps dans la barre des menus ; il garde les apps trouvées à droite de son trait dans son propre settings.json. L'autorisation couvre un build de Brimline (une signature ad hoc), si bien qu'il peut falloir la redonner après une mise à jour. Sous macOS 26 et avant, cela ne demande aucune autorisation et n'utilise aucune API privée.
Aucun renouvellement de jeton
Brimline ne se sert jamais du jeton de renouvellement et ne renouvelle jamais rien. Renouveler un jeton peut le remplacer, ce qui pourrait déconnecter Claude Code. Quand le jeton d'accès a expiré, Brimline n'appelle pas du tout le fournisseur : il montre les derniers chiffres connus et vous invite à ouvrir l'outil avec ce compte (Claude Code, Codex, le CLI Grok ou Cursor). La seule exception est le programme de Google pour Gemini, plus haut.
Le jeton reste en mémoire
Le jeton d'accès vit en mémoire le temps d'une requête. Il n'est jamais écrit : ni dans le cache, ni dans un journal, ni dans la sortie de la commande, ni dans les réponses du serveur MCP.
Un cache sans secret
~/Library/Application Support/Brimline/usage.json ne contient que les chiffres : adresses, pourcentages, heures de remise à zéro, heure de la lecture. Son format est versionné. Le supprimer ne fait rien perdre que la lecture suivante ne ramène.
Ce qui passe sur le réseau
Une requête HTTPS par compte à chaque lecture (toutes les 5 minutes par défaut), vers le fournisseur qui a émis la connexion (api.anthropic.com pour Claude, chatgpt.com, cli-chat-proxy.grok.com et cursor.com pour les autres), avec le jeton de ce compte, et en s'annonçant User-Agent: Brimline/<version> (jamais comme l'outil officiel). Pour Gemini, Brimline n'envoie rien lui-même : le programme de Google fait ce qu'il fait avec Google. Rien d'autre : aucun serveur Brimline, aucune télémétrie, aucune mesure d'audience dans l'app.
Un point d'accès non documenté
À notre connaissance, aucun fournisseur ne documente de point d'accès pour les limites d'abonnement (Google documente la commande /usage d'Antigravity, pas le format de son texte). Pour Claude, Brimline lit https://api.anthropic.com/api/oauth/usage ; pour les autres, l'adresse que leur propre outil ou tableau de bord utilise. Ce sont des points d'accès internes qui peuvent changer ou disparaître sans prévenir. Quand une réponse ne ressemble plus à ce qui est attendu, Brimline marque le compte « format modifié » ou indisponible plutôt que de deviner un chiffre.
Les conditions d'Anthropic
La documentation d'Anthropic (Legal and compliance, Authentication and credential use, en anglais) dit que les connexions OAuth sont prévues pour Claude Code et les applications d'Anthropic, et que les développeurs tiers ne peuvent pas collecter, stocker ni relayer des identifiants ou jetons de session Claude.ai. Brimline lit votre propre jeton sur votre propre Mac, en lecture seule, ne l'écrit, ne le renouvelle ni ne le copie jamais, ne l'envoie qu'à Anthropic pour demander votre propre usage, et s'annonce sous son propre nom. Ce n'est pas un produit officiel ni approuvé, et nous ne prétendons pas que cet usage est autorisé. La même page dit qu'Anthropic peut faire respecter ces restrictions sans préavis : le risque éventuel porte sur le compte que Brimline lit. Lisez les conditions de votre abonnement et jugez par vous-même. Chacun des autres fournisseurs a ses propres conditions, que nous n'avons pas établies non plus : la page d'OpenAI sur Codex, par exemple, n'autorise pas codex app-server pour un service commercial, et comme il renouvelle et réécrit la connexion de Codex, Brimline ne l'utilise pas.
Signaler un problème de sécurité
Voir la politique de sécurité du dépôt. Merci de ne pas ouvrir de ticket public pour une vulnérabilité.