Aller au contenu

Le dossier technique

Ce que Quotum lit sur ta machine

Une application qui lit ton Trousseau et tes fichiers d'identifiants doit dire lesquels, pour quoi faire, et où part le résultat. Cette page nomme chaque source, chaque adresse et chaque cadence — et donne les commandes qui permettent de la contredire.

Relevé daté du 19 septembre 2026, établi en lisant le code de la version 2026.9.18. Les numéros de ligne cités bougent au premier commit qui ajoute une ligne au-dessus ; le classement, lui, tient. Les commandes de la section 06 sont là pour le vérifier plutôt que pour nous croire.

01 Ce qu'elle affiche, ligne par ligne

Un pourcentage nu est ambigu. Chaque ligne du panneau porte donc trois choses : le niveau en grille de dix cases, l'heure à laquelle la fenêtre se recharge, et l'âge de la mesure — parce qu'un chiffre relevé il y a trois heures ne vaut pas un chiffre relevé à l'instant.

Les quatre formes qu'une ligne peut prendre.
Compte Niveau Ce qui est écrit dessous
Travail · Max20

46 % utilisé · se recharge mer. 23 sept. à 20:38 · mesuré il y a 2 min

Perso · Max20

Quota épuisé jusqu'au dim. 20 sept. à 20:38

Dix cases vides ne sont pas une valeur inventée : c'est ce que « quota épuisé » veut dire.

Veille · Max20

En attente d'une mesure

Pas de grille du tout. Une grille vide annoncerait un compte à sec, et personne ne l'a constaté.

Secondaire · Premium

Reconnexion nécessaire

Un jeton expiré ne dit rien du quota : le compte peut être plein.

Le panneau de Quotum : les comptes de la machine, leur niveau de quota en grille de dix cases, et l'âge de chaque mesure. Le même panneau de Quotum en apparence sombre.
panneau, 320 × 429 pt, taille réelle

02 Ce qu'elle lit sur le disque et au Trousseau

Quotum ne te demande aucun mot de passe et n'ouvre aucune session. Il relit les identifiants que les outils en ligne de commande ont déjà posés sur la machine, chacun là où son outil le range.

Une source par outil. Aucune n'est écrite : Quotum les ouvre en lecture.
Outil Où l'identifiant est lu
Claude

Trousseau, élément Claude Code-credentials, par /usr/bin/security.

Warp

Trousseau, éléments dev.warp.Warp-Stable et dev.warp.Warp-Stable.tui, par /usr/bin/security.

ChatGPT

~/.codex/auth.json, ou $CODEX_HOME/auth.json.

Windsurf

~/.local/share/devin/credentials.toml, et la base state.vscdb de Windsurf ou de Devin dans ~/Library/Application Support.

Cursor

La base state.vscdb de Cursor dans ~/Library/Application Support, clé cursorAuth/accessToken.

Codebuff

~/.config/manicode/credentials.json.

Augment

~/.augment/session.json.

opencode

~/.local/share/opencode/auth.json, entrée opencode-go.

Grok

~/.grok/auth.json, ou le fichier que désignent $GROK_AUTH_PATH et $GROK_HOME. La variable d'environnement GROK_DEPLOYMENT_KEY, si elle est posée, prime sur le fichier.

Et six sources lues sans que rien soit armé

Celles-ci ne dépendent pas de l'armement d'un fournisseur : Quotum les lit à chaque relevé, fournisseurs armés ou non, y compris sur une installation neuve. Aucune ne sert à interroger un fournisseur.

Le jeton ne fait que transiter. Il est lu, posé dans l'en-tête d'une requête, et rien d'autre : il n'est recopié dans aucun fichier, inscrit dans aucun journal et gardé dans aucun cache. La session réseau est déclarée ephemeral, son cache est mis à nil et sa politique ignore tout cache local — ce qui se vérifie en une commande, section 06.

03 Où elle se connecte — toutes les adresses, énumérées

La commande grep -rn 'https\?://' Sources/ rend chaque ligne du code source où figure une adresse. Elles sont toutes reprises ci-dessous, classées en trois familles. Nous ne donnons pas leur nombre exprès : un décompte figé sur une page repérimerait au premier commit, alors que la liste, elle, se compare ligne à ligne. Une adresse que tu trouverais et qui ne serait dans aucun des trois tableaux serait précisément ce qu'il faut nous signaler.

A · Les lignes où l'application se connecte elle-même

Ligne Adresse Ce qui s'y joue
QuotaAnthropic.swift:63https://api.anthropic.com

Les fenêtres de quota du compte Claude, et le profil qui le nomme.

