Native installer stuck on 2.1.39 - doesn't update to latest (2.1.47)

Resolved 💬 6 comments Opened Feb 19, 2026 by genesiscz Closed Mar 23, 2026

Description

The native installer (curl -fsSL https://claude.ai/install.sh | sh) installs version 2.1.39 instead of the latest 2.1.47. Running claude update also reports "up to date" at 2.1.39.

  • claude update says 2.1.39 is current
  • Fresh install via curl -fsSL https://claude.ai/install.sh | sh also installs 2.1.39
  • Even after completely removing all versions from ~/.local/share/claude/versions/ and ~/.local/bin/claude, reinstalling still gives 2.1.39
  • npm shows 2.1.47 is available: https://www.npmjs.com/package/@anthropic-ai/claude-code

Environment

  • macOS (Darwin 25.2.0, arm64)
  • Native binary install (~/.local/bin/claude~/.local/share/claude/versions/2.1.39)
  • curl 8.7.1

Steps to Reproduce

  1. Remove existing installation:

``bash
rm -rf ~/.local/share/claude/versions/*
rm -f ~/.local/bin/claude
``

  1. Reinstall:

``bash
curl -fsSL https://claude.ai/install.sh | sh
``

  1. Check version:

``bash
claude --version
# Output: 2.1.39
``

Verbose curl output

The bootstrap script is served from GCS with last-modified: Wed, 18 Feb 2026 20:39:11 GMT and installs 2.1.39:

curl -vvfsSL https://claude.ai/install.sh | sh
* Host claude.ai:443 was resolved.
* IPv6: (none)
* IPv4: 160.79.104.10
*   Trying 160.79.104.10:443...
* Connected to claude.ai (160.79.104.10) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
} [314 bytes data]
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [19 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [2073 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=claude.ai
*  start date: Jan 17 17:09:58 2026 GMT
*  expire date: Apr 17 17:09:57 2026 GMT
*  subjectAltName: host "claude.ai" matched cert's "claude.ai"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://claude.ai/install.sh
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: claude.ai]
* [HTTP/2] [1] [:path: /install.sh]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> GET /install.sh HTTP/2
> Host: claude.ai
> User-Agent: curl/8.7.1
> Accept: */*
> 
* Request completely sent off
< HTTP/2 302 
< date: Thu, 19 Feb 2026 18:17:39 GMT
< content-type: text/html
< content-length: 143
< location: https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/bootstrap.sh
< cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< expires: Thu, 01 Jan 1970 00:00:01 GMT
< x-robots-tag: none
< server: cloudflare
< cf-ray: 9d07c328598c3516-PRG
< alt-svc: h3=":443"; ma=86400
< 
* Ignoring the response-body
* Connection #0 to host claude.ai left intact
* Issue another request to this URL: 'https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/bootstrap.sh'
* Host storage.googleapis.com:443 was resolved.
* IPv6: (none)
* IPv4: 142.251.38.155, 142.251.141.187, 142.251.209.27, 172.217.19.27
*   Trying 142.251.38.155:443...
* Connected to storage.googleapis.com (142.251.38.155) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
} [327 bytes data]
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [15 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [2526 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=storage.googleapis.com
*  start date: Jan 26 08:44:11 2026 GMT
*  expire date: Apr 20 08:44:10 2026 GMT
*  subjectAltName: host "storage.googleapis.com" matched cert's "storage.googleapis.com"
*  issuer: C=US; O=Google Trust Services; CN=WE2
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/bootstrap.sh
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: storage.googleapis.com]
* [HTTP/2] [1] [:path: /claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/bootstrap.sh]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> GET /claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/bootstrap.sh HTTP/2
> Host: storage.googleapis.com
> User-Agent: curl/8.7.1
> Accept: */*
> 
* Request completely sent off
< HTTP/2 200 
< x-guploader-uploadid: AGQBYWyKGcak2TaxGWde89LLHWhUO_djah9bzKekn3A4QTzIUyDWgSPD10y-8t7k5O7jg-1C
< x-goog-generation: 1771447151087971
< x-goog-metageneration: 1
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 4307
< x-goog-hash: crc32c=AD+I8A==
< x-goog-hash: md5=5Dy+QKeRshlmUyZxPUmvZw==
< x-goog-storage-class: STANDARD
< accept-ranges: bytes
< content-length: 4307
< server: UploadServer
< date: Thu, 19 Feb 2026 18:17:40 GMT
< expires: Thu, 19 Feb 2026 18:22:40 GMT
< cache-control: no-cache, max-age=300
< age: 0
< last-modified: Wed, 18 Feb 2026 20:39:11 GMT
< etag: "e43cbe40a791b219665326713d49af67"
< content-type: text/x-sh
< alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
< 
{ [1369 bytes data]
* Connection #1 to host storage.googleapis.com left intact
Setting up Claude Code...

✔ Claude Code successfully installed!
              
  Version: 2.1.39

  Location: ~/.local/bin/claude


  Next: Run claude --help to get started

✅ Installation complete!

Expected Behavior

The installer should install the latest version (currently 2.1.47 per npm).

Workaround

Install via npm instead:

npm install -g @anthropic-ai/claude-code@latest

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