Claude Code CLI unusable on pre-Haswell Intel Macs (no AVX2) — need Node.js fallback or non-AVX binary

Resolved 💬 7 comments Opened Apr 19, 2026 by johan-- Closed Apr 19, 2026

Description

Claude Code CLI cannot run on Intel Macs with pre-Haswell CPUs. Since the move to Bun-compiled single-file executables, versions whose npm tarball no longer includes cli.js crash immediately with SIGILL. The last usable version is 2.1.108 (the last to ship cli.js in the tarball).

This isn't the v2.1.15 regression fixed via WebKit/Bun 1.3.7 — that fix addressed a specific JIT bug. The underlying problem is that the @anthropic-ai/claude-code-darwin-x64 binary requires AVX2, which this CPU microarchitecture does not have.

Environment

  • Machine: MacBook Pro Mid-2012 (MacBookPro9,2)
  • CPU: Intel Core i7-3520M @ 2.90GHz (Ivy Bridge, 3rd gen)
  • CPU features: SSE4.2, POPCNT, AVX1.0, AES, XSAVE — no AVX2, no BMI2
  • OS: macOS Sequoia 15.7.6
  • Memory: 16 GB
  • Current working version: 2.1.107 via Node.js wrapper
  • Latest version tested: 2.1.114 — SIGILL on launch

How the working install works

Versions up to ~2.1.108 ship cli.js in the npm tarball — a single bundled JS file that runs under Node.js, which JITs to whatever instruction set the CPU supports. I run it via a bash wrapper:

#!/usr/bin/env bash
exec /path/to/node "$HOME/.local/opt/claude-code-current/cli.js" "$@"

This works perfectly. Performance is fine. But from 2.1.114 onward, the tarball only contains cli-wrapper.cjs + install.cjs, which resolve to the platform-specific Bun binary — and that binary SIGILLs.

What I've verified

  • npm pack @anthropic-ai/claude-code@2.1.108 → contains cli.js → runs fine under Node
  • npm pack @anthropic-ai/claude-code@2.1.114 → no cli.js, only cli-wrapper.cjs → spawns @anthropic-ai/claude-code-darwin-x64 binary → SIGILL
  • The darwin-x64 binary is a 196MB Mach-O executable with AVX2-dependent code paths (confirmed via strings)

Request

Any of these would restore support for pre-Haswell x86_64 hardware:

  1. Continue shipping cli.js in the npm tarball alongside the Bun binary (it was there until recently)
  2. Build the darwin-x64 binary with -march=x86-64-v2 (SSE4.2 baseline) instead of requiring AVX2
  3. Provide cli-wrapper.cjs as a true Node.js fallback — currently it just spawns the native binary; it could fall back to bundled JS when the binary SIGILLs

Option 1 is the smallest change — the tarball already had cli.js for years. Users on older hardware pay the Node.js overhead; everyone else is unaffected.

Related issues

  • #19907 (33 comments) — v2.1.15 AVX regression, fixed via Bun 1.3.7
  • #5864 (24 comments) — original "compile without AVX2" request
  • #19904 (14 comments) — "CPU lacks AVX support"
  • #34481 (open) — SIGILL on Westmere Xeon

View original on GitHub ↗

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