QuotaCodex.swift:46https://chatgpt.com

La fenêtre de quota du compte ChatGPT.

QuotaWindsurf.swift:59https://server.codeium.com

Le quota Windsurf. L'hôte peut venir du fichier de l'utilisateur ; il n'est alors accepté que sous codeium.com, windsurf.com ou devin.ai.

QuotaCursor.swift:281https://cursor.com

Le cycle mensuel de Cursor.

QuotaWarp.swift:197https://app.warp.dev/graphql/v2

Le cycle de Warp.

QuotaCodebuff.swift:138https://www.codebuff.com

Le bloc de cinq heures et la semaine de Codebuff.

QuotaOpencode.swift:147https://opencode.ai

La consommation opencode.

QuotaGrok.swift:209https://cli-chat-proxy.grok.com

Les crédits Grok.

LecteurProxy.swift:17http://127.0.0.1:8787

Le statut du proxy Claude, sur ta propre machine. Rien ne sort de l'ordinateur.

LecteurProxy.swift:25http://127.0.0.1:8788

Le statut du proxy ChatGPT, même chose.

Les deux ports de boucle locale ne peuvent pas devenir autre chose. Leur adresse est lue dans un fichier du disque, et rien dans le format d'une URL n'empêcherait cette ligne de nommer une machine distante. Le code n'accepte donc que trois écritures — 127.0.0.1, ::1, localhost — et refuse le reste sans avoir à l'imaginer. C'est une liste de ce qui est admis, pas une liste de ce qui est interdit : celle-ci laisserait toujours passer la forme qu'on n'aurait pas prévue.

B · Les lignes qu'un navigateur ouvre, et que l'application n'interroge jamais

Ce sont les destinations des commandes « Ouvrir claude.ai », « Ouvrir cursor.com » et consorts. Elles partent au navigateur que tu as choisi. Quotum ne leur adresse aucune requête et ne lit rien de ce qu'elles répondent.

Lignes Adresses Ce qui s'y joue
Compte.swift:26, 27, 31–37 claude.ai · chatgpt.com · devin.ai · cursor.com · app.warp.dev · www.codebuff.com · augmentcode.com · opencode.ai · grok.com

La page d'accueil de chaque outil, une par fournisseur.

Compte.swift:110, 111 claude.ai/download · chatgpt.com/download

Où récupérer l'application de bureau, proposé quand elle n'est pas installée.

C · Les lignes qui ne sont pas des destinations

Lignes Texte Ce que c'est
VueReglages.swift:289 https://exemple.test

Une URL jetable, jamais ouverte : elle sert à demander à macOS quels navigateurs sont installés, pour peupler le menu des réglages. Le domaine .test est réservé et ne se résout nulle part.

QuotaGrok.swift:70, 72, 84 https://auth.x.ai::… · https://accounts.x.ai/sign-in

Des portées OAuth, c'est-à-dire des étiquettes comparées à celles du fichier local pour savoir de quelle connexion vient un jeton. Elles ressemblent à des adresses ; aucune n'est jointe.

QuotaAugment.swift:9, 160, 161 dans des commentaires

De la documentation : la forme de l'adresse de tenant, et le piège de barre finale mesuré en l'écrivant.

QuotaWindsurf.swift:291 dans un commentaire

Un contre-exemple d'attaque, cité pour expliquer pourquoi vérifier le seul schéma d'une URL ne suffit pas.

Une destination que cette commande ne montre pas

Augment. Son adresse n'est écrite nulle part dans le code : elle est lue dans ~/.augment/session.json, sous la forme https://<tenant>.api.augmentcode.com, et n'est acceptée que si elle reste sous le domaine augmentcode.com. Un grep des adresses ne peut donc pas la faire apparaître — et c'est la raison pour laquelle nous te donnons cette liste au lieu de te laisser conclure qu'une commande suffit à tout établir.

04 À quelle cadence

Un cycle de relevé part au lancement de l'application, à chaque ouverture du panneau, quand tu demandes une actualisation, après la création d'un compte, et quand tu changes les fournisseurs armés — puis toutes les cinq minutes. Cet intervalle se règle dans les réglages entre une, cinq et quinze minutes ; il ne descend pas sous la minute, par sobriété et non parce qu'un fournisseur l'imposerait.

Et aucun fournisseur n'est interrogé tant que tu n'as rien armé. Les neuf arrivent éteints, et chacun s'arme séparément : à l'installation, aucun jeton n'est lu et aucune requête ne part vers un fournisseur. Seule la vérification des mises à jour, qui ne dépend pas de ce choix, interroge le serveur de l'éditeur — section 05. Ce qui suit décrit donc le cycle d'un fournisseur que tu as choisi d'armer.

