Bug: ARM64 binary replaced with x86_64 during install on Apple Silicon
Bug Report: Claude Code Install - ARM64 Binary Replaced with x86_64 on Apple Silicon
Date: December 10, 2025
Affected Version: Claude Code v2.0.64
Platform: macOS (Apple Silicon / ARM64)
Severity: Medium - Affects subset of Apple Silicon users
---
Summary
On at least one Apple Silicon Mac, the claude install self-installation command replaced a correctly-downloaded ARM64 binary with an x86_64 binary. This caused Claude Code to run through Rosetta translation instead of natively. While this may not affect all Apple Silicon users (as it would be more widely reported), documenting the issue may help identify edge cases in the installation logic.
---
Environment
- OS: macOS (Darwin 24.5.0)
- Architecture: Apple Silicon (ARM64)
- System confirms ARM64:
uname -m→arm64 - Not running through Rosetta:
sysctl.proc_translated→0 - Claude Code Version: 2.0.64
- Install Method: Official install script from https://claude.ai/install.sh
---
Evidence
Step 1: Install script downloads correct ARM64 binary ✅
When running the official install script with debug output added, we confirmed:
# Script correctly detects ARM64
OS: Darwin
Arch: arm64
Platform: darwin-arm64
# Downloads from correct URL
Downloading from: https://storage.googleapis.com/.../2.0.64/darwin-arm64/claude
# Downloaded binary is ARM64
DEBUG: Downloaded binary architecture:
/Users/david/.claude/downloads/claude-2.0.64-darwin-arm64: Mach-O 64-bit executable arm64
Step 2: claude install command replaces it with x86_64 ❌
After the install script runs claude install, the binary changes architecture:
# After 'claude install' runs
Setting up Claude Code...
✔ Claude Code successfully installed!
# Final binary is now x86_64
DEBUG: Final installed binary architecture:
/Users/david/.local/bin/claude: Mach-O 64-bit executable x86_64
Visual Proof
Before claude install:/Users/david/.claude/downloads/claude-2.0.64-darwin-arm64: Mach-O 64-bit executable arm64
After claude install:/Users/david/.local/bin/claude: Mach-O 64-bit executable x86_64
---
Root Cause
The bug is NOT in the install script (bootstrap.sh), which correctly:
- Detects the platform as
darwin-arm64 - Downloads the ARM64 binary from the correct GCS bucket path
- Receives an ARM64 binary from the server
The bug IS in the compiled claude binary itself. When the downloaded ARM64 binary executes claude install, it either:
- Re-downloads from a hardcoded x86_64 URL
- Has broken architecture detection in its self-install logic
- Falls back to x86_64 as a default
---
Impact (When Bug Occurs)
- Performance: Claude runs through Rosetta 2 translation instead of natively
- Bash execution issues: Commands may hang or fail due to x86_64/ARM64 shell mismatches
- User experience: Degraded performance and increased CPU usage
Note: This appears to affect a subset of installations rather than all Apple Silicon users, suggesting a specific edge case or environmental factor.
---
Workaround
Bypass the claude install command by directly copying the downloaded ARM64 binary:
#!/bin/bash
VERSION="2.0.64"
PLATFORM="darwin-arm64"
GCS_BUCKET="https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases"
# Download ARM64 binary
curl -fsSL "$GCS_BUCKET/$VERSION/$PLATFORM/claude" -o ~/.claude/downloads/claude-$VERSION-$PLATFORM
# Verify it's ARM64
file ~/.claude/downloads/claude-$VERSION-$PLATFORM
# Copy directly to install location (SKIP 'claude install')
cp ~/.claude/downloads/claude-$VERSION-$PLATFORM ~/.local/bin/claude
chmod +x ~/.local/bin/claude
# Verify final binary
file ~/.local/bin/claude # Should show: arm64
Result: Claude Code runs natively on Apple Silicon with full ARM64 performance.
---
Reproduction Steps
- Use an Apple Silicon Mac (M1, M2, M3, etc.)
- Verify system is ARM64:
uname -mshould returnarm64 - Run official install:
curl -fsSL https://claude.ai/install.sh | bash - Check installed binary:
file ~/.local/bin/claude - Expected:
Mach-O 64-bit executable arm64 - Actual:
Mach-O 64-bit executable x86_64
---
Suggested Fix
The claude install command needs to:
- Properly detect the current architecture when running on Apple Silicon
- Download/copy the ARM64 binary instead of defaulting to x86_64
- Test self-installation on ARM64 systems to ensure architecture is preserved
---
Additional Notes
- Bootstrap script (bootstrap.sh) is working correctly and doesn't need changes
- Server is correctly serving ARM64 binaries at the
darwin-arm64path - The issue is isolated to the
claude installself-installation logic in the compiled binary - Workaround confirmed working on macOS 14.5 (Darwin 24.5.0) with Apple Silicon
---
Files for Reference
The following debugging scripts and notes are available if Anthropic engineers need more details:
claude-install-debug-notes.md- Complete debugging investigationdiagnose-claude-install.sh- Script to diagnose the issuefix-claude-arm64.sh- Working workaround script- Modified install script with debug output showing the architecture change
Contact: @davidfwatson
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