Tentando usar o Claude Code em uma máquina corporativa ou via VPN, e ele não conecta com erros como estes?

Unable to connect to API. Check your internet connection
Unable to connect to API (ECONNREFUSED)
Unable to connect to API: SSL certificate verification failed.
  Check your proxy or corporate SSL certificates
fetch failed

Esses são erros de rede que significam "o Claude Code não consegue alcançar o servidor da Anthropic (api.anthropic.com)." Eles não são de autenticação (401/403), não são sobrecarga do servidor (529/500) e não são limite de taxa (429) — a requisição nunca chegou ao servidor. As causas habituais são proxies corporativos, inspeção de TLS (certificados) e firewalls, o que torna isso especialmente comum em redes corporativas. Este artigo cobre a configuração de proxy, os certificados de CA corporativa, os domínios a liberar e os passos de diagnóstico — com base em informações oficiais.

Os pontos-chave de antemão. (1) Atrás de um proxy, defina HTTPS_PROXY. (2) Para um erro de certificado causado por inspeção de TLS (Zscaler, etc.), aponte NODE_EXTRA_CA_CERTS para a CA corporativa — e nunca desative a verificação com NODE_TLS_REJECT_UNAUTHORIZED=0 (isso expõe todo o tráfego à interceptação). (3) Comece executando curl -I https://api.anthropic.com para checar "ele consegue ao menos alcançar?" — essa é a raiz da triagem.

CLAUDE CODE · NETWORK / PROXY

Ele nunca chega ao servidor

— onde ele para é o que decide a solução

Claude Code
requisição
→✗
Proxy / TLS / Firewall
muitas vezes bloqueado aqui
api.anthropic.com
Proxy
HTTPS_PROXY
Cert. TLS
NODE_EXTRA_CA_CERTS
Firewall
api.anthropic.com etc.

Primeiro execute curl -I https://api.anthropic.com para checar se ele consegue alcançar.
Quando você souber onde ele para (proxy / TLS / firewall), a configuração a aplicar fica decidida.

1. O que esse erro está te dizendo

Unable to connect to API, fetch failed, ECONNREFUSED / ETIMEDOUT significam "a requisição não chegou ao servidor da Anthropic" = ela falhou em algum ponto do TCP/TLS/DNS. Essa é a diferença decisiva em relação a outros erros: autenticação (401/403), servidor (529/500) e taxa (429) são respostas depois de alcançar o servidor, ao passo que erros de rede significam que ela nunca chegou lá.

Em redes corporativas, os bloqueios típicos se dividem em três camadas. (1) Proxy — você não pode sair diretamente e precisa rotear por um proxy corporativo que não está configurado. (2) Inspeção de TLS (certificados) — um proxy de inspeção como o Zscaler substitui os certificados, então você precisa confiar na CA raiz corporativa. (3) Firewall — os domínios necessários não estão liberados. A primeira coisa a fazer é confirmar "ele consegue alcançar?" com curl -I https://api.anthropic.com — essa única checagem separa "um problema de rede" de "todo o resto."

3 LAYERS

Onde ele para = qual configuração aplicar

1) Proxy não definido
ECONNREFUSED/ETIMEDOUT/fetch failed. Você precisa rotear pelo proxy corporativo → defina HTTPS_PROXY.
2) Erro de cert. por inspeção de TLS
SSL certificate verification failed/self-signed → coloque a CA corporativa em NODE_EXTRA_CA_CERTS. Nunca desative a verificação.
3) Domínio bloqueado pelo firewall
Domínios necessários não liberados → libere api.anthropic.com etc. (§4).
4) DNS / VPN / ferramentas locais
Could not resolve host/ENOTFOUND. DNS fora do ar, VPN com resíduos, ou Docker interceptando o tráfego.

Se curl -I https://api.anthropic.com tiver sucesso, o problema se restringe ao espaço entre o Claude Code e a rede.

2. Configuração de proxy (HTTPS_PROXY)

Quando você precisa rotear por um proxy corporativo, defina as variáveis de ambiente de proxy padrão. O Claude Code as respeita.

# Recomendado: proxy HTTPS
export HTTPS_PROXY=http://proxy.example.com:8080
# Se HTTPS não estiver disponível, HTTP_PROXY
export HTTP_PROXY=http://proxy.example.com:8080
# Destinos que ignoram o proxy (separados por espaço ou vírgula)
export NO_PROXY="localhost,127.0.0.1,.internal.example.com"

# Proxy com autenticação (evite codificar senhas no código)
export HTTPS_PROXY=http://username:password@proxy.example.com:8080