Un cycle, au maximum, c'est :

« Au maximum » est le mot important. Chaque lecteur cherche d'abord son identifiant sur la machine, et ne part sur le réseau que s'il l'a trouvé. Sur un ordinateur où Cursor n'est pas installé, aucune requête ne part vers Cursor — pas une requête vide, pas un appel qui échoue : rien. De même quand le Trousseau est verrouillé ou qu'une lecture est empêchée. Un parc de deux outils fait donc deux ou trois requêtes par cycle, pas dix.

05 Ce qui ne part nulle part

Aucune de tes mesures, aucun de tes noms de comptes, aucun de tes jetons ne sont envoyés à l'éditeur de Quotum. Il n'existe aucun compte à créer, aucune mesure d'audience dans l'application — celle du site est décrite dans les mentions légales —, aucun rapport d'incident automatique. Ce que l'application relève reste sur la machine qui l'a relevé.

Une exception, et elle est réelle. Quotum interroge le flux de mises à jour de l'éditeur pour savoir s'il existe une version plus récente — c'est ce qui permet à une copie déjà installée d'être prévenue. Rien d'autre n'y remonte : ni compte, ni mesure, ni statistique. Écrire « il n'y a pas de serveur de l'éditeur » serait faux, et nous ne l'écrivons pas.

La seule chose que Quotum écrive sur un compte

Tout le reste est en lecture. Une seule fonction écrit quelque part : consommer un crédit de réinitialisation ChatGPT. Elle n'est pas réversible — ces crédits s'obtiennent par parrainage, jamais à l'achat, et ils périment.

Elle a deux chemins, et aucun ne part tout seul d'un fournisseur que tu n'as pas armé : sans consentement de mesure, aucun quota n'est relevé, et rien ne peut donc conclure qu'un compte est à sec.

Dans les deux cas, les mêmes conditions : un compte ChatGPT, un crédit restant, un épuisement que le serveur a constaté — jamais déduit d'un pourcentage, jamais confondu avec un jeton expiré —, une mesure de moins de dix minutes, et une échéance de retour encore devant.

06 Vérifier soi-même, sans nous croire

⚠️ Le code de Quotum n'est pas publié au 19 septembre 2026 : le dépôt qui le porte est privé. Ces commandes s'exécutent à sa racine, et ne se rejouent donc que par qui y a accès. Nous les donnons avec ce qu'elles rendent aujourd'hui.

Affirmation Commande Ce qu'elle rend
Aucun paquet téléchargé, une seule bibliothèque tierce grep -c '\.package(' Package.swift

0

Aucun paquet n'est tiré d'un dépôt distant à la compilation. Une seule bibliothèque tierce est embarquée : Sparkle, le cadre de mise à jour, déposée sous forme binaire dans Tiers/grep -c binaryTarget Package.swift rend 1 — et attribuée dans THIRD-PARTY-LICENSES.md. Ne pas confondre avec grep -c dependencies, qui rend 2 : l'une lie l'application à Sparkle, l'autre lie la cible de tests à l'application.

Session réseau sans cache grep -n ephemeral Sources/Quotum/Donnees/Outils.swift

65: … URLSessionConfiguration.ephemeral

Les lignes voisines posent aussi urlCache = nil et une politique qui ignore tout cache local.

Les adresses, toutes grep -rn 'https\?://' Sources/

Chacune des lignes rendues figure dans l'un des trois tableaux de la section 03, commentée. Nous n'annonçons pas de total : c'est la liste qui se compare, pas un chiffre. Une ligne qui n'y serait pas est ce qu'il faut nous signaler.

07 Les neuf outils lus

Les fenêtres diffèrent d'un fournisseur à l'autre, et leur durée n'est presque jamais publiée. Quotum affiche celles que chaque fournisseur expose, sans les convertir dans une unité commune qui n'existe pas.

Outil Fenêtres publiées Plusieurs comptes
Claude5 h et 7 joui
ChatGPT7 joui
Windsurfquotidienne et hebdomadaireoui
Cursorcycle mensueloui
Warpcycleune ligne
Codebuffbloc de 5 h et hebdomadaireune ligne
Augmentcycle de facturationune ligne
opencodeselon le fournisseurune ligne
Grokénuméréesune ligne

Avant d'acheter, lis aussi l'avertissement. Relire les identifiants qu'un outil a posés sur la machine n'est prévu par aucun des neuf fournisseurs. Ce que cela engage est écrit sur la page d'achat, juste au-dessus du bouton.

Prix et achat