Le navigateur intégré

Chaque espace de travail est fourni avec son propre navigateur web : un Chromium complet qui s'ouvre sous forme de volet à côté du terminal. Il existe pour qu'un agent puisse voir le web — ouvrir l'application qu'il vient de construire, lire une page de documentation, reproduire un bug, parcourir un flux — et pour que vous puissiez observer (et piloter) le même navigateur que lui. Le navigateur s'exécute dans sa propre machine virtuelle secondaire jetable, distincte de la VM de l'espace de travail, de sorte qu'une page hostile ne puisse jamais toucher les fichiers de l'agent ni votre Mac.

Ce chapitre est le guide complet de son utilisation : l'ouvrir, le piloter à la main, laisser l'agent le piloter via le serveur MCP de navigateur intégré, conserver les connexions, et le modèle de confidentialité. Il s'agit du même volet présenté dans Sessions ; tout ce qui figure ici s'applique également lorsqu'un agent distant le pilote via une connexion en client riche.

Ouvrir le navigateur

Basculez le volet de navigateur avec ⌃⌘B, ou cliquez sur le bouton globe dans la barre d'outils de la fenêtre de session. Il s'ouvre sous forme de division sur le bord droit de la scène, partageant la fenêtre avec le terminal.

La toute première fois que vous l'ouvrez — par Mac, et non par espace de travail — une carte de consentement demande Installer le navigateur ? avec Télécharger et installer et Pas maintenant. L'image du navigateur est un téléchargement unique d'environ 500 Mo, partagé par tous les espaces de travail. Tant qu'elle n'est pas installée, le volet affiche l'invite d'installation au lieu d'une page ; vous pouvez également la pré-télécharger depuis les paramètres de Navigateur de l'espace de travail avec Télécharger maintenant.

Une fois installée, la VM du navigateur démarre de façon paresseuse la première fois qu'un espace de travail ouvre le volet (ou la première fois qu'un agent appelle un outil de navigateur), ce qui prend une seconde ou deux. Vous ne gérez pas cette VM directement — elle est créée, suspendue et démantelée pour vous (voir Cycle de vie et utilisation des ressources).

Remarque : Le navigateur s'exécute dans une VM différente de celle où s'exécute le shell de votre agent. Les deux partagent un réseau privé (voir Charger un serveur de développement), mais ce ne sont pas la même machine — un fichier que l'agent écrit dans son répertoire personnel ne se trouve pas sur le disque du navigateur, et localhost dans le navigateur n'est pas le localhost de l'agent.

Le piloter vous-même

Le volet est une vue de navigateur sans chrome sous une barre d'onglets compacte de style Safari :

ContrôleCe qu'il fait
Précédent / SuivantLes boutons fléchés, ou ⌘[ et ⌘].
Pastilles d'ongletsUne pastille par onglet ouvert. La pastille active fait aussi office de champ d'adresse (« Rechercher ou saisir une URL ») : saisissez un simple nom d'hôte et https:// est ajouté en préfixe ; saisissez quelque chose qui n'est pas une URL et cela devient une recherche Google.
+Nouvel onglet (⌘T lorsque le volet a le focus).
DevToolsBasculer les outils de développement de Chromium (F12) — l'inspecteur d'éléments complet, la console et le panneau réseau.
Infos du siteCliquez sur le favicon pour afficher une infobulle d'informations sur le site, y compris la chaîne de certificats sur les pages HTTPS.
PartagerLe menu de partage macOS standard pour la page en cours.

Faites glisser le bord gauche du volet pour le redimensionner (640 points par défaut, réglable entre 380 et 1400 ; le terminal conserve toujours au moins 240 points). Faites-le glisser en dessous de la largeur minimale pour fermer le volet.

Remarque : Tant que la vue du navigateur a le focus clavier, ⌘Q et ⌘Tab sont capturés par l'invité afin que les raccourcis intégrés à la page fonctionnent — ils ne quitteront pas l'application ni ne changeront d'application macOS. Cliquez sur le terminal ou sur la barre latérale pour redonner ces raccourcis à macOS.

Charger un serveur de développement démarré par l'agent

