Configuração
proxy.enabled: true permanece na configuração:
proxy.proxyUrl tem precedência sobre OPENCLAW_PROXY_URL. Se proxy.enabled for true, mas nenhuma URL válida for resolvida, os comandos protegidos falharão na inicialização em vez de recorrer ao acesso direto à rede.
Para serviços gerenciados do Gateway, armazene a URL na configuração para que ela persista após uma reinstalação, em vez de depender de uma variável de ambiente no processo em primeiro plano:
OPENCLAW_PROXY_URL é mais adequado para execuções em primeiro plano. Para usá-lo com um serviço instalado, coloque-o no ambiente persistente do serviço ($OPENCLAW_STATE_DIR/.env, por padrão ~/.openclaw/.env) e reinstale o serviço para que launchd/systemd/Scheduled Tasks o carregue.
Endpoint de proxy HTTPS com uma CA privada
proxy.tls.caFile verifica o certificado TLS do próprio endpoint de proxy. Ele não é uma configuração de confiança MITM para destinos, um certificado de cliente nem um substituto para a política de destinos do proxy. Use NODE_EXTRA_CA_CERTS somente quando todo o processo Node precisar confiar em uma CA adicional desde a inicialização (por exemplo, um sistema corporativo de inspeção TLS que assina novamente todos os certificados de destinos HTTPS) — essa variável é global para o processo e deve ser definida antes de o Node ser iniciado, portanto o OpenClaw não pode aplicá-la durante a execução como faz com proxy.tls.caFile. Prefira proxy.tls.caFile para confiar no endpoint de proxy HTTPS: seu escopo é limitado ao encaminhamento por proxy gerenciado, em vez de abranger todo o processo.
Como o encaminhamento funciona
Comproxy.enabled: true e uma URL válida, os processos protegidos em tempo de execução (openclaw gateway run, openclaw node run, openclaw agent --local) encaminham a saída HTTP e WebSocket normal por meio do proxy:
fetch, clientes baseados em undici, node:http/node:https, clientes WebSocket comuns e túneis CONNECT criados por auxiliares, além de substituir agentes HTTP do Node fornecidos pelos chamadores para que agentes explícitos (incluindo axios, got, node-fetch e clientes semelhantes baseados em agentes do Node) não possam ignorar o proxy silenciosamente.
O esquema da URL do proxy descreve o salto do OpenClaw até o proxy, não até o destino final:
http://proxy.example:3128— TCP sem criptografia até o proxy; o OpenClaw envia solicitações de proxy HTTP, incluindoCONNECTpara destinos HTTPS.https://proxy.example:8443— o OpenClaw abre uma conexão TLS com o próprio proxy (verificando o certificado dele) e envia solicitações de proxy HTTP dentro dessa sessão.
CONNECT e inicia o TLS do destino por meio desse túnel.
Enquanto o proxy está ativo, o OpenClaw limpa no_proxy/NO_PROXY. Essas listas de desvio são baseadas no destino; manter localhost ou 127.0.0.1 nelas permitiria que alvos de SSRF ignorassem completamente o proxy. No encerramento, o OpenClaw restaura o ambiente de proxy anterior e redefine o estado de encaminhamento em cache.
Alguns plugins têm um transporte personalizado que precisa de sua própria integração com o proxy, mesmo quando o encaminhamento no nível do processo está ativo. O cliente da Bot API do Telegram usa seu próprio dispatcher HTTP/1 do undici e, separadamente, respeita as variáveis de ambiente de proxy do processo, além do fallback OPENCLAW_PROXY_URL.
Modo de loopback do Gateway
Os clientes locais do plano de controle do Gateway normalmente se conectam a um WebSocket de loopback, comows://127.0.0.1:18789. proxy.loopbackMode controla se esse tráfego ignora o proxy gerenciado:
O desvio do plano de controle do Gateway é limitado a
localhost e URLs com IPs de loopback literais — use ws://127.0.0.1:18789, ws://[::1]:18789 ou ws://localhost:18789. Outros nomes de host são encaminhados como tráfego comum.
Contêineres
Para comandosopenclaw --container ..., o OpenClaw encaminha OPENCLAW_PROXY_URL para a CLI filha direcionada ao contêiner quando a variável está definida. A URL deve ser acessível de dentro do contêiner — nesse contexto, 127.0.0.1 se refere ao próprio contêiner, não ao host. O OpenClaw rejeita URLs de proxy de loopback para comandos direcionados a contêineres, a menos que você defina OPENCLAW_CONTAINER_ALLOW_LOOPBACK_PROXY_URL=1 para substituir explicitamente essa verificação.
Termos relacionados a proxy
proxy.enabled/proxy.proxyUrl— encaminhamento por proxy de saída para o tráfego de saída em tempo de execução. Esta página.gateway.auth.mode: "trusted-proxy"— autenticação por proxy reverso com reconhecimento de identidade para acesso ao Gateway. Consulte Autenticação por proxy confiável.openclaw proxy— proxy local de depuração e inspetor de capturas para desenvolvimento e suporte. Consulte openclaw proxy.tools.web.fetch.useTrustedEnvProxy— opção para permitir queweb_fetchuse um proxy HTTP(S) de ambiente controlado pelo operador para resolver o DNS, mantendo por padrão a fixação estrita de DNS e a política de nomes de host. Consulte Busca na Web.- Configurações de proxy específicas de canal ou provedor — substituições específicas do proprietário para um único transporte. Prefira o proxy de rede gerenciado para controlar centralmente o tráfego de saída em todo o ambiente de execução.
Validação do proxy
A política de destinos do proxy é o limite de segurança efetivo; o OpenClaw não pode verificar se o seu proxy bloqueia os alvos corretos. Configure-o para:- Escutar somente no loopback ou em uma interface privada confiável, acessível apenas pelo processo/host/contêiner/conta de serviço do OpenClaw.
- Resolver os destinos por conta própria e bloqueá-los por IP após a resolução de DNS, no momento da conexão, tanto para HTTP sem criptografia quanto para túneis HTTPS
CONNECT. - Rejeitar desvios baseados em destino para intervalos de loopback, privados, link-local, de metadados, multicast, reservados e de documentação.
- Evitar listas de nomes de host permitidos, a menos que você confie totalmente no caminho de resolução de DNS.
- Registrar destino, decisão, status e motivo — nunca corpos de solicitações, cabeçalhos de autorização, cookies ou outros segredos.
- Manter a política sob controle de versão e revisar as alterações como sensíveis à segurança.
Se
proxy.enabled não for true e nenhuma --proxy-url for fornecida, o comando relatará um problema de configuração em vez de realizar a validação; passe --proxy-url para uma verificação preliminar pontual antes de alterar a configuração.
Sem --allowed-url/--denied-url, as verificações padrão são: https://example.com/ deve ser acessada com êxito, e um servidor sentinela temporário em local loopback, que o proxy não deve conseguir acessar, deve ser bloqueado. A verificação de local loopback é aprovada quando ocorre uma falha de transporte ou uma resposta que não seja 2xx e não contenha o token exclusivo da execução do servidor sentinela; ela falha quando ocorre uma resposta 2xx sem o token (um êxito inesperado proveniente de algo diferente do servidor sentinela) e, principalmente, quando qualquer resposta contém o token correspondente, pois isso comprova que o proxy realmente encaminhou um destino de local loopback que deveria ter negado. Destinos --denied-url personalizados não têm esse token sentinela, portanto adotam falha segura: qualquer resposta HTTP conta como acessível (falha), e um erro de transporte é relatado como inconclusivo, em vez de comprovadamente bloqueado, porque o OpenClaw não consegue confirmar se o proxy negou uma origem acessível ou se algo diferente deu errado. --apns-reachable envia um token de provedor intencionalmente inválido; portanto, uma resposta 403 InvalidProviderToken serve como comprovação de que o túnel alcançou a Apple. O comando encerra com código 1 em qualquer falha de validação; as credenciais da URL do proxy são ocultadas tanto na saída de texto quanto na saída JSON.
curl (a solicitação pública deve ser concluída com êxito; as solicitações de local loopback e de metadados devem ser bloqueadas pelo próprio proxy — o curl sozinho não consegue distinguir uma negação do proxy de uma origem inacessível como o servidor sentinela integrado do openclaw proxy validate consegue):
Destinos cujo bloqueio é recomendado
Lista inicial de bloqueios para qualquer proxy de encaminhamento, firewall ou política de saída. O classificador de SSRF do próprio OpenClaw está emsrc/infra/net/ssrf.ts e packages/net-policy/src/ip.ts (BLOCKED_HOSTNAMES, BLOCKED_IPV4_SPECIAL_USE_RANGES, BLOCKED_IPV6_SPECIAL_USE_RANGES, o prefixo de referência da RFC 2544 e o tratamento de IPv4 incorporado para formatos NAT64/6to4/Teredo/ISATAP/mapeados para IPv4) — são referências úteis, mas o OpenClaw não exporta nem aplica essas regras no seu proxy externo.
Adicione quaisquer outros hosts de metadados ou intervalos reservados documentados pelo seu provedor de nuvem ou plataforma de rede.
Limites
- Essa é uma cobertura no nível do processo para clientes HTTP/WebSocket JavaScript, não uma sandbox de rede no nível do sistema operacional.
- Soquetes
net,tlsehttp2brutos, complementos nativos e processos filhos que não sejam do OpenClaw podem contornar o roteamento no nível do Node, a menos que herdem e respeitem as variáveis de ambiente do proxy. CLIs filhas do OpenClaw criadas por fork herdam a URL do proxy gerenciado e o estado deproxy.loopbackMode. - WebUIs locais do usuário e servidores de modelos locais não são abrangidos por uma exceção geral para a rede local — inclua-os na lista de permissões da política de proxy do operador, se necessário. A exceção é o caminho direto protegido do provedor integrado de embeddings de memória do Ollama, limitado à origem exata de local loopback do host obtida de seu
baseUrlconfigurado; hosts do Ollama na LAN, tailnet, rede privada e internet pública ainda usam o proxy gerenciado. - O encaminhamento upstream direto do proxy de depuração local (para solicitações de proxy e túneis
CONNECT) fica desativado por padrão enquanto o modo de proxy gerenciado está ativo; ative-o somente para diagnósticos locais aprovados. - O OpenClaw não inspeciona, testa nem certifica sua política de proxy. Trate alterações na política de proxy como mudanças operacionais sensíveis à segurança.