OpenClaw peut exécuter un profil Chrome/Brave/Edge/Chromium dédié que l’agent contrôle. Il est isolé de votre navigateur personnel et est géré par un petit service de contrôle local dans le Gateway (local loopback uniquement). Vue débutant :Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Considérez-le comme un navigateur séparé, réservé à l’agent.
- Le profil
openclawne touche pas votre profil de navigateur personnel. - L’agent peut ouvrir des onglets, lire des pages, cliquer et saisir du texte dans une voie sûre.
- Le profil
userintégré se connecte à votre vraie session Chrome déjà connectée via Chrome MCP.
Ce que vous obtenez
- Un profil de navigateur séparé nommé openclaw (accent orange par défaut).
- Un contrôle déterministe des onglets (lister/ouvrir/focaliser/fermer).
- Des actions d’agent (clic/saisie/glisser/sélection), instantanés, captures d’écran, PDF.
- Une Skill
browser-automationfournie qui apprend aux agents la boucle de récupération instantané, onglet stable, référence obsolète et bloqueur manuel lorsque le Plugin de navigateur est activé. - Prise en charge multiprofil facultative (
openclaw,work,remote, …).
Démarrage rapide
openclaw browser est totalement absent, ou si l’agent indique que l’outil de navigateur
n’est pas disponible, passez à Commande ou outil de navigateur manquant.
Contrôle du Plugin
L’outilbrowser par défaut est un Plugin fourni. Désactivez-le pour le remplacer par un autre Plugin qui enregistre le même nom d’outil browser :
plugins.entries.browser.enabled et browser.enabled=true. Désactiver uniquement le Plugin supprime le CLI openclaw browser, la méthode Gateway browser.request, l’outil d’agent et le service de contrôle comme une seule unité ; votre configuration browser.* reste intacte pour un remplacement.
Les changements de configuration du navigateur nécessitent un redémarrage du Gateway afin que le Plugin puisse réenregistrer son service.
Guidance pour l’agent
Note sur le profil d’outils :tools.profile: "coding" inclut web_search et
web_fetch, mais n’inclut pas l’outil browser complet. Si l’agent ou un
sous-agent lancé doit utiliser l’automatisation du navigateur, ajoutez browser à l’étape de
profil :
agents.list[].tools.alsoAllow: ["browser"].
tools.subagents.tools.allow: ["browser"] seul ne suffit pas, car la politique de sous-agent
est appliquée après le filtrage du profil.
Le Plugin de navigateur fournit deux niveaux de guidance pour l’agent :
- La description de l’outil
browserporte le contrat compact toujours actif : choisir le bon profil, conserver les références sur le même onglet, utilisertabId/les libellés pour le ciblage d’onglet, et charger la Skill de navigateur pour le travail en plusieurs étapes. - La Skill
browser-automationfournie porte la boucle d’exploitation plus longue : vérifier d’abord l’état/les onglets, étiqueter les onglets de tâche, prendre un instantané avant d’agir, reprendre un instantané après les changements d’interface, récupérer une fois les références obsolètes, et signaler les bloqueurs de connexion/2FA/captcha ou caméra/microphone comme une action manuelle au lieu de deviner.
Commande ou outil de navigateur manquant
Siopenclaw browser est inconnu après une mise à niveau, si browser.request manque, ou si l’agent signale que l’outil de navigateur est indisponible, la cause habituelle est une liste plugins.allow qui omet browser et l’absence de bloc de configuration racine browser. Ajoutez-le :
browser, par exemple browser.enabled=true ou browser.profiles.<name>, active le Plugin de navigateur fourni même avec un plugins.allow restrictif, conformément au comportement de configuration des canaux. plugins.entries.browser.enabled=true et tools.alsoAllow: ["browser"] ne remplacent pas à eux seuls l’appartenance à la liste d’autorisation. Supprimer entièrement plugins.allow rétablit également le comportement par défaut.
Profils : openclaw vs user
openclaw: navigateur géré et isolé (aucune extension requise).user: profil intégré de connexion Chrome MCP à votre vraie session Chrome connectée.
- Par défaut : utiliser le navigateur isolé
openclaw. - Préférez
profile="user"lorsque les sessions connectées existantes sont importantes et que l’utilisateur est devant l’ordinateur pour cliquer/approuver toute invite de connexion. profileest la dérogation explicite lorsque vous voulez un mode de navigateur spécifique.
browser.defaultProfile: "openclaw" si vous voulez le mode géré par défaut.
Configuration
Les paramètres du navigateur se trouvent dans~/.openclaw/openclaw.json.
Ports and reachability
Ports and reachability
- Le service de contrôle s’attache à l’interface local loopback sur un port dérivé de
gateway.port(par défaut18791= Gateway + 2). Remplacergateway.portouOPENCLAW_GATEWAY_PORTdécale les ports dérivés dans la même famille. - Les profils
openclawlocaux attribuent automatiquementcdpPort/cdpUrl; définissez-les uniquement pour le CDP distant.cdpUrlutilise par défaut le port CDP local géré lorsqu’il n’est pas défini. remoteCdpTimeoutMss’applique aux vérifications d’accessibilité HTTP CDP distantes etattachOnlyainsi qu’aux requêtes HTTP d’ouverture d’onglet ;remoteCdpHandshakeTimeoutMss’applique à leurs négociations WebSocket CDP.localLaunchTimeoutMsest le budget pour qu’un processus Chrome géré lancé localement expose son endpoint HTTP CDP.localCdpReadyTimeoutMsest le budget de suivi pour la disponibilité websocket CDP après la découverte du processus. Augmentez ces valeurs sur Raspberry Pi, VPS d’entrée de gamme ou matériel plus ancien où Chromium démarre lentement. Les valeurs doivent être des entiers positifs jusqu’à120000ms ; les valeurs de configuration invalides sont rejetées.- Les échecs répétés de lancement/disponibilité de Chrome géré sont coupés par circuit pour chaque profil. Après plusieurs échecs consécutifs, OpenClaw suspend brièvement les nouvelles tentatives de lancement au lieu de lancer Chromium à chaque appel d’outil de navigateur. Corrigez le problème de démarrage, désactivez le navigateur s’il n’est pas nécessaire, ou redémarrez le Gateway après réparation.
actionTimeoutMsest le budget par défaut pour les requêtesactdu navigateur lorsque l’appelant ne transmet pastimeoutMs. Le transport client ajoute une petite fenêtre de marge afin que les longues attentes puissent se terminer au lieu d’expirer à la frontière HTTP.tabCleanupest un nettoyage au mieux pour les onglets ouverts par les sessions de navigateur de l’agent principal. Le nettoyage du cycle de vie des sous-agents, cron et ACP ferme toujours leurs onglets explicitement suivis à la fin de la session ; les sessions principales conservent les onglets actifs réutilisables, puis ferment en arrière-plan les onglets suivis inactifs ou en excès.
SSRF policy
SSRF policy
- La navigation du navigateur et l’ouverture d’onglet sont protégées contre le SSRF avant la navigation et revérifiées au mieux ensuite sur l’URL finale
http(s). - En mode SSRF strict, la découverte de l’endpoint CDP distant et les sondes
/json/version(cdpUrl) sont également vérifiées. - Les variables d’environnement Gateway/fournisseur
HTTP_PROXY,HTTPS_PROXY,ALL_PROXYetNO_PROXYne proxyfient pas automatiquement le navigateur géré par OpenClaw. Chrome géré se lance directement par défaut, de sorte que les paramètres de proxy du fournisseur n’affaiblissent pas les vérifications SSRF du navigateur. - Pour proxyfier le navigateur géré lui-même, transmettez des indicateurs de proxy Chrome explicites via
browser.extraArgs, comme--proxy-server=...ou--proxy-pac-url=.... Le mode SSRF strict bloque le routage explicite par proxy du navigateur, sauf si l’accès du navigateur au réseau privé est intentionnellement activé. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkest désactivé par défaut ; activez-le uniquement lorsque l’accès du navigateur au réseau privé est intentionnellement approuvé.browser.ssrfPolicy.allowPrivateNetworkreste pris en charge comme alias hérité.
Profile behavior
Profile behavior
attachOnly: truesignifie ne jamais lancer de navigateur local ; s’attacher uniquement si l’un d’eux est déjà en cours d’exécution.headlesspeut être défini globalement ou par profil géré local. Les valeurs par profil remplacentbrowser.headless, ce qui permet à un profil lancé localement de rester headless pendant qu’un autre reste visible.POST /start?headless=trueetopenclaw browser start --headlessdemandent un lancement headless ponctuel pour les profils gérés locaux, sans réécrirebrowser.headlessni la configuration du profil. Les profils avec session existante, attach-only et CDP distant rejettent cette surcharge, car OpenClaw ne lance pas ces processus de navigateur.- Sur les hôtes Linux sans
DISPLAYniWAYLAND_DISPLAY, les profils gérés locaux passent automatiquement en mode headless par défaut quand ni l’environnement ni la configuration du profil/globale ne choisissent explicitement le mode avec interface.openclaw browser status --jsonsignaleheadlessSourcecommeenv,profile,config,request,linux-display-fallbackoudefault. OPENCLAW_BROWSER_HEADLESS=1force les lancements gérés locaux en mode headless pour le processus actuel.OPENCLAW_BROWSER_HEADLESS=0force le mode avec interface pour les démarrages ordinaires et renvoie une erreur exploitable sur les hôtes Linux sans serveur d’affichage ; une demande explicitestart --headlessreste prioritaire pour ce lancement ponctuel.executablePathpeut être défini globalement ou par profil géré local. Les valeurs par profil remplacentbrowser.executablePath, ce qui permet à différents profils gérés de lancer différents navigateurs basés sur Chromium. Les deux formes acceptent~pour le répertoire personnel de votre OS.color(au niveau supérieur et par profil) teinte l’interface du navigateur afin que vous puissiez voir quel profil est actif.- Le profil par défaut est
openclaw(autonome géré). UtilisezdefaultProfile: "user"pour opter pour le navigateur utilisateur connecté. - Ordre de détection automatique : navigateur système par défaut s’il est basé sur Chromium ; sinon Chrome → Brave → Edge → Chromium → Chrome Canary.
driver: "existing-session"utilise Chrome DevTools MCP au lieu de CDP brut. Ne définissez pascdpUrlpour ce pilote.- Définissez
browser.profiles.<name>.userDataDirlorsqu’un profil avec session existante doit s’attacher à un profil utilisateur Chromium non par défaut (Brave, Edge, etc.). Ce chemin accepte également~pour le répertoire personnel de votre OS.
Utiliser Brave ou un autre navigateur basé sur Chromium
Si votre navigateur système par défaut est basé sur Chromium (Chrome/Brave/Edge/etc), OpenClaw l’utilise automatiquement. Définissezbrowser.executablePath pour remplacer
la détection automatique. Les valeurs executablePath au niveau supérieur et par profil acceptent ~
pour le répertoire personnel de votre OS :
- macOS
- Windows
- Linux
executablePath par profil n’affecte que les profils gérés locaux qu’OpenClaw
lance. Les profils existing-session s’attachent plutôt à un navigateur déjà en cours d’exécution,
et les profils CDP distants utilisent le navigateur derrière cdpUrl.
Contrôle local ou distant
- Contrôle local (par défaut) : le Gateway démarre le service de contrôle local loopback et peut lancer un navigateur local.
- Contrôle distant (hôte Node) : exécutez un hôte Node sur la machine qui possède le navigateur ; le Gateway lui transmet les actions du navigateur.
- CDP distant : définissez
browser.profiles.<name>.cdpUrl(oubrowser.cdpUrl) pour vous attacher à un navigateur distant basé sur Chromium. Dans ce cas, OpenClaw ne lancera pas de navigateur local. - Pour les services CDP gérés en externe sur loopback (par exemple Browserless dans
Docker publié sur
127.0.0.1), définissez égalementattachOnly: true. CDP loopback sansattachOnlyest traité comme un profil de navigateur local géré par OpenClaw. headlessn’affecte que les profils gérés locaux qu’OpenClaw lance. Il ne redémarre ni ne modifie les navigateurs avec session existante ou CDP distants.executablePathsuit la même règle de profil géré local. Le modifier sur un profil géré local en cours d’exécution marque ce profil pour redémarrage/réconciliation afin que le prochain lancement utilise le nouveau binaire.
- profils gérés locaux :
openclaw browser stoparrête le processus de navigateur lancé par OpenClaw - profils attach-only et CDP distants :
openclaw browser stopferme la session de contrôle active et libère les surcharges d’émulation Playwright/CDP (viewport, jeu de couleurs, locale, fuseau horaire, mode hors ligne et état similaire), même si aucun processus de navigateur n’a été lancé par OpenClaw
- Jetons de requête (par exemple,
https://provider.example?token=<token>) - Authentification HTTP Basic (par exemple,
https://user:pass@provider.example)
/json/* et lors de la connexion
au WebSocket CDP. Préférez les variables d’environnement ou les gestionnaires de secrets pour les
jetons plutôt que de les valider dans des fichiers de configuration.
Proxy de navigateur Node (par défaut sans configuration)
Si vous exécutez un hôte Node sur la machine qui possède votre navigateur, OpenClaw peut acheminer automatiquement les appels d’outils de navigateur vers ce Node sans configuration supplémentaire du navigateur. C’est le chemin par défaut pour les gateways distants. Notes :- L’hôte Node expose son serveur local de contrôle du navigateur via une commande proxy.
- Les profils proviennent de la configuration
browser.profilespropre au Node (identique au local). nodeHost.browserProxy.allowProfilesest facultatif. Laissez-le vide pour le comportement historique/par défaut : tous les profils configurés restent accessibles via le proxy, y compris les routes de création/suppression de profils.- Si vous définissez
nodeHost.browserProxy.allowProfiles, OpenClaw le traite comme une limite de moindre privilège : seuls les profils de la liste d’autorisation peuvent être ciblés, et les routes persistantes de création/suppression de profils sont bloquées sur la surface proxy. - Désactivez-le si vous n’en voulez pas :
- Sur le Node :
nodeHost.browserProxy.enabled=false - Sur le gateway :
gateway.nodes.browser.mode="off"
- Sur le Node :
Browserless (CDP distant hébergé)
Browserless est un service Chromium hébergé qui expose des URL de connexion CDP via HTTPS et WebSocket. OpenClaw peut utiliser l’une ou l’autre forme, mais pour un profil de navigateur distant, l’option la plus simple est l’URL WebSocket directe issue de la documentation de connexion de Browserless. Exemple :- Remplacez
<BROWSERLESS_API_KEY>par votre vrai jeton Browserless. - Choisissez le point de terminaison de région qui correspond à votre compte Browserless (voir leur documentation).
- Si Browserless vous donne une URL de base HTTPS, vous pouvez soit la convertir en
wss://pour une connexion CDP directe, soit conserver l’URL HTTPS et laisser OpenClaw découvrir/json/version.
Browserless Docker sur le même hôte
Lorsque Browserless est auto-hébergé dans Docker et qu’OpenClaw s’exécute sur l’hôte, traitez Browserless comme un service CDP géré en externe :browser.profiles.browserless.cdpUrl doit être accessible depuis le
processus OpenClaw. Browserless doit également annoncer un point de terminaison accessible correspondant ;
définissez EXTERNAL de Browserless sur cette même base WebSocket publique-pour-OpenClaw, par exemple
ws://127.0.0.1:3000, ws://browserless:3000 ou une adresse stable de réseau Docker
privé. Si /json/version renvoie webSocketDebuggerUrl pointant vers
une adresse qu’OpenClaw ne peut pas atteindre, CDP HTTP peut sembler sain tandis que l’attachement
WebSocket échoue tout de même.
Ne laissez pas attachOnly non défini pour un profil Browserless loopback. Sans
attachOnly, OpenClaw traite le port loopback comme un profil de navigateur local géré
et peut signaler que le port est utilisé mais n’appartient pas à OpenClaw.
Fournisseurs CDP WebSocket directs
Certains services de navigateur hébergés exposent un point de terminaison WebSocket direct plutôt que la découverte CDP standard basée sur HTTP (/json/version). OpenClaw accepte trois
formes d’URL CDP et choisit automatiquement la bonne stratégie de connexion :
- Découverte HTTP(S) -
http://host[:port]ouhttps://host[:port]. OpenClaw appelle/json/versionpour découvrir l’URL du débogueur WebSocket, puis se connecte. Aucun fallback WebSocket. - Points de terminaison WebSocket directs -
ws://host[:port]/devtools/<kind>/<id>ouwss://...avec un chemin/devtools/browser|page|worker|shared_worker|service_worker/<id>. OpenClaw se connecte directement via une négociation WebSocket et ignore entièrement/json/version. - Racines WebSocket nues -
ws://host[:port]ouwss://host[:port]sans chemin/devtools/...(par exemple Browserless, Browserbase). OpenClaw tente d’abord la découverte HTTP/json/version(en normalisant le schéma enhttp/https) ; si la découverte renvoie unwebSocketDebuggerUrl, il est utilisé, sinon OpenClaw revient à une négociation WebSocket directe à la racine nue. Si le point de terminaison WebSocket annoncé rejette la négociation CDP mais que la racine nue configurée l’accepte, OpenClaw revient également à cette racine. Cela permet à unws://nu pointant vers un Chrome local de se connecter tout de même, puisque Chrome n’accepte les mises à niveau WebSocket que sur le chemin spécifique par cible depuis/json/version, tandis que les fournisseurs hébergés peuvent toujours utiliser leur point de terminaison WebSocket racine lorsque leur point de terminaison de découverte annonce une URL à courte durée de vie qui ne convient pas à Playwright CDP.
Browserbase
Browserbase est une plateforme cloud pour exécuter des navigateurs headless avec résolution CAPTCHA intégrée, mode furtif et proxys résidentiels.- Inscrivez-vous et copiez votre clé API depuis le tableau de bord Overview.
- Remplacez
<BROWSERBASE_API_KEY>par votre vraie clé API Browserbase. - Browserbase crée automatiquement une session de navigateur lors de la connexion WebSocket, donc aucune étape de création manuelle de session n’est nécessaire.
- L’offre gratuite autorise une session simultanée et une heure de navigateur par mois. Consultez les tarifs pour les limites des offres payantes.
- Consultez la documentation Browserbase pour la référence API complète, les guides SDK et les exemples d’intégration.
Sécurité
Idées clés :- Le contrôle du navigateur est limité au loopback ; l’accès passe par l’authentification du Gateway ou par l’appairage de nœuds.
- L’API HTTP autonome du navigateur en loopback utilise uniquement l’authentification par secret partagé :
l’authentification Bearer par jeton de Gateway,
x-openclaw-password, ou l’authentification HTTP Basic avec le mot de passe de Gateway configuré. - Les en-têtes d’identité Tailscale Serve et
gateway.auth.mode: "trusted-proxy"n’authentifient pas cette API autonome du navigateur en loopback. - Si le contrôle du navigateur est activé et qu’aucune authentification par secret partagé n’est configurée, OpenClaw
génère un jeton de Gateway valable uniquement à l’exécution pour ce démarrage. Configurez
explicitement
gateway.auth.token,gateway.auth.password,OPENCLAW_GATEWAY_TOKENouOPENCLAW_GATEWAY_PASSWORDsi les clients ont besoin d’un secret stable entre les redémarrages. - OpenClaw ne génère pas automatiquement ce jeton lorsque
gateway.auth.modeest déjàpassword,noneoutrusted-proxy. - Gardez le Gateway et tout hôte de nœud sur un réseau privé (Tailscale) ; évitez toute exposition publique.
- Traitez les URL/jetons CDP distants comme des secrets ; privilégiez les variables d’environnement ou un gestionnaire de secrets.
- Privilégiez les points de terminaison chiffrés (HTTPS ou WSS) et les jetons à durée de vie courte lorsque c’est possible.
- Évitez d’intégrer des jetons à longue durée de vie directement dans les fichiers de configuration.
Profils (plusieurs navigateurs)
OpenClaw prend en charge plusieurs profils nommés (configurations de routage). Les profils peuvent être :- openclaw-managed : une instance de navigateur dédiée basée sur Chromium avec son propre répertoire de données utilisateur + port CDP
- remote : une URL CDP explicite (navigateur basé sur Chromium exécuté ailleurs)
- session existante : votre profil Chrome existant via la connexion automatique Chrome DevTools MCP
- Le profil
openclawest créé automatiquement s’il est absent. - Le profil
userest intégré pour l’attachement à une session existante Chrome MCP. - Les profils de session existante sont optionnels au-delà de
user; créez-les avec--driver existing-session. - Les ports CDP locaux sont attribués par défaut dans la plage 18800-18899.
- La suppression d’un profil déplace son répertoire de données local vers la corbeille.
?profile=<name> ; la CLI utilise --browser-profile.
Session existante via Chrome DevTools MCP
OpenClaw peut aussi s’attacher à un profil de navigateur basé sur Chromium déjà en cours d’exécution au moyen du serveur Chrome DevTools MCP officiel. Cela réutilise les onglets et l’état de connexion déjà ouverts dans ce profil de navigateur. Références officielles de contexte et de configuration :- Chrome for Developers : Utiliser Chrome DevTools MCP avec votre session de navigateur
- README Chrome DevTools MCP
user
- Le profil intégré
userutilise la connexion automatique Chrome MCP, qui cible le profil local Google Chrome par défaut.
userDataDir pour Brave, Edge, Chromium ou un profil Chrome non par défaut.
~ s’étend vers le répertoire personnel de votre système d’exploitation :
- Ouvrez la page d’inspection de ce navigateur pour le débogage distant.
- Activez le débogage distant.
- Gardez le navigateur en cours d’exécution et approuvez l’invite de connexion lorsqu’OpenClaw s’attache.
- Chrome :
chrome://inspect/#remote-debugging - Brave :
brave://inspect/#remote-debugging - Edge :
edge://inspect/#remote-debugging
statusaffichedriver: existing-sessionstatusaffichetransport: chrome-mcpstatusafficherunning: truetabsliste les onglets de navigateur déjà ouvertssnapshotrenvoie des refs depuis l’onglet actif sélectionné
- le navigateur cible basé sur Chromium est en version
144+ - le débogage distant est activé dans la page d’inspection de ce navigateur
- le navigateur a affiché l’invite de consentement à l’attachement et vous l’avez acceptée
openclaw doctormigre l’ancienne configuration de navigateur basée sur extension et vérifie que Chrome est installé localement pour les profils de connexion automatique par défaut, mais il ne peut pas activer à votre place le débogage distant côté navigateur
- Utilisez
profile="user"lorsque vous avez besoin de l’état connecté du navigateur de l’utilisateur. - Si vous utilisez un profil personnalisé de session existante, transmettez ce nom de profil explicite.
- Choisissez ce mode uniquement lorsque l’utilisateur est devant l’ordinateur pour approuver l’invite d’attachement.
- le Gateway ou l’hôte de nœud peut lancer
npx chrome-devtools-mcp@latest --autoConnect
- Ce chemin présente plus de risques que le profil isolé
openclaw, car il peut agir dans votre session de navigateur connectée. - OpenClaw ne lance pas le navigateur pour ce pilote ; il s’y attache seulement.
- OpenClaw utilise ici le flux officiel Chrome DevTools MCP
--autoConnect. SiuserDataDirest défini, il est transmis pour cibler ce répertoire de données utilisateur. - La session existante peut s’attacher sur l’hôte sélectionné ou via un nœud de navigateur connecté. Si Chrome se trouve ailleurs et qu’aucun nœud de navigateur n’est connecté, utilisez plutôt CDP distant ou un hôte de nœud.
Lancement Chrome MCP personnalisé
Remplacez le serveur Chrome DevTools MCP lancé par profil lorsque le flux par défautnpx chrome-devtools-mcp@latest ne correspond pas à ce que vous voulez (hôtes hors ligne,
versions épinglées, binaires vendus avec le projet) :
| Champ | Fonction |
|---|---|
mcpCommand | Exécutable à lancer au lieu de npx. Résolu tel quel ; les chemins absolus sont honorés. |
mcpArgs | Tableau d’arguments transmis tel quel à mcpCommand. Remplace les arguments par défaut chrome-devtools-mcp@latest --autoConnect. |
cdpUrl est défini sur un profil de session existante, OpenClaw ignore
--autoConnect et transmet automatiquement le point de terminaison à Chrome MCP :
http(s)://...→--browserUrl <url>(point de terminaison de découverte HTTP DevTools).ws(s)://...→--wsEndpoint <url>(WebSocket CDP direct).
userDataDir ne peuvent pas être combinés : lorsque cdpUrl est défini,
userDataDir est ignoré pour le lancement Chrome MCP, car Chrome MCP s’attache au
navigateur en cours d’exécution derrière le point de terminaison au lieu d’ouvrir un répertoire
de profil.
Limitations de la fonctionnalité de session existante
Limitations de la fonctionnalité de session existante
Par rapport au profil géré
openclaw, les pilotes de session existante sont plus limités :- Captures d’écran - les captures de page et les captures d’élément
--reffonctionnent ; les sélecteurs CSS--elementne fonctionnent pas.--full-pagene peut pas être combiné avec--refou--element. Playwright n’est pas requis pour les captures d’écran de page ou d’élément basées sur ref. - Actions -
click,type,hover,scrollIntoView,dragetselectnécessitent des refs de snapshot (pas de sélecteurs CSS).click-coordsclique sur les coordonnées visibles du viewport et ne nécessite pas de ref de snapshot.clickutilise uniquement le bouton gauche.typene prend pas en chargeslowly=true; utilisezfilloupress.pressne prend pas en chargedelayMs.type,hover,scrollIntoView,drag,select,filletevaluatene prennent pas en charge les délais d’expiration par appel.selectaccepte une seule valeur. - Attente / téléversement / boîte de dialogue -
wait --urlprend en charge les motifs exacts, par sous-chaîne et glob ;wait --load networkidlen’est pas pris en charge. Les hooks de téléversement nécessitentrefouinputRef, un fichier à la fois, pas de CSSelement. Les hooks de boîte de dialogue ne prennent pas en charge le remplacement des délais d’expiration. - Fonctionnalités réservées au mode géré - les actions par lot, l’export PDF, l’interception de téléchargements et
responsebodynécessitent toujours le chemin de navigateur géré.
Garanties d’isolation
- Répertoire de données utilisateur dédié : ne touche jamais à votre profil de navigateur personnel.
- Ports dédiés : évite
9222afin d’empêcher les collisions avec les flux de développement. - Contrôle déterministe des onglets :
tabsrenvoie d’abordsuggestedTargetId, puis des handlestabIdstables tels quet1, des libellés facultatifs et letargetIdbrut. Les agents doivent réutilisersuggestedTargetId; les identifiants bruts restent disponibles pour le débogage et la compatibilité.
Sélection du navigateur
Lors d’un lancement local, OpenClaw choisit le premier disponible :- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Plateformes :
- macOS : vérifie
/Applicationset~/Applications. - Linux : vérifie les emplacements courants de Chrome/Brave/Edge/Chromium sous
/usr/bin,/snap/bin,/opt/google,/opt/brave.com,/usr/lib/chromiumet/usr/lib/chromium-browser, ainsi que le Chromium géré par Playwright sousPLAYWRIGHT_BROWSERS_PATHou~/.cache/ms-playwright. - Windows : vérifie les emplacements d’installation courants.
API de contrôle (facultative)
Pour les scripts et le débogage, le Gateway expose une petite API de contrôle HTTP limitée au loopback ainsi qu’une CLIopenclaw browser correspondante (snapshots, refs, améliorations
d’attente, sortie JSON, flux de débogage). Consultez
API de contrôle du navigateur pour la référence complète.
Dépannage
Pour les problèmes propres à Linux (en particulier snap Chromium), consultez Dépannage du navigateur. Pour les configurations à hôtes séparés WSL2 Gateway + Windows Chrome, consultez Dépannage WSL2 + Windows + CDP Chrome distant.Échec de démarrage CDP ou blocage SSRF de navigation
Ce sont des classes d’échec différentes qui pointent vers des chemins de code différents.- Échec de démarrage ou de disponibilité CDP signifie qu’OpenClaw ne peut pas confirmer que le plan de contrôle du navigateur est sain.
- Blocage SSRF de navigation signifie que le plan de contrôle du navigateur est sain, mais qu’une cible de navigation de page est rejetée par la stratégie.
- Échec de démarrage ou de disponibilité CDP :
Chrome CDP websocket for profile "openclaw" is not reachable after startRemote CDP for profile "<name>" is not reachable at <cdpUrl>Port <port> is in use for profile "<name>" but not by openclawlorsqu’un service CDP externe en loopback est configuré sansattachOnly: true
- Blocage SSRF de navigation :
- les flux
open,navigate, snapshot ou d’ouverture d’onglet échouent avec une erreur de stratégie navigateur/réseau alors questartettabsfonctionnent toujours
- les flux
- Si
startéchoue avecnot reachable after start, dépannez d’abord la disponibilité CDP. - Si
startréussit mais quetabséchoue, le plan de contrôle reste défaillant. Traitez cela comme un problème d’accessibilité CDP, et non comme un problème de navigation de page. - Si
startettabsréussissent mais queopenounavigateéchoue, le plan de contrôle du navigateur est actif et l’échec se situe dans la stratégie de navigation ou la page cible. - Si
start,tabsetopenréussissent tous, le chemin de contrôle de base du navigateur géré est sain.
- La configuration du navigateur utilise par défaut un objet de stratégie SSRF en échec fermé même lorsque vous ne configurez pas
browser.ssrfPolicy. - Pour le profil géré local en loopback
openclaw, les contrôles de santé CDP ignorent intentionnellement l’application de l’accessibilité SSRF du navigateur pour le propre plan de contrôle local d’OpenClaw. - La protection de navigation est distincte. Un résultat
startoutabsréussi ne signifie pas qu’une cibleopenounavigateultérieure est autorisée.
- Ne relâchez pas la politique SSRF du navigateur par défaut.
- Préférez des exceptions d’hôte ciblées comme
hostnameAllowlistouallowedHostnamesà un accès large au réseau privé. - Utilisez
dangerouslyAllowPrivateNetwork: trueuniquement dans des environnements volontairement approuvés où l’accès du navigateur au réseau privé est requis et vérifié.
Outils d’agent + fonctionnement du contrôle
L’agent reçoit un seul outil pour l’automatisation du navigateur :browser- doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotrenvoie une arborescence d’interface stable (IA ou ARIA).browser actutilise les IDrefde l’instantané pour cliquer/saisir/glisser/sélectionner.browser screenshotcapture les pixels (page complète, élément ou références étiquetées).browser doctorvérifie que le Gateway, le plugin, le profil, le navigateur et l’onglet sont prêts.browseraccepte :profilepour choisir un profil de navigateur nommé (openclaw, chrome ou CDP distant).target(sandbox|host|node) pour sélectionner l’emplacement du navigateur.- Dans les sessions isolées en bac à sable,
target: "host"nécessiteagents.defaults.sandbox.browser.allowHostControl=true. - Si
targetest omis : les sessions isolées en bac à sable utilisentsandboxpar défaut, les sessions non isolées utilisenthostpar défaut. - Si un nœud compatible avec le navigateur est connecté, l’outil peut s’y acheminer automatiquement sauf si vous forcez
target="host"outarget="node".
Articles connexes
- Vue d’ensemble des outils - tous les outils d’agent disponibles
- Isolation en bac à sable - contrôle du navigateur dans les environnements isolés en bac à sable
- Sécurité - risques du contrôle du navigateur et durcissement