[BUG] claude.ai/install.sh returns 403 — Cloudflare challenge blocks Docker/CI installs
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
https://claude.ai/install.sh returns HTTP 403 when fetched from Docker builds or CI environments (GitHub Actions). Cloudflare is serving a browser challenge instead of the install script, making the documented install method unusable in automated environments.
What Should Happen?
curl -fsSL https://claude.ai/install.sh | bash should work in non-interactive environments (Docker builds, GitHub Actions, CI pipelines) as documented.
Error Messages/Logs
$ curl -fsSL https://claude.ai/install.sh | bash
curl: (22) The requested URL returned error: 403
$ curl -sI https://claude.ai/install.sh
HTTP/2 403
cf-mitigated: challenge
content-type: text/html; charset=UTF-8
Steps to Reproduce
- In any Dockerfile:
``dockerfile``
FROM node:20-slim
RUN curl -fsSL https://claude.ai/install.sh | bash
docker build .- Build fails at the curl step with exit code 22 (HTTP 403)
Same issue from GitHub Actions runners and any non-browser curl request.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Unknown — worked before Cloudflare challenge was enabled on claude.ai
Claude Code Version
1.0.202 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Non-interactive/CI environment
Additional Information
Response headers confirm Cloudflare challenge mitigation:
cf-mitigated: challenge
accept-ch: Sec-CH-UA-Bitness, Sec-CH-UA-Arch, ...
Workaround: Install via npm instead: npm install -g @anthropic-ai/claude-code
This is impacting our Docker builds in GitHub Actions. The Cloudflare WAF rule appears to not distinguish automated installs from bot traffic.
This issue has 8 comments on GitHub. Read the full discussion on GitHub ↗