La raison la plus courante d'ouvrir le navigateur est de regarder quelque chose que l'agent construit. Comme la VM du navigateur partage le même sous-réseau NAT que la VM de l'espace de travail, elle peut atteindre directement un serveur de développement démarré par l'agent — mais pas à localhost, car le navigateur est une machine distincte.

Atteignez le serveur de développement par l'adresse IP de la VM de l'espace de travail :

  1. Démarrez le serveur dans le terminal de l'agent comme d'habitude (par exemple un serveur de développement sur le port 3000).
  2. Copiez l'IP de l'espace de travail depuis la pastille IP dans la barre d'outils (ou exécutez hostname -I dans le terminal de l'agent).
  3. Dans le navigateur, accédez à http://<workspace-ip>:3000.

L'agent, lorsqu'il pilote lui-même le navigateur, reçoit l'instruction de faire exactement cela — atteindre les serveurs de développement par l'IP du LAN, jamais localhost — afin que ses captures d'écran et ses vérifications atteignent le bon serveur.

Laisser l'agent le piloter

Le navigateur est agentique : chaque agent d'espace de travail reçoit automatiquement un serveur MCP browser intégré, sans configuration. Ses outils permettent à l'agent d'ouvrir des pages, de cliquer, de saisir, de lire le DOM, de prendre des captures d'écran, et d'inspecter la console et le réseau — pilotant le volet même que vous voyez. Vous et l'agent partagez un seul navigateur : une page que l'agent ouvre apparaît dans votre volet, et un onglet que vous ouvrez est visible pour le browser_list_tabs de l'agent.

Vous n'avez pas besoin d'activer cela. Demandez simplement à l'agent de faire quelque chose qui nécessite un navigateur — par exemple :

Open http://<workspace-ip>:3000, click "Sign up", fill the form with a test
account, and tell me if the confirmation page renders. Screenshot it.

Les appels d'outils de l'agent peuvent démarrer et révéler le navigateur automatiquement pour l'espace de travail sélectionné ; si le volet était fermé, un appel d'outil l'ouvre et attend le démarrage à froid. (Le volet ne se rouvre jamais de lui-même après que vous l'avez fermé manuellement au sein d'une session, de sorte que vous gardez toujours le contrôle de sa visibilité.)

Les invites qui déclenchent le navigateur