Ressalvas: proxies SOCKS não são suportados. Para proxies NTLM / Kerberos, a recomendação oficial é colocar um LLM gateway no meio e apontar ANTHROPIC_BASE_URL para ele. Além disso, se você usa servidores MCP, precisa definir explicitamente HTTPS_PROXY e NODE_EXTRA_CA_CERTS no env de cada servidor (eles não são herdados do processo pai). Essas variáveis também podem ir no bloco env do settings.json.

3. TLS e certificados de CA corporativa (o mais importante, com segurança)

O bloqueio corporativo mais comum é um erro de certificado causado por um proxy de inspeção de TLS (Zscaler, Netskope, Palo Alto, etc.) substituindo os certificados. As mensagens típicas são unable to get local issuer certificate e SELF_SIGNED_CERT_IN_CHAIN.

Para dar contexto, versões recentes do Claude Code confiam TANTO no seu conjunto de CAs embutido QUANTO no repositório de confiança do SO. Então se a CA raiz corporativa estiver no repositório de certificados do SO, muitas vezes funciona sem configuração extra (o comportamento varia por versão, então confirme a mais recente). Se não estiver no repositório do SO, aponte NODE_EXTRA_CA_CERTS para o pacote de CA (PEM) que você recebeu do TI:

# A maneira correta e segura: confiar na CA corporativa
export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

# Se o proxy exigir um certificado de cliente (mTLS)
export CLAUDE_CODE_CLIENT_CERT=/path/to/client-cert.pem
export CLAUDE_CODE_CLIENT_KEY=/path/to/client-key.pem

⚠️ NÃO faça: desativar a verificação de TLS

Desligar a verificação de certificado com NODE_TLS_REJECT_UNAUTHORIZED=0 parece "resolver", mas nunca faça isso. Isso desativa a verificação de TLS para o processo inteiro, então todo o tráfego — inclusive para api.anthropic.com — fica exposto a ataques man-in-the-middle (espionagem/adulteração). Isso arrisca vazar credenciais e código. A resposta correta é sempre "confiar adequadamente na CA corporativa via NODE_EXTRA_CA_CERTS."

Se você se deparar com um erro de certificado na hora da instalação (antes do binário existir), passe a CA para o curl: curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash.

4. Domínios para liberar no firewall

Se o seu firewall restringe destinos, libere estes domínios sobre HTTPS (443) (conforme os requisitos de rede oficiais).

DomínioUsado para
api.anthropic.comRequisições da Claude API (obrigatório)
claude.aiAutenticação da conta claude.ai
platform.claude.comAutenticação da conta do Console
downloads.claude.aiInstalador, atualização automática, plugins
raw.githubusercontent.comNotas de versão, marketplace

Telemetria (statsig.anthropic.com) e relatório de erros (*.sentry.io) são opcionais e podem ser desativados (não precisam estar na lista de liberação obrigatória). Se você gerencia as instalações por conta própria via npm, talvez não precise de downloads.claude.ai. Os domínios e faixas de IP exatos podem ser revisados, então confirme os mais recentes na página oficial de configuração de rede.

5. O fluxo de diagnóstico

Quando não conecta, vá de cima para baixo. O primeiro curl define a direção.

DIAGNOSE

Isole de cima para baixo

1
curl -I https://api.anthropic.com (Windows: curl.exe) para testar a acessibilidade. Se passar, o problema está do seu lado.
2
/doctor (ou claude doctor se ele não iniciar) e verifique as variáveis de ambiente do proxy.
3
Erro de certificado → aplique NODE_EXTRA_CA_CERTS; proxy não definido → aplique HTTPS_PROXY.
4
Tente uma conexão direta (sem VPN/proxy) para confirmar que o proxy é a causa. Peça ao TI a URL do proxy e a CA.
5
Se o curl passa mas o Claude Code falha, suspeite de DNS (resolv.conf do WSL), VPN com resíduos ou Docker interceptando o tráfego.

A regra: "teste a acessibilidade (curl) primeiro, depois aplique a configuração da camada que te travou."
Lide com certificados via NODE_EXTRA_CA_CERTS. Nunca desative a verificação.

6. Como diferenciar de erros parecidos

"Travou" também pode não ser de rede. A grande divisão é "chegou ao servidor?"

