OpenClaw pode executar um perfil dedicado do Chrome/Brave/Edge/Chromium que o agente controla. Ele é isolado do seu navegador pessoal e é gerenciado por um pequeno serviço de controle local dentro do Gateway (somente loopback). Visão para iniciantes: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.
- Pense nele como um navegador separado, exclusivo para o agente.
- O perfil
openclawnão toca no perfil do seu navegador pessoal. - O agente pode abrir abas, ler páginas, clicar e digitar em uma faixa segura.
- O perfil
userintegrado se conecta à sua sessão real do Chrome já autenticada via Chrome MCP.
O que você recebe
- Um perfil de navegador separado chamado openclaw (acento laranja por padrão).
- Controle determinístico de abas (listar/abrir/focar/fechar).
- Ações do agente (clicar/digitar/arrastar/selecionar), snapshots, capturas de tela, PDFs.
- Uma skill
browser-automationincluída que ensina aos agentes o loop de recuperação de snapshot, aba estável, referência obsoleta e bloqueador manual quando o Plugin de navegador está habilitado. - Suporte opcional a múltiplos perfis (
openclaw,work,remote, …).
Início rápido
openclaw browser estiver totalmente ausente, ou se o agente disser que a ferramenta de navegador
está indisponível, vá para Comando ou ferramenta de navegador ausente.
Controle de Plugin
A ferramentabrowser padrão é um Plugin incluído. Desabilite-o para substituí-lo por outro Plugin que registre o mesmo nome de ferramenta browser:
plugins.entries.browser.enabled e browser.enabled=true. Desabilitar apenas o Plugin remove a CLI openclaw browser, o método browser.request do Gateway, a ferramenta do agente e o serviço de controle como uma unidade; sua configuração browser.* permanece intacta para uma substituição.
Alterações na configuração do navegador exigem a reinicialização do Gateway para que o Plugin possa registrar novamente seu serviço.
Orientação para o agente
Observação sobre perfil de ferramentas:tools.profile: "coding" inclui web_search e
web_fetch, mas não inclui a ferramenta browser completa. Se o agente ou um
subagente criado precisar usar automação de navegador, adicione o navegador na etapa de
perfil:
agents.list[].tools.alsoAllow: ["browser"].
tools.subagents.tools.allow: ["browser"] sozinho não é suficiente porque a política de subagente
é aplicada depois da filtragem por perfil.
O Plugin de navegador vem com dois níveis de orientação para o agente:
- A descrição da ferramenta
browsercarrega o contrato compacto sempre ativo: escolha o perfil correto, mantenha refs na mesma aba, usetabId/rótulos para direcionamento de abas e carregue a skill de navegador para trabalho em várias etapas. - A skill
browser-automationincluída carrega o loop operacional mais longo: verifique status/abas primeiro, rotule abas da tarefa, faça snapshot antes de agir, faça novo snapshot após mudanças na UI, recupere refs obsoletas uma vez e relate login/2FA/captcha ou bloqueadores de câmera/microfone como ação manual em vez de adivinhar.
Comando ou ferramenta de navegador ausente
Seopenclaw browser for desconhecido após uma atualização, browser.request estiver ausente ou o agente relatar que a ferramenta de navegador está indisponível, a causa comum é uma lista plugins.allow que omite browser e não existe nenhum bloco raiz de configuração browser. Adicione-o:
browser, por exemplo browser.enabled=true ou browser.profiles.<name>, ativa o Plugin de navegador incluído mesmo sob um plugins.allow restritivo, correspondendo ao comportamento de configuração de canais. plugins.entries.browser.enabled=true e tools.alsoAllow: ["browser"] não substituem por si só a participação na lista de permissões. Remover plugins.allow por completo também restaura o padrão.
Perfis: openclaw vs user
openclaw: navegador gerenciado e isolado (nenhuma extensão necessária).user: perfil integrado de conexão do Chrome MCP para sua sessão real do Chrome já autenticada.
- Padrão: use o navegador isolado
openclaw. - Prefira
profile="user"quando sessões autenticadas existentes forem importantes e o usuário estiver no computador para clicar/aprovar qualquer prompt de conexão. profileé a substituição explícita quando você quer um modo de navegador específico.
browser.defaultProfile: "openclaw" se quiser o modo gerenciado por padrão.
Configuração
As configurações do navegador ficam em~/.openclaw/openclaw.json.
Portas e acessibilidade
Portas e acessibilidade
- O serviço de controle se vincula ao loopback em uma porta derivada de
gateway.port(padrão18791= gateway + 2). Sobrescrevergateway.portouOPENCLAW_GATEWAY_PORTdesloca as portas derivadas na mesma família. - Perfis locais
openclawatribuem automaticamentecdpPort/cdpUrl; defina-os apenas para CDP remoto.cdpUrlusa por padrão a porta CDP local gerenciada quando não definida. remoteCdpTimeoutMsse aplica a verificações de acessibilidade HTTP de CDP remoto eattachOnlye a solicitações HTTP de abertura de abas;remoteCdpHandshakeTimeoutMsse aplica aos handshakes CDP WebSocket deles.localLaunchTimeoutMsé o orçamento para um processo gerenciado do Chrome iniciado localmente expor seu endpoint HTTP CDP.localCdpReadyTimeoutMsé o orçamento seguinte para prontidão do websocket CDP depois que o processo é descoberto. Aumente esses valores no Raspberry Pi, VPS de baixo custo ou hardware mais antigo em que o Chromium inicia lentamente. Os valores devem ser inteiros positivos até120000ms; valores de configuração inválidos são rejeitados.- Falhas repetidas de inicialização/prontidão do Chrome gerenciado são protegidas por circuit breaker por perfil. Após várias falhas consecutivas, o OpenClaw pausa brevemente novas tentativas de inicialização em vez de iniciar Chromium em toda chamada de ferramenta de navegador. Corrija o problema de inicialização, desabilite o navegador se ele não for necessário ou reinicie o Gateway após o reparo.
actionTimeoutMsé o orçamento padrão para solicitaçõesactdo navegador quando o chamador não passatimeoutMs. O transporte do cliente adiciona uma pequena janela de folga para que esperas longas possam terminar em vez de expirar no limite HTTP.tabCleanupé uma limpeza de melhor esforço para abas abertas por sessões de navegador do agente principal. A limpeza de ciclo de vida de subagente, cron e ACP ainda fecha suas abas rastreadas explícitas no fim da sessão; sessões principais mantêm abas ativas reutilizáveis e depois fecham abas rastreadas ociosas ou excedentes em segundo plano.
Política de SSRF
Política de SSRF
- A navegação do navegador e a abertura de abas são protegidas contra SSRF antes da navegação e, em melhor esforço, verificadas novamente na URL
http(s)final depois. - No modo SSRF estrito, a descoberta de endpoint CDP remoto e sondagens
/json/version(cdpUrl) também são verificadas. - As variáveis de ambiente
HTTP_PROXY,HTTPS_PROXY,ALL_PROXYeNO_PROXYdo Gateway/provedor não aplicam proxy automaticamente ao navegador gerenciado pelo OpenClaw. O Chrome gerenciado é iniciado diretamente por padrão para que as configurações de proxy do provedor não enfraqueçam as verificações SSRF do navegador. - Para aplicar proxy ao próprio navegador gerenciado, passe flags explícitas de proxy do Chrome por meio de
browser.extraArgs, como--proxy-server=...ou--proxy-pac-url=.... O modo SSRF estrito bloqueia roteamento explícito de proxy do navegador, a menos que o acesso do navegador à rede privada esteja habilitado intencionalmente. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkfica desativado por padrão; habilite apenas quando o acesso do navegador à rede privada for intencionalmente confiável.browser.ssrfPolicy.allowPrivateNetworkcontinua compatível como alias legado.
Comportamento do perfil
Comportamento do perfil
attachOnly: truesignifica nunca iniciar um navegador local; apenas anexar se já houver um em execução.headlesspode ser definido globalmente ou por perfil local gerenciado. Valores por perfil substituembrowser.headless, então um perfil iniciado localmente pode permanecer headless enquanto outro continua visível.POST /start?headless=trueeopenclaw browser start --headlesssolicitam um início headless de uso único para perfis locais gerenciados sem reescreverbrowser.headlessou a configuração do perfil. Perfis de sessão existente, somente anexação e CDP remoto rejeitam a substituição porque o OpenClaw não inicia esses processos de navegador.- Em hosts Linux sem
DISPLAYouWAYLAND_DISPLAY, perfis locais gerenciados passam automaticamente para headless por padrão quando nem o ambiente nem a configuração de perfil/global escolhem explicitamente o modo com interface.openclaw browser status --jsonrelataheadlessSourcecomoenv,profile,config,request,linux-display-fallbackoudefault. OPENCLAW_BROWSER_HEADLESS=1força inícios locais gerenciados em modo headless para o processo atual.OPENCLAW_BROWSER_HEADLESS=0força o modo com interface para inícios comuns e retorna um erro acionável em hosts Linux sem um servidor de exibição; uma solicitação explícitastart --headlessainda prevalece para esse início único.executablePathpode ser definido globalmente ou por perfil local gerenciado. Valores por perfil substituembrowser.executablePath, então diferentes perfis gerenciados podem iniciar diferentes navegadores baseados em Chromium. Ambas as formas aceitam~para o diretório inicial do seu SO.color(no nível superior e por perfil) tinge a interface do navegador para que você possa ver qual perfil está ativo.- O perfil padrão é
openclaw(autônomo gerenciado). UsedefaultProfile: "user"para optar pelo navegador do usuário autenticado. - Ordem de detecção automática: navegador padrão do sistema se for baseado em Chromium; caso contrário, Chrome → Brave → Edge → Chromium → Chrome Canary.
driver: "existing-session"usa Chrome DevTools MCP em vez de CDP bruto. Não definacdpUrlpara esse driver.- Defina
browser.profiles.<name>.userDataDirquando um perfil de sessão existente deve se anexar a um perfil de usuário Chromium não padrão (Brave, Edge etc.). Esse caminho também aceita~para o diretório inicial do seu SO.
Usar Brave ou outro navegador baseado em Chromium
Se o navegador padrão do sistema for baseado em Chromium (Chrome/Brave/Edge/etc), o OpenClaw o usa automaticamente. Definabrowser.executablePath para substituir
a detecção automática. Valores executablePath de nível superior e por perfil aceitam ~
para o diretório inicial do seu SO:
- macOS
- Windows
- Linux
executablePath por perfil afeta apenas perfis locais gerenciados que o OpenClaw
inicia. Perfis existing-session se anexam a um navegador já em execução
em vez disso, e perfis CDP remotos usam o navegador por trás de cdpUrl.
Controle local vs. remoto
- Controle local (padrão): o Gateway inicia o serviço de controle local loopback e pode iniciar um navegador local.
- Controle remoto (host Node): execute um host Node na máquina que tem o navegador; o Gateway encaminha ações do navegador para ele.
- CDP remoto: defina
browser.profiles.<name>.cdpUrl(oubrowser.cdpUrl) para se anexar a um navegador remoto baseado em Chromium. Nesse caso, o OpenClaw não iniciará um navegador local. - Para serviços CDP gerenciados externamente em loopback (por exemplo, Browserless em
Docker publicado em
127.0.0.1), defina tambémattachOnly: true. CDP em loopback semattachOnlyé tratado como um perfil de navegador local gerenciado pelo OpenClaw. headlessafeta apenas perfis locais gerenciados que o OpenClaw inicia. Ele não reinicia nem altera navegadores de sessão existente ou CDP remoto.executablePathsegue a mesma regra de perfil local gerenciado. Alterá-lo em um perfil local gerenciado em execução marca esse perfil para reinício/reconciliação para que o próximo início use o novo binário.
- perfis locais gerenciados:
openclaw browser stopinterrompe o processo do navegador que o OpenClaw iniciou - perfis somente anexação e CDP remoto:
openclaw browser stopfecha a sessão de controle ativa e libera substituições de emulação Playwright/CDP (viewport, esquema de cores, localidade, fuso horário, modo offline e estado semelhante), mesmo que nenhum processo de navegador tenha sido iniciado pelo OpenClaw
- Tokens de consulta (por exemplo,
https://provider.example?token=<token>) - Autenticação HTTP Basic (por exemplo,
https://user:pass@provider.example)
/json/* e ao se conectar
ao WebSocket CDP. Prefira variáveis de ambiente ou gerenciadores de segredos para
tokens em vez de registrá-los em arquivos de configuração.
Proxy de navegador Node (padrão sem configuração)
Se você executa um host Node na máquina que tem seu navegador, o OpenClaw pode rotear automaticamente chamadas de ferramentas de navegador para esse Node sem nenhuma configuração extra de navegador. Esse é o caminho padrão para gateways remotos. Observações:- O host Node expõe seu servidor local de controle de navegador por meio de um comando de proxy.
- Perfis vêm da própria configuração
browser.profilesdo Node (igual ao local). nodeHost.browserProxy.allowProfilesé opcional. Deixe-o vazio para o comportamento legado/padrão: todos os perfis configurados permanecem acessíveis por meio do proxy, incluindo rotas de criação/exclusão de perfil.- Se você definir
nodeHost.browserProxy.allowProfiles, o OpenClaw o trata como um limite de privilégio mínimo: apenas perfis em lista de permissões podem ser direcionados, e rotas persistentes de criação/exclusão de perfil são bloqueadas na superfície do proxy. - Desative se não quiser isso:
- No Node:
nodeHost.browserProxy.enabled=false - No gateway:
gateway.nodes.browser.mode="off"
- No Node:
Browserless (CDP remoto hospedado)
Browserless é um serviço Chromium hospedado que expõe URLs de conexão CDP por HTTPS e WebSocket. O OpenClaw pode usar qualquer uma das formas, mas para um perfil de navegador remoto a opção mais simples é a URL WebSocket direta da documentação de conexão do Browserless. Exemplo:- Substitua
<BROWSERLESS_API_KEY>pelo seu token real do Browserless. - Escolha o endpoint de região que corresponda à sua conta Browserless (veja a documentação deles).
- Se o Browserless fornecer uma URL base HTTPS, você pode convertê-la para
wss://para uma conexão CDP direta ou manter a URL HTTPS e deixar o OpenClaw descobrir/json/version.
Browserless Docker no mesmo host
Quando o Browserless é auto-hospedado no Docker e o OpenClaw é executado no host, trate o Browserless como um serviço CDP gerenciado externamente:browser.profiles.browserless.cdpUrl deve ser acessível pelo
processo do OpenClaw. O Browserless também deve anunciar um endpoint acessível correspondente;
defina EXTERNAL do Browserless para a mesma base WebSocket pública para o OpenClaw, como
ws://127.0.0.1:3000, ws://browserless:3000 ou um endereço de rede Docker
privada estável. Se /json/version retornar webSocketDebuggerUrl apontando para
um endereço que o OpenClaw não consegue acessar, o HTTP CDP pode parecer saudável enquanto o anexo
WebSocket ainda falha.
Não deixe attachOnly indefinido para um perfil Browserless em loopback. Sem
attachOnly, o OpenClaw trata a porta de loopback como um perfil de navegador
local gerenciado e pode relatar que a porta está em uso, mas não pertence ao OpenClaw.
Provedores CDP WebSocket diretos
Alguns serviços de navegador hospedados expõem um endpoint WebSocket direto em vez da descoberta CDP padrão baseada em HTTP (/json/version). O OpenClaw aceita três
formatos de URL CDP e escolhe a estratégia de conexão correta automaticamente:
- Descoberta HTTP(S) -
http://host[:port]ouhttps://host[:port]. O OpenClaw chama/json/versionpara descobrir a URL do depurador WebSocket e então se conecta. Sem fallback WebSocket. - Endpoints WebSocket diretos -
ws://host[:port]/devtools/<kind>/<id>ouwss://...com um caminho/devtools/browser|page|worker|shared_worker|service_worker/<id>. O OpenClaw se conecta diretamente por meio de um handshake WebSocket e ignora/json/versioncompletamente. - Raízes WebSocket simples -
ws://host[:port]ouwss://host[:port]sem caminho/devtools/...(por exemplo, Browserless, Browserbase). O OpenClaw tenta primeiro a descoberta HTTP/json/version(normalizando o esquema parahttp/https); se a descoberta retornar umwebSocketDebuggerUrl, ele é usado; caso contrário, o OpenClaw recorre a um handshake WebSocket direto na raiz simples. Se o endpoint WebSocket anunciado rejeitar o handshake CDP, mas a raiz simples configurada aceitá-lo, o OpenClaw também recorre a essa raiz. Isso permite que uma raiz simplesws://apontada para um Chrome local ainda conecte, já que o Chrome só aceita upgrades WebSocket no caminho específico por alvo de/json/version, enquanto provedores hospedados ainda podem usar seu endpoint WebSocket raiz quando o endpoint de descoberta anuncia uma URL de curta duração que não é adequada para CDP do Playwright.
Browserbase
Browserbase é uma plataforma em nuvem para executar navegadores headless com resolução de CAPTCHA integrada, modo furtivo e proxies residenciais.- Inscreva-se e copie sua API Key do painel Overview.
- Substitua
<BROWSERBASE_API_KEY>pela sua chave de API real do Browserbase. - O Browserbase cria automaticamente uma sessão de navegador na conexão WebSocket, então nenhuma etapa manual de criação de sessão é necessária.
- O nível gratuito permite uma sessão simultânea e uma hora de navegador por mês. Veja preços para limites de planos pagos.
- Veja a documentação do Browserbase para a referência completa da API, guias de SDK e exemplos de integração.
Segurança
Ideias principais:- O controle do navegador é somente por loopback; os fluxos de acesso passam pela autenticação do Gateway ou pelo pareamento de node.
- A API HTTP autônoma do navegador por loopback usa somente autenticação por segredo compartilhado:
autenticação bearer por token do gateway,
x-openclaw-passwordou autenticação HTTP Basic com a senha do gateway configurada. - Os cabeçalhos de identidade do Tailscale Serve e
gateway.auth.mode: "trusted-proxy"não autenticam esta API autônoma do navegador por loopback. - Se o controle do navegador estiver habilitado e nenhuma autenticação por segredo compartilhado estiver configurada, o OpenClaw
gerará um token de gateway apenas em runtime para essa inicialização. Configure
gateway.auth.token,gateway.auth.password,OPENCLAW_GATEWAY_TOKENouOPENCLAW_GATEWAY_PASSWORDexplicitamente se os clientes precisarem de um segredo estável entre reinicializações. - O OpenClaw não gera esse token automaticamente quando
gateway.auth.modejá épassword,noneoutrusted-proxy. - Mantenha o Gateway e quaisquer hosts de node em uma rede privada (Tailscale); evite exposição pública.
- Trate URLs/tokens de CDP remoto como segredos; prefira variáveis de ambiente ou um gerenciador de segredos.
- Prefira endpoints criptografados (HTTPS ou WSS) e tokens de curta duração quando possível.
- Evite incorporar tokens de longa duração diretamente em arquivos de configuração.
Perfis (vários navegadores)
O OpenClaw aceita vários perfis nomeados (configurações de roteamento). Perfis podem ser:- openclaw-managed: uma instância dedicada de navegador baseado em Chromium com seu próprio diretório de dados do usuário + porta CDP
- remote: uma URL CDP explícita (navegador baseado em Chromium em execução em outro lugar)
- existing session: seu perfil existente do Chrome via conexão automática do Chrome DevTools MCP
- O perfil
openclawé criado automaticamente se estiver ausente. - O perfil
useré integrado para anexação a uma sessão existente do Chrome MCP. - Perfis de sessão existente são opcionais além de
user; crie-os com--driver existing-session. - Portas CDP locais são alocadas de 18800-18899 por padrão.
- Excluir um perfil move seu diretório de dados local para a Lixeira.
?profile=<name>; a CLI usa --browser-profile.
Sessão existente via Chrome DevTools MCP
O OpenClaw também pode se anexar a um perfil de navegador baseado em Chromium em execução por meio do servidor oficial Chrome DevTools MCP. Isso reutiliza as abas e o estado de login já abertos nesse perfil de navegador. Referências oficiais de contexto e configuração: Perfil integrado:user
- O perfil integrado
userusa a conexão automática do Chrome MCP, que mira o perfil local padrão do Google Chrome.
userDataDir para Brave, Edge, Chromium ou um perfil do Chrome não padrão.
~ expande para o diretório inicial do seu sistema operacional:
- Abra a página de inspeção desse navegador para depuração remota.
- Habilite a depuração remota.
- Mantenha o navegador em execução e aprove o prompt de conexão quando o OpenClaw se anexar.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statusmostradriver: existing-sessionstatusmostratransport: chrome-mcpstatusmostrarunning: truetabslista as abas do navegador que já estão abertassnapshotretorna refs da aba ao vivo selecionada
- o navegador de destino baseado em Chromium está na versão
144+ - a depuração remota está habilitada na página de inspeção desse navegador
- o navegador exibiu e você aceitou o prompt de consentimento de anexação
openclaw doctormigra configurações antigas de navegador baseadas em plugin e verifica se o Chrome está instalado localmente para perfis padrão de conexão automática, mas não consegue habilitar a depuração remota no lado do navegador para você
- Use
profile="user"quando precisar do estado de navegador com login do usuário. - Se usar um perfil personalizado de sessão existente, passe esse nome de perfil explícito.
- Escolha este modo somente quando o usuário estiver no computador para aprovar o prompt de anexação.
- o Gateway ou host de node pode iniciar
npx chrome-devtools-mcp@latest --autoConnect
- Este caminho tem risco maior do que o perfil isolado
openclaw, porque pode agir dentro da sua sessão de navegador autenticada. - O OpenClaw não inicia o navegador para este driver; ele apenas se anexa.
- O OpenClaw usa aqui o fluxo oficial
--autoConnectdo Chrome DevTools MCP. SeuserDataDirestiver definido, ele será repassado para mirar esse diretório de dados do usuário. - A sessão existente pode se anexar no host selecionado ou por meio de um node de navegador conectado. Se o Chrome estiver em outro lugar e nenhum node de navegador estiver conectado, use CDP remoto ou um host de node em vez disso.
Inicialização personalizada do Chrome MCP
Substitua o servidor Chrome DevTools MCP iniciado por perfil quando o fluxo padrãonpx chrome-devtools-mcp@latest não for o que você quer (hosts offline,
versões fixadas, binários fornecidos no vendor):
| Campo | O que ele faz |
|---|---|
mcpCommand | Executável a iniciar em vez de npx. Resolvido como informado; caminhos absolutos são respeitados. |
mcpArgs | Array de argumentos passado literalmente para mcpCommand. Substitui os argumentos padrão chrome-devtools-mcp@latest --autoConnect. |
cdpUrl é definido em um perfil de sessão existente, o OpenClaw ignora
--autoConnect e encaminha o endpoint ao Chrome MCP automaticamente:
http(s)://...→--browserUrl <url>(endpoint de descoberta HTTP do DevTools).ws(s)://...→--wsEndpoint <url>(WebSocket CDP direto).
userDataDir não podem ser combinados: quando cdpUrl é definido,
userDataDir é ignorado para a inicialização do Chrome MCP, pois o Chrome MCP se anexa ao
navegador em execução por trás do endpoint em vez de abrir um diretório de
perfil.
Limitações do recurso de sessão existente
Limitações do recurso de sessão existente
Em comparação com o perfil gerenciado
openclaw, drivers de sessão existente são mais restritos:- Capturas de tela - capturas de página e capturas de elemento com
--reffuncionam; seletores CSS--elementnão.--full-pagenão pode ser combinado com--refou--element. Playwright não é necessário para capturas de tela de página ou de elemento baseado em ref. - Ações -
click,type,hover,scrollIntoView,drageselectexigem refs de snapshot (sem seletores CSS).click-coordsclica em coordenadas visíveis da viewport e não exige ref de snapshot.clickusa somente o botão esquerdo.typenão aceitaslowly=true; usefilloupress.pressnão aceitadelayMs.type,hover,scrollIntoView,drag,select,filleevaluatenão aceitam timeouts por chamada.selectaceita um único valor. - Espera / upload / diálogo -
wait --urlaceita padrões exatos, de substring e glob;wait --load networkidlenão é aceito. Ganchos de upload exigemrefouinputRef, um arquivo por vez, semelementCSS. Ganchos de diálogo não aceitam substituições de timeout. - Recursos somente gerenciados - ações em lote, exportação para PDF, interceptação de downloads e
responsebodyainda exigem o caminho de navegador gerenciado.
Garantias de isolamento
- Diretório dedicado de dados do usuário: nunca toca no seu perfil pessoal do navegador.
- Portas dedicadas: evita
9222para impedir colisões com fluxos de trabalho de desenvolvimento. - Controle determinístico de abas:
tabsretornasuggestedTargetIdprimeiro, depois handlestabIdestáveis comot1, rótulos opcionais e otargetIdbruto. Agentes devem reutilizarsuggestedTargetId; ids brutos permanecem disponíveis para depuração e compatibilidade.
Seleção do navegador
Ao iniciar localmente, o OpenClaw escolhe o primeiro disponível:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Plataformas:
- macOS: verifica
/Applicationse~/Applications. - Linux: verifica locais comuns do Chrome/Brave/Edge/Chromium em
/usr/bin,/snap/bin,/opt/google,/opt/brave.com,/usr/lib/chromiume/usr/lib/chromium-browser, além do Chromium gerenciado pelo Playwright emPLAYWRIGHT_BROWSERS_PATHou~/.cache/ms-playwright. - Windows: verifica locais comuns de instalação.
API de controle (opcional)
Para scripts e depuração, o Gateway expõe uma pequena API HTTP de controle somente por loopback, além de uma CLIopenclaw browser correspondente (snapshots, refs, melhorias de espera, saída
JSON, fluxos de trabalho de depuração). Consulte
API de controle do navegador para a referência completa.
Solução de problemas
Para problemas específicos do Linux (especialmente Chromium snap), consulte Solução de problemas do navegador. Para configurações com Gateway no WSL2 + Chrome no Windows em hosts separados, consulte Solução de problemas de WSL2 + Windows + CDP remoto do Chrome.Falha de inicialização do CDP vs bloqueio SSRF de navegação
Estas são classes de falha diferentes e apontam para caminhos de código diferentes.- Falha de inicialização ou prontidão do CDP significa que o OpenClaw não consegue confirmar que o plano de controle do navegador está íntegro.
- Bloqueio SSRF de navegação significa que o plano de controle do navegador está íntegro, mas um destino de navegação de página é rejeitado por política.
- Falha de inicialização ou prontidão do 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 openclawquando um serviço CDP externo por loopback é configurado semattachOnly: true
- Bloqueio SSRF de navegação:
- fluxos de
open,navigate, snapshot ou abertura de abas falham com um erro de política de navegador/rede enquantostartetabsainda funcionam
- fluxos de
- Se
startfalhar comnot reachable after start, investigue primeiro a prontidão do CDP. - Se
starttiver sucesso, mastabsfalhar, o plano de controle ainda não está íntegro. Trate isso como um problema de alcance do CDP, não como um problema de navegação de página. - Se
startetabstiverem sucesso, masopenounavigatefalhar, o plano de controle do navegador está ativo e a falha está na política de navegação ou na página de destino. - Se
start,tabseopentiverem sucesso, o caminho básico de controle do navegador gerenciado está íntegro.
- A configuração do navegador usa por padrão um objeto de política SSRF fail-closed mesmo quando você não configura
browser.ssrfPolicy. - Para o perfil gerenciado
openclawde local loopback, as verificações de integridade do CDP ignoram intencionalmente a aplicação de alcance SSRF do navegador para o plano de controle local próprio do OpenClaw. - A proteção de navegação é separada. Um resultado bem-sucedido de
startoutabsnão significa que um destino posterior deopenounavigateseja permitido.
- Não afrouxe a política de SSRF do navegador por padrão.
- Prefira exceções restritas de host, como
hostnameAllowlistouallowedHostnames, em vez de acesso amplo à rede privada. - Use
dangerouslyAllowPrivateNetwork: trueapenas em ambientes intencionalmente confiáveis nos quais o acesso do navegador à rede privada é necessário e revisado.
Ferramentas do agente + como o controle funciona
O agente recebe uma ferramenta para automação do navegador:browser- doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotretorna uma árvore de IU estável (IA ou ARIA).browser actusa os IDsrefdo snapshot para clicar/digitar/arrastar/selecionar.browser screenshotcaptura pixels (página inteira, elemento ou refs rotuladas).browser doctorverifica a prontidão do Gateway, Plugin, perfil, navegador e aba.browseraceita:profilepara escolher um perfil de navegador nomeado (openclaw, chrome ou CDP remoto).target(sandbox|host|node) para selecionar onde o navegador fica.- Em sessões em sandbox,
target: "host"exigeagents.defaults.sandbox.browser.allowHostControl=true. - Se
targetfor omitido: sessões em sandbox usamsandboxpor padrão; sessões sem sandbox usamhostpor padrão. - Se um nó com suporte a navegador estiver conectado, a ferramenta poderá rotear automaticamente para ele, a menos que você fixe
target="host"outarget="node".
Relacionados
- Visão geral das ferramentas - todas as ferramentas de agente disponíveis
- Sandboxing - controle do navegador em ambientes em sandbox
- Segurança - riscos e endurecimento do controle do navegador