Il n'existe pas de commande « utiliser le navigateur » — l'agent recourt aux outils browser_* chaque fois que votre demande ne peut trouver de réponse qu'en chargeant, voyant ou agissant sur une page réelle. En pratique, tout ce qui nomme une URL, demande à l'agent de regarder ou de cliquer sur quelque chose de rendu, ou demande une capture d'écran, un journal de console ou une activité réseau, fera intervenir le navigateur. Voici quelques formes qui le font de manière fiable :

  • Voir quelque chose que vous avez construit — « Ouvre mon serveur de développement sur http://<workspace-ip>:3000 et dis-moi si le tableau de bord s'affiche. » / « Prends une capture d'écran pleine largeur de la page d'accueil. » / « J'ai mis l'en-tête en bleu — recharge la page et confirme qu'il a l'air correct. »
  • Reproduire ou tester un flux — « Va sur la page d'inscription, remplis-la avec un compte de test, soumets, et dis-moi si l'écran de confirmation apparaît. » / « Parcours le paiement et arrête-toi à la première étape qui échoue. »
  • Lire ou extraire depuis une page — « Ouvre <URL de documentation> et résume la section d'authentification. » / « Liste tous les liens sortants de cette page. » / « Récupère le tableau des tarifs au format Markdown. »
  • Déboguer un problème côté client — « Le bouton Acheter ne fait rien — ouvre la page, clique dessus, et vérifie la console et le journal réseau pour la requête défaillante. » (L'agent utilise browser_console et browser_network pour lire exactement ce que vous verriez dans les DevTools, sans que vous ayez à copier quoi que ce soit.)

Plus vous pointez concrètement vers une page ou une action à l'écran, plus l'agent va directement au navigateur. Si vous ne faites que décrire un résultat (« est-ce que l'inscription fonctionne ? »), l'agent ouvrira généralement quand même le navigateur pour vérifier — mais nommer l'URL ou le bouton supprime un aller-retour. N'oubliez pas de lui donner l'IP du LAN de l'espace de travail, et non localhost, pour les serveurs de développement (voir Charger un serveur de développement).

Les outils de navigateur

Le serveur expose 23 outils, regroupés selon ce qu'ils font :

GroupeOutils
Navigationbrowser_navigate, browser_back, browser_forward, browser_reload, browser_wait_for
Ongletsbrowser_new_tab, browser_list_tabs, browser_activate_tab, browser_close_tab
Lecture de la pagebrowser_get_text, browser_get_html, browser_get_links, browser_screenshot (avec une option pleine page), browser_evaluate (exécuter du JavaScript)
Interactionbrowser_click, browser_fill, browser_type, browser_press_key, browser_pick_element
Diagnosticsbrowser_console, browser_network, browser_network_summary, browser_clear_network

browser_evaluate exécute du JavaScript arbitraire dans la page et renvoie le résultat, et browser_network / browser_console donnent à l'agent le même journal de requêtes et la même sortie de console que vous liriez dans les DevTools — c'est ainsi qu'un agent débogue un fetch défaillant ou une erreur côté client sans que vous ayez à copier quoi que ce soit à la main. browser_pick_element est celui qui vous implique directement, et il a sa propre section ci-dessous.

Pointer un élément

Les mots sont un moyen maladroit d'identifier un élément unique sur une page chargée — « la deuxième carte », « ce bouton cassé », « l'étiquette mal alignée ». Lorsque l'agent ne peut pas déterminer de quel élément vous parlez, demandez-lui de vous laisser pointer, et il vous cédera le contrôle plutôt que de deviner :

One card in this grid is misaligned — let me point at it. Then read that
element's classes and tell me why it's off.

En arrière-plan, l'agent appelle browser_pick_element, qui arme un sélecteur interactif directement dans le volet de navigateur : les éléments se surlignent à mesure que vous déplacez la souris dessus, et une bannière « cliquez sur un élément » apparaît en haut. Cliquez sur l'élément que vous visez, et l'agent reçoit immédiatement son sélecteur CSS exact — rien à décrire, copier ou coller. Vous disposez d'environ 60 secondes pour cliquer avant que le sélecteur n'expire et que l'agent ne reçoive rien en retour.

Vous n'appuyez jamais sur un bouton « activer le sélecteur » ni n'ouvrez de menu — armer le sélecteur est l'appel d'outil de l'agent, il se produit donc à l'instant où vous le demandez. Des formulations qui le déclenchent de manière fiable : « laisse-moi le pointer », « je vais cliquer sur celui que je vise », « quel élément ? je vais te montrer », ou simplement « pointer-et-choisir ». Une fois que l'agent dispose du sélecteur, il peut faire n'importe quoi avec cet élément — cliquer dessus, lire son texte ou ses classes, l'observer, ou l'utiliser comme point d'ancrage pour expliquer un bug de mise en page — donc un bon prolongement consiste à dire ce que vous voulez faire de l'élément dans la même phrase où vous proposez de le pointer.

Astuce : Le sélecteur est le moyen le plus rapide de combler l'écart entre « je vois le problème, toi non ». Au lieu de décrire un défaut visuel, pointez l'élément fautif et laissez l'agent inspecter le véritable nœud du DOM.

En coulisses, les outils atteignent le navigateur via un shim Python stdio généré, bromure-browser-mcp.py, placé en lecture seule dans la VM de l'agent sous /mnt/bromure-meta/. Il compose l'hôte via le port vsock 5830 et se reconnecte indéfiniment, de sorte que les outils ne disparaissent jamais de la liste d'outils de l'agent, même lors des démantèlements du navigateur. La référence complète des outils se trouve dans CLI, automatisation et MCP.

Remarque : Sur un client riche, le flux MCP de navigateur d'un agent distant peut être relayé via la connexion SSH afin que l'agent distant pilote le volet de navigateur que vous observez localement. Un seul relais de ce type est actif à la fois.

Rester connecté ou rester jetable

Par défaut, le navigateur est jetable : son disque est un clone éphémère supprimé lors du démantèlement du navigateur, de sorte que les cookies, les connexions et l'historique disparaissent avec lui. Chaque nouvelle ouverture démarre propre. C'est le comportement par défaut sûr — rien de ce qu'un agent fait dans le navigateur ne persiste ni ne fuit vers un travail ultérieur.

Lorsque vous avez besoin que les connexions survivent — se connecter à un site de préproduction que l'agent revisitera, conserver une session entre les redémarrages — activez Rester connecté aux sites web dans les paramètres de Navigateur de l'espace de travail. Le profil de Chromium réside alors sur un disque chiffré, propre à l'espace de travail, sous ~/Library/Application Support/BromureAC/browser-profiles/ et survit aux démantèlements. Basculer ce paramètre redémarre le navigateur de l'espace de travail, vous êtes donc averti avant que la modification ne soit enregistrée.

Avertissement : Activer Rester connecté troque la disponibilité jetable contre la commodité. Les cookies et connexions enregistrés sont exactement le genre de chose qu'un agent victime d'une injection de prompt tenterait d'exfiltrer. Préférez le comportement jetable par défaut pour tout espace de travail pointé vers du code non fiable, et réservez la persistance aux navigateurs qui ne visitent que des sites de confiance.

Cycle de vie et utilisation des ressources

La VM du navigateur est gérée pour vous et maintenue peu coûteuse au repos :

  • Elle est créée de façon paresseuse à la première ouverture (ou au premier appel d'outil de l'agent) et démarre à partir de l'image partagée de 500 Mo sous forme de clone en copie sur écriture.
  • Un navigateur masqué se suspend après environ 10 secondes et est entièrement démantelé après 5 minutes de repli, libérant sa mémoire et son disque.
  • L'état ouvert/fermé du volet est mémorisé par espace de travail tant que l'application s'exécute, mais délibérément pas entre les redémarrages de l'application — un navigateur jetable ne survivrait de toute façon pas à un redémarrage.

Contrairement aux VM d'espace de travail, la VM secondaire du navigateur est servie depuis un pool préchauffé, ce qui explique pourquoi l'ouverture du volet paraît généralement instantanée après la première fois.

Raccourcis clavier

Ceux-ci s'appliquent lorsque le volet de navigateur a le focus clavier :

RaccourciAction
⌃⌘BBasculer le volet de navigateur
⌘T / ⌘WNouvel / fermer l'onglet de navigateur
⌘[ / ⌘]Précédent / Suivant
⌘RRecharger
⌘LPlacer le focus sur le champ d'adresse (la pastille d'onglet active)
F12Basculer les DevTools

Dépannage

Le volet affiche une invite d'installation au lieu d'une page. L'image du navigateur n'est pas encore téléchargée. Cliquez sur Télécharger et installer, ou pré-téléchargez-la depuis les paramètres de NavigateurTélécharger maintenant (environ 500 Mo).

La page de l'agent ne se charge pas / affiche une connexion refusée. L'agent utilise presque certainement localhost. Le navigateur est une VM distincte — il doit atteindre le serveur de développement par l'IP du LAN de la VM de l'espace de travail (hostname -I dans le terminal de l'agent, ou la pastille IP de la barre d'outils), comme dans Charger un serveur de développement.

⌘Q ou ⌘Tab ne font rien. La vue du navigateur a le focus et les capture pour un usage intégré à la page. Cliquez sur le terminal ou sur la barre latérale pour rendre ces raccourcis à macOS.

Les connexions disparaissent entre les sessions. C'est le comportement jetable par défaut. Activez Rester connecté aux sites web dans les paramètres de Navigateur pour conserver un profil persistant.

Le volet de navigateur ne se rouvre pas de lui-même après que l'agent l'a utilisé. C'est voulu : une fois que vous fermez le volet manuellement, il reste fermé jusqu'à ce que vous le rouvriez, même si l'agent continue d'émettre des appels d'outils de navigateur (qui s'exécutent quand même — vous ne voyez simplement pas le volet). Appuyez sur ⌃⌘B pour le rappeler.

Paramètres et outils associés

  • Paramètres de Navigateur — le bouton Rester connecté aux sites web et la gestion de l'image du navigateur.
  • Sessions — le volet de navigateur dans le contexte de l'ensemble de la fenêtre de session.
  • CLI, automatisation et MCP — la référence complète des outils browser_* et le transport vsock.