[BUG] SIGILL on x86-64 CPU without AVX (Linux, bare metal) — native installer 2.1.280 and npm 2.1.197 both crash; 2.1.112 (last JS bundle) on Node 22 works
Environment
- Claude Code: native installer 2.1.280 (fails), npm package 2.1.197 (fails), 2.1.112 via npm (works — see below)
- Install methods tried: native installer (
curl -fsSL https://claude.ai/install.sh | bash) andnpm install -g @anthropic-ai/claude-code - OS: <distro/version>, kernel 7.0.14-1-liquorix-amd64, x86_64
- Virtualization: none (bare metal,
systemd-detect-virt→none) - CPU: <model from
LC_ALL=C lscpu | grep 'Model name'> - CPU features: no AVX, no AVX2, no BMI2 (
grep -ow 'avx\|avx2\|bmi2' /proc/cpuinforeturns nothing) - CPU flags:
<first flags line from /proc/cpuinfo> - Kernel cmdline does not mask any CPU features (no
noxsave/clearcpuid) - Shell: fish
What's wrong
Native installer
The installer is killed before completing:
$ curl -fsSL https://claude.ai/install.sh | bash
Setting up Claude Code...
bash: line 226: 81617 Illegal instruction "$binary_path" install ${TARGET:+"$TARGET"}
Installation was killed before it could finish (exit code 132).
npm package (2.1.197)
Installing via npm is not a workaround anymore. The current npm package is a thin wrapper whose postinstall (install.cjs) fetches the same native binary. A previously working npm install on this machine had silently auto-updated to the native wrapper and now crashes as well:
$ ~/.npm-global/bin/claude --version
fish: Job 1, '~/.npm-global/bin/claude --vers…' terminated by signal SIGILL (Illegal instruction)
Even --version crashes, so there is no way to diagnose, downgrade or uninstall through the CLI itself.
Kernel traps
$ sudo dmesg | grep -i 'invalid opcode'
[ 8162.538335] traps: claude[80792] trap invalid opcode ip:3faf898 sp:7ffd77574170 error:0 in claude.exe[3dae898,24aa000+3c42000]
[ 8166.786929] traps: claude[80810] trap invalid opcode ip:3faf898 sp:7ffe179df600 error:0 in claude.exe[3dae898,24aa000+3c42000]
[ 8515.871197] traps: claude-2.1.280-[81617] trap invalid opcode ip:231bb1b sp:7ffee4466b90 error:0 in claude-2.1.280-linux-x64[211ab1b,192a000+3b84000]
[ 8991.915902] traps: claude[81824] trap invalid opcode ip:3faf898 sp:7ffc58c0d9e0 error:0 in claude.exe[3dae898,24aa000+3c42000]
claude.exe= native binary fetched by the npm wrapper (2.1.197); faults at file offset0x3dae898, identical across three runs (startup path, deterministic).claude-2.1.280-linux-x64= binary fetched byinstall.sh; faults at file offset0x211ab1b.
Steps to reproduce
- Use an x86-64 Linux machine whose CPU lacks AVX/AVX2/BMI2 (verify:
grep -ow 'avx\|avx2\|bmi2' /proc/cpuinfoprints nothing). A QEMU/KVM guest with-cpu qemu64reproduces the same condition. - Run the native installer:
curl -fsSL https://claude.ai/install.sh | bash→ killed with "Illegal instruction", exit code 132. - Alternatively:
npm install -g @anthropic-ai/claude-code(2.1.197), allow the postinstall script, runclaude --version→ SIGILL before printing anything. - Control:
npm install -g @anthropic-ai/claude-code@2.1.112on Node 22, runclaude --version→ works.
Last working version on this machine
2.1.112 (the last JS bundle release, per the maintainer comment in #50466) runs correctly on Node 22.22.2. 2.1.14 also works.
npm install -g @anthropic-ai/claude-code@2.1.112
# with DISABLE_AUTOUPDATER=1 so it is not replaced by the native build
Note, to avoid confusion with the SIGILL: the JS bundle (tested with 2.1.14) on Node 20.19.5 fails for an unrelated reason:
TypeError: webidl.util.markAsUncloneable is not a function
at new Response (node:internal/deps/undici/undici:12918:21)
at file:///.../@anthropic-ai/claude-code/cli.js:44:18288
...
Node.js v20.19.5
The official Node 22 x64 binaries from nodejs.org run fine on this CPU, which shows a baseline x86-64 JS runtime is viable here.
Regression history
- #19907 — no-AVX crash in 2.1.15, regression from 2.1.14 (closed)
- #50466 / #50904 — AVX2-less crash since 2.1.113 (2.1.112 works)
- #62244 — Ivy Bridge, last working 2.1.30
- #20611 — request for a CPU-baseline build
- #37065 — Westmere, no AVX
- #80443 — Phenom II, 2.1.14 works
The no-AVX case appears to have regressed again after #19907 was closed.
Workaround
Pin 2.1.112 via npm on Node ≥ 22 and disable the auto-updater ("env": {"DISABLE_AUTOUPDATER": "1"} in ~/.claude/settings.json). This is fragile, since old client versions may eventually stop being accepted server-side.
3 Comments
If you are hitting this because Bun requires AVX and your CPU / VM does not have it, the Claude Code Community Edition no-AVX fork exists for exactly this situation.
It rebuilds Claude Code using Node.js + esbuild instead of Bun, so it runs on any CPU without AVX/AVX2 — bare metal, VMs, VPS, OpenStack, Proxmox KVM, Hyper-V, VirtualBox, QEMU, old Xeons, AMD pre-Bulldozer, all of it. One-line install:
Currently at v2.1.283. The binary is called
claudius(with aclaudesymlink for IDE/VS Code compat).Honest note: the version number tracks upstream so the API gate passes, but the underlying app code is frozen at the v2.1.88 era — upstream switched to Bun-compiled bytecode at v2.1.126 and source maps are no longer obtainable. What you get: a working Node.js build that runs on your hardware, with fresh npm dependency packages at build time.
Thanks @genose, Loving the free software community.
Hopefully Anthropic can introduce good engineering practices to their releases, in the meantime this works.
Much appreciated.
@vejeta glad it works for you!
Still on the track to find a way to obtain newer upstream source — if anyone has ideas or wants to dig into it, reviews and contributions are welcome: https://github.com/genose/claude-code-source-build-community-edition-noAVX-foroldtimer
Default branch is
master. Currently working on getting the next version out.