[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

Status Open
Reported on v2.1.280
Maintainer reply None cached
Activity 3 comments · opened Sep 23, 2026

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) and npm 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/cpuinfo returns 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 offset 0x3dae898, identical across three runs (startup path, deterministic).
  • claude-2.1.280-linux-x64 = binary fetched by install.sh; faults at file offset 0x211ab1b.

Steps to reproduce

  1. Use an x86-64 Linux machine whose CPU lacks AVX/AVX2/BMI2 (verify: grep -ow 'avx\|avx2\|bmi2' /proc/cpuinfo prints nothing). A QEMU/KVM guest with -cpu qemu64 reproduces the same condition.
  2. Run the native installer: curl -fsSL https://claude.ai/install.sh | bash → killed with "Illegal instruction", exit code 132.
  3. Alternatively: npm install -g @anthropic-ai/claude-code (2.1.197), allow the postinstall script, run claude --version → SIGILL before printing anything.
  4. Control: npm install -g @anthropic-ai/claude-code@2.1.112 on Node 22, run claude --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.

View original on GitHub ↗

3 Comments

genose · 17 days ago

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:

curl -fsSL https://raw.githubusercontent.com/genose/claude-code-source-build-community-edition-noAVX-foroldtimer/noavx_esbuild/install.sh | bash

Currently at v2.1.283. The binary is called claudius (with a claude symlink 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.

vejeta · 17 days ago

Thanks @genose, Loving the free software community.

Hopefully Anthropic can introduce good engineering practices to their releases, in the meantime this works.
Much appreciated.

genose · 17 days ago

@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.