anthropics / anthropics/claude-code

[BUG] Auto-update fails for all native installs: release channel pointers (latest/stable) return 403 AccessDenied from GCS

Ouverte
#89,705 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area:installation bug has repro platform:macos
Langage dominant
Python
Étoiles
145k
Forks
23.1k
Métriques de merge des PR
Métriques de PR en attente

Description

### What happened

Auto-update fails on every attempt with `install_failed`. Running `claude update` shows the underlying cause:

```
Current version: 2.1.241
Checking for updates to latest version...
Error: Failed to install native update
TelemetrySafeError: Failed to fetch version from https://downloads.claude.ai/claude-code-releases/latest after 3 attempt(s): Request failed with status code 403
```

### Root cause

The release-channel pointer objects return **403 AccessDenied** from GCS, unauthenticated:

```
$ curl -i https://downloads.claude.ai/claude-code-releases/latest
HTTP/2 403
content-type: application/xml; charset=UTF-8
server: UploadServer
via: 1.1 google

AccessDeniedAccess denied.
```

Versioned paths under the same bucket are still public and serve fine:

| Path | Status |
|---|---|
| `claude-code-releases/latest` | 403 |
| `claude-code-releases/stable` | 403 |
| `claude-code-releases/2.1.241/manifest.json` | 200 |
| `claude-code-releases/2.1.246/manifest.json` | 200 |
| `claude-code-releases/2.1.246/darwin-arm64/claude` | 200 (sha256 matches manifest) |

So the artifacts are published and readable — only the `latest` / `stable` channel pointers are inaccessible. GCS returns `403 AccessDenied` rather than 404 when the caller lacks list permission, so those objects may be missing rather than mis-ACL'd. Either way it's server side; nothing on the client can work around it.

### Not a local/network issue

- Native install (not npm), `claude doctor` reports "No installation issues found"
- No proxy / `NODE_EXTRA_CA_CERTS` / TLS interception in the environment
- No lock files, install dir is user-owned and writable, 452 GiB free
- Same 403 from plain `curl` outside the CLI, so it is not client code

### Impact

Every native-install user is stuck on whatever version they had when this started, with a persistent `✘ Auto-update failed · Run claude doctor` banner. `claude doctor` itself reports no problem, which sends people down the wrong path.

### Workaround

Install a specific version manually, bypassing the channel pointer:

```sh
V=2.1.246
curl -sSL -o ~/.local/share/claude/versions/$V \
"https://downloads.claude.ai/claude-code-releases/$V/darwin-arm64/claude"
chmod 755 ~/.local/share/claude/versions/$V
ln -sfn ~/.local/share/claude/versions/$V ~/.local/bin/claude
```

Verify the sha256 against `https://downloads.claude.ai/claude-code-releases/$V/manifest.json` first. Version numbers can be discovered from the npm registry (`@anthropic-ai/claude-code`) since the channel pointer is unreadable.

### Environment

- Claude Code 2.1.241 (native), commit c87e2742fc9a
- macOS darwin-arm64, Darwin 25.6.0
- Auto-update channel: latest
- First observed: 2026-08-26

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Start by reproducing the unauthenticated requests to the latest and stable release-channel URLs with curl, then compare them with the versioned manifest and binary paths described in the report. Confirm that both channel pointers are publicly readable and that claude update no longer receives 403 AccessDenied; no repository file or test is named in the issue.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
google-cloud
Domaine
cloud, infrastructure, release
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.