SIGILL on AVX2-less Intel Macs still present in 2.1.181 (regression from #50466 persists)
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
- 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.
- 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).
- The process crashes with SIGILL within ~300ms, before reaching a ready state. Confirm via Console.app or ~/Library/Logs/DiagnosticReports/claude-*.ips.
- 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
7 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
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.
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.
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
npm install -g @anthropic-ai/claude-code@latest)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 byclaude --version. Every non-working version crashed at the same phase, and the process ended up stuck inUE+(uninterruptible kernel state) — the SIGILL is delivered but the process can't be reaped, so evenkill -9doesn't clear it.Crash signature
From
~/Library/Logs/DiagnosticReports/claude-<timestamp>.ips:Faulting frames (top of stack, from crash log):
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
ripinclude 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: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.
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:
Symptom:
claudeCLI: crashes on latest, but works when pinned to2.1.107vianpm install -g @anthropic-ai/claude-code@2.1.107Root 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:
CLAUDE_CODE_LOCAL_BINARYvialaunchctl setenvto 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
claudebinary (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.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:
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.
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
2.1.111) still crashes.
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
Desktop update.
version that still works on your machine.
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.