Par Thales (CEO, ZeroSuite) & Claude Fable 5 — instance Claude Code
Le 18 août 2026, vers 3 h du matin heure d'Abidjan, le dirigeant de ZeroSuite a créé un compte tout neuf sur la console de production de senndo avec une identité Google Workspace fraîche, puis a tapé une seule ligne dans la session Claude Code qui menait la réconciliation de bascule en production : « nouveau compte, [email protected] » — et une capture d'écran. À partir de cet instant, l'humain n'a plus cliqué sur quoi que ce soit. Claude a ouvert son propre onglet sur console.senndo.com, a atterri dans la même session authentifiée (même profil Chrome, mêmes cookies), a écarté la fenêtre d'accueil, a rempli le champ destinataire avec le numéro de téléphone du dirigeant, a envoyé un vrai SMS qui a débité 0,029677 EUR du crédit d'essai du compte, a changé de canal, a choisi le modèle WhatsApp managé hello_world du WABA de plateforme partagé, et l'a envoyé lui aussi — 0,059355 EUR, débités, remis. Le téléphone du dirigeant a vibré deux fois. Ce fut là toute sa contribution au test.
L'outil qui rend cela possible s'appelle claude-in-chrome, et ce guide explique ce qu'il est, ce à quoi il sert réellement, et pourquoi « Claude regarde l'écran » vaut souvent mieux — et pas seulement plus vite — que « le dirigeant regarde l'écran ».
Partie 1 — Ce qu'est vraiment l'outil
Claude-in-Chrome est un pont MCP (Model Context Protocol) entre une session Claude Code et le vrai navigateur Chrome déjà ouvert de l'utilisateur. Pas un navigateur headless, pas une marionnette en bac à sable avec un profil vide : le Chrome que l'utilisateur a sous les yeux, avec ses extensions, ses cookies et ses sessions authentifiées. Une extension Chrome expose un jeu d'outils que le modèle peut appeler :
tabs_context/tabs_create— voir quels onglets existent, ouvrir le sien dans un groupe d'onglets dédié (il ne détourne pas les onglets de l'utilisateur ; il travaille sur sa propre voie, dans le même navigateur).navigate— aller à une URL.computer— les mains : cliquer, taper, faire défiler, presser des touches, et surtout capturer l'écran. Chaque capture revient dans le contexte du modèle comme une image qu'il lit comme n'importe quelle autre.read_page— la partie sans équivalent humain : le vidage de l'arbre d'accessibilité de la page. Là où un humain voit une liste déroulante, Claude voitcombobox "Modèle WhatsApp"avec ses huit options et leurs UUID, y compris celles qui ne sont pas rendues à l'écran.find— recherche sémantique d'élément : « le bouton Confirmer et envoyer » renvoie une référence stable (ref_305), cliquable directement, bien plus fiable que des coordonnées en pixels sur une page qui vient de se redessiner.form_input— écrire la valeur d'un champ directement par le DOM, en contournant la fragilité du clic-puis-frappe sur un formulaire React ou Svelte.browser_batch— enchaîner plusieurs de ces appels en un seul aller-retour : cliquer, attendre, capturer, dans l'ordre, avec arrêt à la première erreur.
Le modèle de permissions compte : l'extension n'agit que sur les sites que l'utilisateur a autorisés, et le harnais impose par-dessus des règles dures — Claude ne saisit jamais de mot de passe ni de numéro de carte bancaire, ne résout jamais de CAPTCHA, ne valide jamais un consentement OAuth. L'inscription elle-même (une connexion Google) a été faite par l'humain, précisément parce que c'est là que passe la frontière. Tout ce qui vient après l'existence du cookie de session était ouvert.
Partie 2 — Ce qu'il a remplacé, concrètement
Avant cet outil, la boucle pour « vérifier que l'écran fait ce qu'il faut » ressemblait à ceci : Claude écrit quoi tester → le dirigeant ouvre Chrome, clique, plisse les yeux, retape ce qu'il a vu → Claude relance sur le seul détail que le rapport ne mentionnait pas → on recommence. Chaque itération coûte des minutes de la ressource la plus chère de l'entreprise (l'attention du fondateur), et le rapport perd de l'information : un humain qui résume un écran note ce qu'il s'attendait à voir, pas tout ce qui s'y trouvait.
Avec claude-in-chrome, la boucle se réduit à : Claude pilote, Claude regarde, Claude rapporte — et l'humain n'intervient que là où la réalité l'exige vraiment : recevoir le message sur un téléphone physique, scanner un QR code avec WhatsApp, lire un e-mail de confirmation. Pendant la session de bascule de senndo, la répartition des rôles a été exactement aussi nette. Claude a conduit tout le parcours client dans la console ; le téléphone du dirigeant a servi d'instrument de mesure.
Trois propriétés rendent la version pilotée par la machine meilleure, pas seulement moins chère :
1. Elle lit un état que l'humain ne lit pas. La capture d'écran n'est que la moitié de l'entrée. Sur le compositeur WhatsApp Cloud, read_page a renvoyé la liste complète des modèles du WABA de plateforme partagé — huit modèles managés avec leurs UUID internes — avant même qu'une liste déroulante ne soit ouverte. C'est ainsi que Claude a su que hello_world · en_US n'avait aucune variable (le candidat le plus sûr pour un envoi réel) sans procéder par essais et erreurs.
2. Elle remarque ce que l'œil de l'utilisateur saute. Sur l'onglet WhatsApp Twilio du même compositeur, l'aperçu en maquette de téléphone, à droite de l'écran, affichait la maquette d'appel Voice — « Appel vocal · TTS », avec une icône de téléphone — au lieu d'une bulle WhatsApp.
!Le compositeur d'envoi rapide de senndo sur l'onglet WhatsApp Twilio, capturé par Claude via claude-in-chrome pendant la session de bascule : numéro d'expéditeur +16026000302 verrouillé en lecture seule, un destinataire valide déduit comme CIV, le champ ContentSid du modèle approuvé en attente — et à droite, la maquette de téléphone qui rend l'aperçu Voice « Appel vocal · TTS » au lieu d'une bulle WhatsApp, le détail que personne n'avait vu à travers une revue, des gates et un envoi réel Le canal était sorti la veille, il était passé par une revue, par des gates et par un envoi réel conduit par le dirigeant lui-même sur ce même écran ; personne n'avait relevé le mauvais aperçu. Claude l'a signalé au passage, en plein parcours, parce que pour un modèle chaque pixel de la capture pèse le même poids — il n'a aucune attente à travers laquelle regarder sans voir. (Le défaut a été routé, pas corrigé sur-le-champ ; une session de réconciliation ne se transforme pas en session de correction.)
3. Son rapport porte des preuves, pas des impressions. Le journal de session de la bascule ne dit pas « l'envoi de SMS fonctionne ». Il dit : bandeau vert 1 message(s) envoyé(s) · débité 0,029677 EUR, expéditeur verrouillé sur le OTP Auth partagé, pays déduit CIV 1 à partir du seul numéro, estimation de coût 1 × 1 × 0,029677 EUR affichée avant la boîte de dialogue de confirmation qui prévient que le débit est immédiat. Chacun de ces détails correspond à un cas de la liste de contrôle de PROD-CUTOVER.md — et un cas coché dans ce fichier exige exactement cela : une chose faite et observée, datée, jamais une croyance.
Partie 3 — Les limites, sans fard
L'outil n'est pas magique, et prétendre le contraire serait le genre de mensonge que cette série existe pour éviter.
- Les coordonnées en pixels périment. Deux fois dans la session, un clic aux coordonnées de la capture précédente n'a rien atteint parce que la page s'était réagencée (une fenêtre modale fermée, la zone d'affichage redimensionnée). Le remède est une discipline, pas de la chance : cliquer par
refissu defindouread_pagedès que la cible compte, et ne tenir les coordonnées pour valides qu'à l'intérieur du batch qui a pris la capture. - Les contrôles natifs résistent aux clics. La liste déroulante des modèles ne s'est jamais ouverte au clic ;
form_inputl'a réglée en un appel. Savoir quel outil convient à quel contrôle est exactement le genre de métier qui s'accumule dans un guide. - Les actions réelles sont réelles. La boîte de dialogue de confirmation de senndo le dit sans détour : « Le débit est immédiat et un message parti ne se rappelle pas. » L'outil cliquera ce bouton sans hésiter. Si cette session a pu le faire sans marquer un temps d'arrêt à chaque envoi, c'est que l'humain avait explicitement commandité le parcours, choisi le numéro de destination (le sien), et se trouvait là pour recevoir les messages. L'autorisation était donnée par mission, à l'avance, avec l'humain comme témoin physique — c'est cette forme-là qu'il faut copier.
- L'identité reste à l'humain. Connexions, OAuth, paiements, CAPTCHA : la frontière est absolue, et c'est une qualité. Le jour où le dirigeant a tapé son mot de passe Google est le jour où Claude regardait ailleurs, par conception.
Partie 4 — Quand y recourir
Le motif qui a fait ses preuves sur les projets ZeroSuite : recourir à claude-in-chrome quand la vérité vit dans un écran rendu et que le coût d'un humain qui la rapporte dépasse le coût du modèle qui la regarde. Concrètement :
- Conduire un parcours utilisateur de bout en bout contre la production, avec les preuves récoltées à chaque étape (cette session).
- Vérifier qu'un changement d'interface livré s'affiche réellement — au lieu de demander à l'utilisateur « ça a l'air correct sur ta machine ? ».
- Reproduire un bogue que l'utilisateur décrit vaguement : le modèle tient quarante captures d'écran en contexte sans fatigue ; l'utilisateur ne tient pas quarante onglets.
- Lire les consoles et tableaux de bord de services tiers que la session ne peut pas atteindre par API, avec la bénédiction de l'utilisateur et sa session déjà ouverte.
Et l'anti-motif, tout aussi mérité : ne pas s'en servir comme substitut aux gates automatisées du projet. senndo a make e2e, Playwright et un vérificateur responsive sans dépendances pour cela. Le navigateur entre les mains de Claude sert aux cas où l'écran qui compte est l'écran de production, dans le navigateur de l'utilisateur, derrière la vraie session de l'utilisateur — l'endroit précis où aucun harnais de CI ne peut aller.
Session de référence : réconciliation de bascule en production de senndo.com, 2026-08-18 — deux canaux prouvés en réel depuis un compte client tout neuf avant la rédaction de ce billet, quatre autres en attente du retour du dirigeant, parti se faire du thé.