SIGILL on AVX2-less Intel Macs still present in 2.1.181 (regression from #50466 persists)

Status Open
Reported on v2.1.112
Maintainer reply None cached
Activity 7 comments · opened Jun 19, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Why a fresh report

This bug class has a documented history: #50466 isolated the exact regression window (2.1.112 to 2.1.113) with a clean reproduction, was labeled bug, has repro, and regression, and was closed as "not planned." Two subsequent reports, #62244 and #62809, were auto-closed as duplicates pointing back to it.

Filing fresh rather than commenting on a closed thread, for a few reasons. First, the bug is still present in the current build (2.1.181); this isn't historical, it's reproducing today. Second, the original report's proposed fix (a -march=x86-64-v2 baseline, or RUSTFLAGS="-C target-cpu=x86-64" for Rust deps) doesn't appear to have been evaluated in the thread. Third, it's not clear from the closed issue whether "not planned" reflects a deliberate hardware-support boundary or simply fell off the queue; happy to be pointed to that context if it exists.

Adding independent confirmation data here: different machine (iMac13,2 vs. the Mac Pro / iMac in the linked reports, though notably identical CPU model), different version (2.1.181 vs. 2.1.113/2.1.149), same failure signature.

Summary

The Claude Code / Cowork engine bundled with Claude Desktop crashes with EXC_BAD_INSTRUCTION / SIGILL immediately on launch on any Intel Mac whose CPU predates Haswell (lacks AVX2/BMI2/FMA, i.e. Ivy Bridge and earlier). The crash occurs during dyld static initializer execution, before any application code runs, and before the engine can fail gracefully or print a version string.

Environment

Mac model: iMac13,2 (21.5" Late 2012). CPU: Intel Core i5-3470S at 2.90GHz (Ivy Bridge), identical CPU model to #50466's reporter on a different physical machine. macOS: 15.7.7 (24G720). Claude Desktop shell version: 1.14271.0. Embedded Claude Code engine version: 2.1.181, confirming the bug persists across at least 68 point releases since the 2.1.113 regression first reported. Architecture: x86_64, non-fat/single-architecture binary, confirmed via lipo -info, with no AVX2-baseline fallback slice shipped.

CPU feature confirmation (AVX2/BMI2/FMA absent)

$ sysctl machdep.cpu.brand_string
machdep.cpu.brand_string: Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz

$ sysctl -a | grep machdep.cpu.features
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC POPCNT AES PCID XSAVE OSXSAVE TSCTMR AVX1.0 RDRAND F16C

$ sysctl -a | grep machdep.cpu.leaf7_features
machdep.cpu.leaf7_features: RDWRFSGS SMEP ERMS MDCLEAR IBRS STIBP L1DF SSBD

AVX1.0 is present; AVX2, BMI2, and FMA (leaf7 feature set) are absent, consistent with Ivy Bridge, one generation before Haswell introduced AVX2 in 2013.

What Should Happen?

Either ship a non-AVX2 baseline build for the embedded Code/Cowork engine, or explicitly document the minimum CPU requirement and fail gracefully with an actionable error instead of an unexplained SIGILL crash-loop.

Happy to provide the full .ips crash log, system_profiler SPHardwareDataType output, or test any proposed baseline build on this hardware.

Error Messages/Logs

{"app_name":"claude","app_version":"2.1.181","bundleID":"com.anthropic.claude-code"}
{
  "modelCode": "iMac13,2",
  "cpuType": "X86-64",
  "exception": {"type": "EXC_BAD_INSTRUCTION", "signal": "SIGILL"},
  "termination": {"code": 4, "indicator": "Illegal instruction: 4"},
  "procLaunch": "2026-06-19 02:21:33.8943 -0400",
  "elapsed": "~324ms after launch",
  "coalitionName": "com.anthropic.claudefordesktop"
}

Faulting thread backtrace shows the crash inside dyld4::Loader::findAndRunAllInitializers, i.e. during static initializer execution within the claude binary itself, before any application logic runs. This matches the timing and signature reported in #62809 (~474ms after launch, before any work is done) and the opcode-level diagnosis in #62244 (VEX-encoded BMI2 instruction c4 e2 f9 f7 d1, which Ivy Bridge lacks).

Binary inspection:

$ file claude.app/Contents/MacOS/claude
claude.app/Contents/MacOS/claude: Mach-O 64-bit executable x86_64

$ lipo -info claude.app/Contents/MacOS/claude
Non-fat file: ... is architecture: x86_64

Single-architecture binary, no AVX2-baseline slice. The build assumes AVX2/BMI2 availability unconditionally on x86_64.

Steps to Reproduce

  1. On an Intel Mac with a pre-Haswell CPU (no AVX2/BMI2; confirm via sysctl -a | grep machdep.cpu.leaf7_features), install/run current Claude Desktop.
  2. Open Cowork, or otherwise trigger the embedded Claude Code engine (it is spawned automatically by certain Claude Desktop actions, not only via direct CLI invocation).
  3. The process crashes with SIGILL within ~300ms, before reaching a ready state. Confirm via Console.app or ~/Library/Logs/DiagnosticReports/claude-*.ips.
  4. Reproducible 100% of the time on this hardware; every launch attempt produces the same crash.

Note on invocation context: this crash is triggered via Claude Desktop/Cowork spawning the bundled engine, not a direct Terminal.app CLI session; the crash log's coalitionName: com.anthropic.claudefordesktop confirms the parent process. This is also why claude --version cannot be run to verify the exact version per the standard preflight check: the version-check command itself hits the same crash path. The version cited in this report is sourced from the cached install directory name (~/Library/Application Support/Claude/claude-code/2.1.181/), not command output.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.112 (per #50466's report; not independently verified on this hardware, see Steps to Reproduce note)

Claude Code Version

2.1.181 (sourced from install directory name, not claude --version output -- see Steps to Reproduce)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Note: this report selects Terminal.app for the required Terminal/Shell field, but the actual crash is not invoked via Terminal at all; it occurs when Claude Desktop/Cowork spawns the embedded engine directly (confirmed by coalitionName: com.anthropic.claudefordesktop in the crash log). There is no Claude Desktop / Cowork option in the Terminal/Shell dropdown.

New finding not present in prior reports: version pinning does not work around this. The embedded Code engine lives in a version-pinned cache directory (~/Library/Application Support/Claude/claude-code/<version>/) that updates independently of the Claude Desktop shell version. Installing an older Claude Desktop build does not pin the Code engine; it still fetches the current (broken) build. This closes off the one user-side workaround (downgrading) that worked for CLI/npm installs per #50466, meaning Claude Desktop / Cowork users on affected hardware have no available workaround at all, unlike npm-install users who could at least pin @anthropic-ai/claude-code@2.1.112.

Additional context that may be useful for triage:

This is not a fringe edge case: Ivy Bridge and earlier Intel Macs (2012-2013 iMacs, Mac Pros, MacBook Pros) remain in active use, including for users running current macOS via OpenCore Legacy Patcher, as in this case. The regression is precisely bisected (2.1.112 to 2.1.113) in the original report and has had no forward progress across 68+ releases. The cost of a fix is plausibly low: a baseline/non-AVX2 build target, matching the precedent set by tools like Bun itself, which ships -baseline builds for exactly this CPU population. At minimum, replacing a silent SIGILL crash-loop with an explicit "your CPU doesn't meet the minimum instruction set" message (mirroring the existing Apple Silicon requirement gate referenced in #18235) would be a low-cost improvement even if a full fix isn't prioritized.

Related: #50466, #62244, #62809, #5864, #10408, #19967, #21018, #41575, #51433, #50904

View original on GitHub ↗

7 Comments

github-actions[bot] · 2 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/63609
  2. https://github.com/anthropics/claude-code/issues/59965
  3. https://github.com/anthropics/claude-code/issues/62244

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

martinknowsbest · 2 months ago

Not a duplicate of any of the three flagged candidates - here's the distinction for each:

#62244 and #59965 are both already addressed directly in this report's body (see "Why a fresh report" and the Related list) - they're prior incidents of the same underlying regression, both eventually routed back to #50466, which was closed as "not planned" rather than fixed or merged. This report exists specifically because that regression is still unresolved in the current build (2.1.181), with new diagnostic data (confirmed-missing AVX2/BMI2/FMA via leaf7 feature dump, non-fat binary confirmation, and a new finding that Claude Desktop/Cowork users have no version-pinning workaround, unlike npm-install users).

#63609 is a related but distinct report: different platform (Linux, AMD Phenom II, no AVX at all) versus this report (macOS, Intel Ivy Bridge, AVX present but AVX2/BMI2/FMA absent). Worth noting #63609 is itself still open, and its own author had to push back against this same auto-duplicate-detection to keep it open, cross-linking to #51976, #54061, #37065, #65081, #65144, and #33153 - which shows this AVX/AVX2 baseline-build gap spans Linux, Windows, and macOS and has been recurring across many independent reports without a canonical fix landing anywhere in that cluster.

Keeping this one open and macOS/Ivy-Bridge-specific, since that's the precise repro this report documents.

relecand · 2 months ago

https://github.com/relecand/claude-desktop-avx-fix/tree/codex-fix-claude-sdk-cli-resolution

Fixes the Claude desktop app on older Intel Macs that lack AVX2 support.

mkramer1 · 1 month ago

Adding another data point: still crashing in 2.1.211 (latest as of 2026-07-16) on Ivy Bridge, on a different machine model than the reports above.

Environment

  • Model: MacBookPro10,1 (mid-2012 15" Retina MBP)
  • CPU: Intel Core i7-3820QM @ 2.7GHz (Ivy Bridge — no AVX2, no BMI2, no FMA)
  • macOS 14.8.7 (23J520)
  • Node 23.6.1 via nvm (npm install -g @anthropic-ai/claude-code@latest)
  • 2.1.112 installed via npm has been working reliably on this same machine for months.

Bisect confirmation on latest range

Ran a fresh bisect today between 2.1.112 and 2.1.211 (84 published versions in that range). Boundary matches #50466 exactly — nothing shifted:

| Version | Result |
|---|---|
| 2.1.112 | ✅ OK |
| 2.1.113 | ❌ SIGILL |
| 2.1.114 | ❌ SIGILL |
| 2.1.117 | ❌ SIGILL |
| 2.1.122 | ❌ SIGILL |
| 2.1.136 | ❌ SIGILL |
| 2.1.161 | ❌ SIGILL |
| 2.1.211 | ❌ SIGILL |

Each test was a fresh npm install --prefix /tmp/... @anthropic-ai/claude-code@<v> followed by claude --version. Every non-working version crashed at the same phase, and the process ended up stuck in UE+ (uninterruptible kernel state) — the SIGILL is delivered but the process can't be reaped, so even kill -9 doesn't clear it.

Crash signature

From ~/Library/Logs/DiagnosticReports/claude-<timestamp>.ips:

"exception" : {"codes":"0x0000000000000001, 0x0000000000000000","rawCodes":[1,0],"type":"EXC_BAD_INSTRUCTION","signal":"SIGILL"}
"termination" : {"code":4,"namespace":"SIGNAL","indicator":"Illegal instruction: 4","byProc":"exc handler"}

Faulting frames (top of stack, from crash log):

dyld4::Loader::findAndRunAllInitializers
dyld4::JustInTimeLoader::runInitializers
dyld4::Loader::runInitializersBottomUp
dyld4::APIs::runAllInitializersForMain
dyld4::prepare
start

Crash occurs during dyld static initializers — before main() runs — so the app has no opportunity to detect the missing CPU features and print a graceful error.

Instruction bytes at the faulting rip include VEX-prefixed sequences (0xC4 0xE2 ...) consistent with BMI2 (shrx/mulx/pdep/pext) and AVX2 opcodes, which matches @-referenced #75802's diagnosis: the darwin-x64 Bun build ships the non-baseline variant, while linux-x64 ships the baseline variant of the same Bun commit.

Workaround for affected users

Pin to 2.1.112:

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

This is the last version that runs on pre-Haswell Intel Macs. Subsequent installer paths (curl | bash, Homebrew cask, auto-updater) will overwrite it with a crashing binary, so npm-with-pin is the only stable install route until #75802 is resolved.

Happy to run additional diagnostics on this hardware if it would help.

ftshortt · 1 month ago

Summary: Claude Desktop's Cowork and Code tabs crash with SIGILL (exit code 132) on Intel Ivy Bridge CPUs lacking AVX2. Terminal CLI has a working fix via version pin; Desktop app has none.

Hardware:

  • iMac (Late 2012), Intel Ivy Bridge (3rd gen Core), no AVX2/BMI2 support

Symptom:

  • Claude Desktop → Chat: works fine (API-based, no local binary)
  • Claude Desktop → Cowork / Code tabs: crash immediately, "Claude Code process exited with code 132"
  • Terminal claude CLI: crashes on latest, but works when pinned to 2.1.107 via npm install -g @anthropic-ai/claude-code@2.1.107

Root cause (matches existing tracked issues, e.g. #50466, #56850, #62244, #50684): current Bun-compiled Claude Code binary requires AVX2, which Ivy Bridge doesn't have → SIGILL before startup.

What I've tried:

  • Reinstalling Claude Desktop — no effect, since Cowork/Code download and spawn their own bundled binary independent of any locally pinned CLI version.
  • Setting CLAUDE_CODE_LOCAL_BINARY via launchctl setenv to point at my working 2.1.107 binary — no effect. This variable appears to only be honored by an unofficial third-party Linux packaging project, not the official macOS Desktop build.

Ask: Either ship an AVX2-free ("baseline" x86-64) build for the binary Cowork/Code spawn internally, or add an official, documented way to point Desktop's internal Code/Cowork runtime at a user-specified claude binary (equivalent to what the terminal install lets me do). Right now there's no client-side workaround for Cowork/Code specifically on this hardware class, even though the CLI itself is fixable.

ftshortt · 1 month ago

Tested the "swap the binary in ~/Library/Application Support/Claude/claude-code/<version>/" idea from this thread on 2.1.217 (iMac13,2, i5-3470S, Ivy Bridge, no AVX2). Confirming it's a dead end, and why:

  1. Hash-pinned: there's a .verified file alongside the binary containing a SHA-256 hash — Desktop checks the binary against this before launch. Any substitute binary fails integrity verification immediately.
  1. Code-signed: claude.app/Contents/_CodeSignature/ and Contents/CodeResources are present — the bundle is Apple-codesigned. Replacing the binary invalidates the signature regardless of the hash check.
  1. Not interchangeable anyway: the Desktop-embedded binary (claude.app/Contents/MacOS/claude, ~260MB, native compiled) and the working npm CLI install (/usr/local/bin/claude, a symlink to cli.js, ~14MB, Node-run script) are structurally different artifacts. Even without the hash/signature gates, one can't be dropped in for the other.

Net: there is currently no user-side workaround for Cowork/Code on this hardware — not because no one's tried the obvious thing, but because Desktop's integrity checks (hash + codesign) actively block it, on top of the binary itself requiring AVX2. Downgrading the CLI helps terminal usage only, per the earlier finding in this thread — it doesn't touch the Desktop-embedded engine at all.

This narrows the ask: a real fix needs either an AVX2-free build variant shipped through the same verified/signed pipeline, or an explicit unsupported-CPU error instead of the silent SIGILL crash.

ftshortt · 1 month ago

Working Solution/Workaround
---
Workaround for Ivy Bridge (OCLP) SIGILL — Claude Code process exited with code 132

Tested on: Ivy Bridge Mac running macOS via https://dortania.github.io/OpenCore-Legacy-Patcher/, Claude Desktop 1.3036.0, npm CLI 2.1.107

---
Root cause

Exit code 132 = signal 4 (SIGILL — illegal instruction). The Claude Desktop app downloads and runs a native compiled binary for its Code and Cowork
tabs. That binary is compiled with AVX2 instructions. Ivy Bridge CPUs support AVX but not AVX2, so the binary crashes immediately on launch.

The npm-installed CLI (@anthropic-ai/claude-code) is a JavaScript file that runs on your system's Node.js — no AVX2 issues. The Desktop's bundled
binary and the npm CLI are completely different things.

---
What doesn't work

  • Downgrading Claude Desktop — the native bundled binary has used AVX2 for a long time. Even Desktop 1.3036.0 (April 2026, bundling claude-code

2.1.111) still crashes.

  • Swapping the bundled binary with the npm CLI directly — the Desktop bundle is an .app with Apple code signing and a .verified marker file. At

first glance this looks like it would block any swap.

---
What we found (via source analysis)

By extracting and reading Claude.app/Contents/Resources/app.asar, we found that the .verified file is only an existence marker — the Desktop checks
fs.access(".verified") before spawning, but never verifies its content or the binary's sha256 at spawn time. The sha256 check only happens during
the initial download. This means the binary can be replaced with any executable script.

---
The fix

Prerequisites: Install the npm CLI at a working version first:

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

Confirm it works:
claude --version
# should print: 2.1.107 (Claude Code)

Find the bundled binary path. The Desktop stores it under:
~/Library/Application Support/Claude/claude-code/{version}/claude.app/Contents/MacOS/claude

Check which version is present:
ls ~/Library/Application\ Support/Claude/claude-code/

Back up the original binary:
VERSION=$(ls ~/Library/Application\ Support/Claude/claude-code/ | head -1)
BINARY=~/Library/Application\ Support/Claude/claude-code/$VERSION/claude.app/Contents/MacOS/claude
cp "$BINARY" "${BINARY}.original"

Replace it with a wrapper script:
cat > "$BINARY" << 'EOF'
#!/bin/bash
exec /usr/local/bin/node /usr/local/lib/node_modules/@anthropic-ai/claude-code/cli.js "$@"
EOF
chmod +x "$BINARY"

Verify it runs cleanly:
"$BINARY" --version
# should print: 2.1.107 (Claude Code)
# exit code should be 0, not 132

Now open Claude Desktop and use the Code or Cowork tab — it should work.

---
Caveats

  • If Claude Desktop auto-updates and re-downloads the bundled binary, it will overwrite the wrapper and the crash will return. Check after any

Desktop update.

  • There may be minor compatibility differences between the Desktop's expected CLI version and 2.1.107 — if you see protocol errors, try a newer npm

version that still works on your machine.

  • To protect the wrapper from being overwritten, you can make the file read-only: chmod 555 "$BINARY" — though this may cause the Desktop to show a

download error instead.

---
Credit

This investigation and fix was worked out with help from Claude Code (the CLI) — which is a bit meta. It read the Electron app.asar source,
identified that .verified is only an existence check, and suggested the shell-script wrapper approach. If you're stuck on a similar issue, spinning
up claude in your terminal and walking through it step by step is genuinely useful.