OAuth error: fetch failed

Resolved 💬 21 comments Opened Feb 24, 2025 by egarl004 Closed Feb 27, 2025

When attempting to authenticate, "fetch failed" error is presented after authenticating via web browser. Sign in methods did not yield different results.

<img width="410" alt="Image" src="https://github.com/user-attachments/assets/1ed09daa-c686-4b2c-a53b-64ce2b57df69" />

View original on GitHub ↗

21 Comments

egarl004 · 1 year ago

node version - v22.11.0
npm version - 10.9.0
Mac - 15.3.1 (24D70)

seanxwzhang · 1 year ago

Encountered the same thing, tried both chrome and edge, failed with "OAuth error: fetch failed"

➜  ~ npm --version
10.9.2
➜  ~ node --version
v23.6.0
➜  ~ sw_vers
ProductName:		macOS
ProductVersion:		15.3
BuildVersion:		24D60
➜  ~ claude --version
0.2.9
monsterooo · 1 year ago

I was in the same situation

MayBAMemory · 1 year ago

same

hadi-sg · 1 year ago

I was having the same issue but resolved when removing vpn connection. Worth a try if you're behind corporate vpn/firewall as well.

adaratech · 1 year ago

same issue... anyone solved this?

liaofeng · 1 year ago

same issue

Krushang-Shah · 1 year ago

same issue

egarl004 · 1 year ago
I was having the same issue but resolved when removing vpn connection. Worth a try if you're behind corporate vpn/firewall as well.

I did suspect this, disabled vpn and still had the same issue though on my end.

sebastiangeiger01 · 1 year ago

This is probably due to the ssl certificate chain being broken by zscaler/other SaaS solution used in company networks. Experiencing the same issue...

moob123 · 1 year ago

I am having this same issue with a vanilla internet connection, no vpn, macos, zshell, nvm, v16.14.0, tried both chrome and safari as default browsers. sometimes i get to a key that i can copy in the browser but the shell script will not accept it, shell and browser process seems not to be in phase, just dancing around.

FoRJu · 1 year ago

I am expereincing the same issue above.

Wondering if this is something Claude Code can fix...

FoRJu · 1 year ago

this is fixed with ChatGPT with terminal. Update node and npm to latest version. All fine.

npm --version
10.9.2
node --version
v23.9.0

sjsage522 · 1 year ago

os : Ubuntu 22.04 LTS
node -v : v20.18.0
npm -v : 10.8.2

moob123 · 1 year ago

In my case - with nvm - the issue was a lingering prefix in .npmrc pointing to an older version of node. Now clearing this, with node version
node -v
v20.11.0
it works fine.

shevit · 1 year ago

Step 1: Test what's wrong

Run 'node' then execute

> fetch("https://www.google.com/")

If you see an error, it means that Claude Code has the same problem accessing internet.

Step 2 : Fix:

In my case it was a ZScaler certificate

You need to configure Node.js to trust the Zscaler certificate.

Option 1: set the NODE_TLS_REJECT_UNAUTHORIZED environment variable (quick but insecure)
export NODE_TLS_REJECT_UNAUTHORIZED=0
```` 
#### Option 2: Add the Zscaler certificate to Node.js (recommended )

First, download/export the Zscaler root certificate:

- Open any HTTPS website in your browser
- Click on the padlock icon in the address bar
- View the certificate details
- Export/save the Zscaler root CA certificate (usually named "ZscalerRootCertificate" or similar)

add the certificate to Node.js:

```bash
mkdir -p ~/.node-certs

# Copy your Zscaler certificate there
cp /path/to/ZscalerRootCertificate.pem ~/.node-certs/

# Set the NODE_EXTRA_CA_CERTS environment variable
export NODE_EXTRA_CA_CERTS=~/.node-certs/ZscalerRootCertificate.pem

Add the environment variable to your shell profile for persistence:

bashCopyecho 'export NODE_EXTRA_CA_CERTS=~/.node-certs/ZscalerRootCertificate.pem' >> ~/.bashrc
# Or if using Zsh
echo 'export NODE_EXTRA_CA_CERTS=~/.node-certs/ZscalerRootCertificate.pem' >> ~/.zshrc
ArthurClune · 1 year ago

Thanks to @shevit !

For those not behind a VPN device but getting the same error, the safe fix is to tell node where your certificates are. On macOS

$ export NODE_EXTRA_CA_CERTS=/etc/ssl/cert.pem
$ claude

and things should work.

egarl004 · 1 year ago

thanks @shevit! worked perfectly.

kurosato · 1 year ago

Thanks @shevit ! The fetch showed that npm was defaulting to IPV6 usage (Ubuntu server 24.04), after changing the NODE_OPTIONS as below, this solved the issue.

Linux/macOS

export NODE_OPTIONS="--dns-result-order=ipv4first"

Windows Command Prompt

set NODE_OPTIONS=--dns-result-order=ipv4first

Windows PowerShell

$env:NODE_OPTIONS="--dns-result-order=ipv4first"

PitzTech · 1 year ago

Thanks @kurosato!!
export NODE_OPTIONS="--dns-result-order=ipv4first" worked for me on WSL

Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04

github-actions[bot] · 11 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.