Piloter un CLI
Dix états, pas deux booléens : ce que Deskworth sait d’un outil en ligne de commande, comment une connexion se lance, et ce qui est refusé délibérément.
Livré dans la construction courante. Vous pouvez le faire sur votre machine aujourd’hui.
L’écran de réglages savait deux choses d’un fournisseur : installé, et utilisable. Deux booléens décrivent un fournisseur au repos. Ils ne disent rien de ce qui se passe pendant qu’on le connecte, et ils n’empêchent rien, un bouton de connexion sur un binaire absent, un test lancé sur un fournisseur déconnecté, une annulation montrée pour un fournisseur qui ne faisait rien. Trois écrans que deux booléens laissent construire sans broncher.
#Les dix états
Ils ne se replient pas les uns dans les autres. Non installé, installé mais déconnecté, et la connexion a échoué sont trois situations différentes qui réclament trois gestes différents.
| État | Ce que cela veut dire | Ce que vous faites |
|---|---|---|
| unknown | Rien n’a encore été lu. Pas encore regardé n’est pas la même chose qu’absent. | Rien, cet état dure le temps de la première lecture. |
| detecting | Deskworth regarde le chemin et interroge le CLI sur sa session. | Attendre. |
| missing | Aucun binaire de ce nom n’est dans le chemin. | Installer le CLI de l’éditeur. |
| signed_out | Le binaire répond ; la session non. L’état le plus fréquent, et le plus mal lu, cela a l’air de fonctionner. | Se connecter. |
| connecting | Une connexion est en cours. Une adresse n’est montrée que si le CLI en a imprimé une et qu’elle a passé le filtre d’adresses. | Terminer la connexion dans votre navigateur. |
| ready | Le binaire est là et sa session tient. | Rien. Lancer un bureau. |
| testing | Une vraie requête est en vol. | Attendre. |
| failed | La dernière tentative a échoué, et Deskworth dit pourquoi dans ses propres mots, jamais dans ceux du CLI. | Lire la raison ; elle nomme le geste. |
| timed_out | La tentative a dépassé son délai. Distinct de « failed » : il n’y a rien à réparer, il y a quelque chose à refaire. | Réessayer. |
| cancelled | Vous l’avez arrêtée. Distinct d’un échec, personne n’a rien cassé. | Rien. |
PreuveUne seule fonction de transition est la porte entre ces états. Un geste qui n’a pas de sens depuis l’état courant y est refusé, et non plus loin, là où il aurait déjà démarré un processus.
#Se connecter
Une connexion est une liste d’arguments figée attachée à un identifiant d’éditeur, et la façade choisit parmi trois identifiants connus, elle ne choisit pas un programme. Il n’y a aucune chaîne à échapper puisqu’il n’y a aucun interpréteur, et aucun argument à valider puisque aucun argument ne vient de l’interface.
| Éditeur | Connexion | Où elle a le droit de vous mener |
|---|---|---|
| Anthropic | Une sous-commande figée du binaire claude | Deux hôtes déclarés, comparés entiers |
| OpenAI | Une sous-commande figée du binaire codex | Deux hôtes déclarés, comparés entiers |
| Aucune, le CLI n’a pas de commande de connexion | Nulle part. Deskworth montre une phrase au lieu d’un bouton |
LimiteCette dernière ligne est un fait, pas un oubli. Donner à un CLI un bouton de connexion qui ne mène nulle part est exactement le genre de promesse que cet écran existe pour retirer.
#Le filtre d’adresses
Une connexion imprime beaucoup de choses. L’une d’elles peut être une page à ouvrir. Quatre conditions décident si Deskworth l’ouvre, et en manquer une seule veut dire que l’adresse ne passe pas du tout, ni caviardée, ni montrée en grisé : elle ne passe pas.
- Elle est en https. Rien d’autre n’est ouvert.
- Son hôte est l’un des hôtes déclarés pour cet éditeur, comparé en entier, un sosie qui se contente de finir par le bon suffixe est refusé.
- Elle ne porte aucun identifiant embarqué dans son autorité. Un navigateur les afficherait dans sa barre d’adresse, et c’est la forme d’une fausse page de connexion.
- L’hôte est lu par l’analyseur qu’emploie le client HTTP. Deux analyseurs en désaccord sur la fin d’un nom d’hôte sont une porte, et cette porte a déjà été trouvée.
#Le délai
Une connexion dispose de trois minutes : de quoi ouvrir un navigateur, se connecter et passer un second facteur. Plus court, une connexion honnête expire sous les doigts de l’opérateur ; plus long, un CLI qui attend une saisie que personne ne fera occupe une place pour rien.
PreuveCe qui décide du succès est une vraie sonde, pas le code de sortie de la commande de connexion. Une connexion peut sortir proprement sans laisser de session derrière elle, et un écran qui ferait confiance au code de sortie annoncerait une connexion qui n’existe pas.
#Ce qu’une exécution passe réellement au CLI
Au-delà de la connexion, une carte démarre le CLI avec un jeu de drapeaux figé : un flux d’entrée et de sortie structuré, la déclaration du serveur d’outils local, un mode de configuration strict, et une liste d’approbation explicite. Deux d’entre eux méritent une phrase.
- Le mode de configuration strict isole plus que la déclaration d’outils. Mesuré le 2026-08-26, deux crochets de session de l’opérateur lui-même injectaient un style de sortie et un outil sans rapport dans le contexte d’une carte d’analyse financière. Le même drapeau ferme aussi la frontière des fichiers, sans lui, une carte a lu le journal d’une carte voisine.
- La liste d’approbation de la ligne de commande n’est pas la liste de refus du fichier déposé. Elles font l’inverse l’une de l’autre, et les deux sont nécessaires : l’approbation déposée est ignorée tant que l’atelier n’est pas approuvé, ce qu’une salle de données créée il y a quelques secondes n’est jamais.
#Sources
- The provider manifest, generated by the coreDeskworthDocument interne, non publié
- Deskworth OS, product state at 0.0.23DeskworthDocument interne, non publié