SintomaO que realmente éSolução principal
Unable to connect / fetch failed / erro de certificadoEste artigo = rede (nunca chegou ao servidor)HTTPS_PROXY / NODE_EXTRA_CA_CERTS / liberação no firewall
401 / 403 / Invalid API keyAutenticação (chegou, mas há um problema de credencial)erros de autenticação / login
529 / 500Lado do servidor (chegou, mas sobrecarregado / erro interno)erros 529/500
429 Request rejectedLimite de taxa (chegou, mas tráfego demais)Reduza o ritmo, aguarde

Um macete: erros de rede significam "nunca chegou ao servidor" (TCP/TLS/DNS), e HTTPS_PROXY ou NODE_EXTRA_CA_CERTS só ajudam nessa camada. Em contraste, 401/403, 529/500 e 429 são "respostas depois de chegar", então mexer no proxy ou na CA não vai resolvê-los. Se o curl tem sucesso ou não é o melhor indicador para separar os dois casos. Para outros erros comuns, veja a coletânea de erros.

Resumo

Os erros de rede/proxy do Claude Code (Unable to connect / fetch failed / SSL certificate verification failed, etc.) significam que a requisição nunca chegou ao servidor = uma falha de TCP/TLS/DNS. Eles são diferentes de autenticação (401/403), servidor (529/500) e taxa (429), e os culpados habituais são o proxy, a inspeção de TLS e o firewall corporativos.

As soluções: (1) atrás de um proxy, defina HTTPS_PROXY (SOCKS não suportado; NTLM/Kerberos via um gateway), (2) para erros de certificado coloque a CA corporativa em NODE_EXTRA_CA_CERTS — nunca NODE_TLS_REJECT_UNAUTHORIZED=0, (3) libere api.anthropic.com etc. no firewall. Diagnostique primeiro testando a acessibilidade com curl -I https://api.anthropic.com -> /doctor e verificação do proxy -> configurações de certificado/proxy -> uma conexão direta para confirmar -> DNS/VPN/Docker. A chave é separar rede de autenticação/servidor/taxa pela pergunta "chegou ao servidor?" Relacionados: erros de autenticação / login, erros 529/500, coletânea de erros do Claude Code.

FAQ

Q. No PC da minha empresa aparece "Unable to connect to API" e não consigo conectar.
A. Normalmente você precisa rotear por um proxy corporativo que não está configurado. Primeiro verifique a acessibilidade com curl -I https://api.anthropic.com; se falhar, defina um proxy como export HTTPS_PROXY=http://proxy.example.com:8080 (adicione user:password@ para um proxy com autenticação). Observe que SOCKS não é suportado, e para proxies NTLM/Kerberos a recomendação oficial é passar por um LLM gateway.

Q. Aparece "SSL certificate verification failed".
A. Isso normalmente é um proxy corporativo de inspeção de TLS (por exemplo, Zscaler) substituindo os certificados. Obtenha a CA raiz corporativa (PEM) com o TI e defina export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem. Se a CA corporativa já estiver no repositório de certificados do SO, pode funcionar sem configuração. Nunca desative a verificação com NODE_TLS_REJECT_UNAUTHORIZED=0 — isso expõe todo o tráfego à interceptação.

Q. Definir NODE_TLS_REJECT_UNAUTHORIZED=0 resolveu. Isso está OK?
A. Não — reverta agora. Isso desativa a verificação de certificado de TLS para o processo inteiro, deixando todo o tráfego — inclusive para api.anthropic.comindefeso contra ataques man-in-the-middle (espionagem/adulteração). É um risco de segurança sério que pode vazar credenciais e código-fonte. A única solução correta é confiar adequadamente na CA corporativa via NODE_EXTRA_CA_CERTS.

Q. Quais domínios devo liberar no firewall?
A. Sobre HTTPS (443), no mínimo libere api.anthropic.com (API), claude.ai e platform.claude.com (autenticação), downloads.claude.ai (instalador/atualizações) e raw.githubusercontent.com. Telemetria (statsig) e relatório de erros (sentry) são opcionais. Os domínios/IPs exatos podem ser revisados, então confirme os mais recentes na página oficial de configuração de rede.

Q. O curl funciona, mas só o Claude Code não conecta.
A. A causa muitas vezes está entre o Claude Code e o SO. Casos comuns: um /etc/resolv.conf do WSL apontando para um DNS morto, resíduos de VPN (por exemplo, interfaces utun antigas do macOS), ou uma ferramenta residente como o Docker interceptando o tráfego. Tente uma conexão direta sem VPN, pare as ferramentas residentes e revise o DNS, nessa ordem. Observe que erros 5xx transitórios são repetidos automaticamente até 10 vezes, então se você vir um erro enquanto o curl tem sucesso, as tentativas já foram esgotadas.