Fix Claude Code Apple Silicon Rosetta Crash (2026)

The Error

[1]    12345 killed     claude
$ file $(which node)
/usr/local/bin/node: Mach-O 64-bit executable x86_64

Claude Code crashes or is killed immediately on Apple Silicon Macs when running an x86_64 (Intel) Node.js binary through Rosetta 2 translation. This causes excessive memory usage and eventual OOM kills.

TL;DR — Quick Fix

Install ARM64-native Node.js via nvm in a native terminal:

arch -arm64 zsh && nvm install 22 && npm install -g @anthropic-ai/claude-code

The Fix

Step 1: Check if your Node is native ARM64

file $(which node)
# Should say: Mach-O 64-bit executable arm64

Step 2: Install native ARM64 Node via nvm

arch -arm64 zsh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.zshrc
nvm install 22

Step 3: Verify the architecture

file $(which node)
# Must show: arm64
node -e "console.log(process.arch)"
# Must show: arm64

Step 4: Reinstall Claude Code

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

Why This Happens

When Node.js is installed via an Intel-only installer or from an x86 terminal session (Terminal opened via Rosetta), you get the x86_64 binary. Rosetta 2 translates it at runtime, adding 30-50% memory overhead. Claude Code's Node process can exceed available memory during large operations and get killed by the OOM killer. Native ARM64 Node uses half the memory and runs significantly faster.

If That Does Not Work

Ensure your terminal is not running under Rosetta

# Check terminal architecture
uname -m
# Should say: arm64, not x86_64

If iTerm2 or Terminal shows x86_64, right-click the app in Finder, select “Get Info”, and uncheck “Open using Rosetta”.

Remove all Intel Node installations

sudo rm -rf /usr/local/lib/node_modules
brew uninstall node  # If installed via x86 Homebrew

Verify Homebrew is ARM64-native

file $(which brew)
# Should show: arm64
# ARM64 Homebrew installs to /opt/homebrew
# Intel Homebrew installs to /usr/local

Prevention

Add this to your CLAUDE.md:

# Apple Silicon
- Always verify: uname -m returns arm64 before installing tools.
- Use nvm with native ARM64 shell. Never install Node from x86 terminal.
- If crashes occur, check: file $(which node) - must show arm64.

FAQ

How do I know if my Node.js is running through Rosetta?

Run file $(which node) in your terminal. If it shows Mach-O 64-bit executable x86_64, Node is an Intel binary running through Rosetta 2 translation. You need arm64 instead. Also check node -e "console.log(process.arch)" which should print arm64, not x64.

Why does Rosetta cause Claude Code to crash specifically?

Rosetta 2 adds 30-50% memory overhead to translated processes. Claude Code performs heavy operations (file indexing, context management, API streaming) that push Node.js memory usage high. The Rosetta overhead pushes it over the OOM threshold. Native ARM64 Node uses roughly half the memory for the same workload, keeping it well within limits.

Will reinstalling Node.js break my existing projects?

No. Node.js ARM64 is fully compatible with all npm packages. Your projects will work identically but faster. Global packages (installed with npm install -g) need to be reinstalled after switching Node versions because they are compiled for a specific architecture. Run npm install -g @anthropic-ai/claude-code after installing ARM64 Node.

I spent an hour debugging random crashes before I realized my terminal was running through Rosetta. Fixed it once in my CLAUDE.md setup script, never thought about it again.

I run 5 Claude Max subs, 16 Chrome extensions serving 50K users, and bill $500K+ on Upwork. These CLAUDE.md templates are what I actually use.

Grab the templates — $99 once, free forever →

Built by Michael Lip — solo dev, Da Nang.