Preflight Checklist
What's Wrong?
Description
Claude Code 2.0.15 crashes immediately on startup with an "Illegal instruction" panic when running on virtual machines that do not expose AVX CPU instructions. This is a breaking change from previous versions that used Node.js, as the new Bun runtime requires AVX support.
Environment
- Claude Code Version: 2.0.15
- OS: Linux (Debian-based, kernel 6.12.57)
- Virtualization: Proxmox VE with QEMU/KVM
- CPU Configuration: Default QEMU virtual CPU (does not expose AVX)
Error Output
============================================================
Bun v1.3.6 (d530ed99) Linux x64 (baseline)
Linux Kernel v6.12.57 | glibc v2.41
CPU: sse42 popcnt
Args: "claude"
Features: Bun.stderr(2) Bun.stdin(2) Bun.stdout(2) fetch(29) jsc no_avx2 no_avx spawn(20) standalone_executable
Builtins: "bun:main" "node:assert" "node:async_hooks" "node:buffer" "node:child_process" "node:constants" "node:crypto" "node:domain" "node:events" "node:fs" "node:fs/promises" "node:http" "node:https" "node:module" "node:net" "node:os" "node:path" "node:path/posix" "node:path/win32" "node:perf_hooks" "node:process" "node:querystring" "node:stream" "node:timers/promises" "node:tls" "node:tty" "node:url" "node:util" "node:zlib" "node:worker_threads" "undici" "ws" "node-fetch" "node:inspector" "node:http2" "node:diagnostics_channel"
Elapsed: 2882ms | User: 3646ms | Sys: 1240ms
RSS: 1.18GB | Peak: 0.44GB | Commit: 1.18GB | Faults: 0 | Machine: 16.78GB
CPU lacks AVX support. Please consider upgrading to a newer CPU.
panic(main thread): Illegal instruction at address 0x4001FB4
oh no: Bun has crashed. This indicates a bug in Bun, not your code.
Root Cause Analysis
Summary: The migration from Node.js to Bun runtime in Claude Code 2.0.15 introduced a hard dependency on AVX (Advanced Vector Extensions) CPU instructions, which are not exposed by default in many virtualized environments.
Technical Details:
- Runtime Change: Claude Code 2.0.15 switched from Node.js to Bun as its JavaScript runtime
- Bun's AVX Requirement: Bun's JavaScript engine (JavaScriptCore) uses AVX instructions for performance optimizations and crashes when these are unavailable
- Virtualization Impact: Common hypervisors (QEMU/KVM, VirtualBox, VMware) often use generic CPU models by default that don't expose AVX flags to guest VMs
- Breaking Change: Previous Node.js-based versions worked without AVX support
Why This Happens in VMs:
- Default QEMU CPU types like
qemu64 or kvm64 only expose baseline x86-64 instructions
- AVX support requires either:
- Passing through the host CPU type (
-cpu host)
- Using a CPU model that includes AVX (e.g.,
SandyBridge, Haswell, or newer)
Resolution / Workaround
For Proxmox/QEMU users:
- Shut down the VM
- Edit the VM configuration to use host CPU passthrough:
- In Proxmox UI: VM → Hardware → Processor → Type → Select "host"
- Or via CLI:
qm set <vmid> -cpu host
- Start the VM
For other hypervisors:
- VirtualBox: Ensure "Enable Nested VT-x/AMD-V" is enabled and use a modern CPU profile
- VMware: Use "Virtualize Intel VT-x/EPT or AMD-V/RVI" option
Verified Working: After changing the CPU type to host, Claude Code 2.0.15 launches successfully.
Check AVX availability:
grep -o 'avx[^ ]*' /proc/cpuinfo | head -1
# Should output: avx avx2 (or similar)
Suggested Improvements
- Documentation Update: Add a note about AVX CPU requirements to the installation documentation
- Graceful Error Handling: If possible, detect AVX support and provide a clearer error message before Bun crashes
- Consider Baseline Build: Bun offers a baseline build without AVX requirements that could be used as a fallback (though with reduced performance)
Impact
This issue affects users running Claude Code in:
- Proxmox VE with default CPU settings
- QEMU/KVM virtual machines
- Older cloud instances without AVX
- Any x86-64 environment without AVX support
Related
- Bun requires AVX support on x86-64: Bun's JavaScriptCore engine uses AVX instructions
- Bun does provide
baseline builds without AVX requirements, though the standalone executable bundled with Claude Code appears to use the standard build
What Should Happen?
Claude Code should either:
- Launch successfully on systems without AVX support (using a baseline Bun build), or
- Provide a clear, user-friendly error message explaining the AVX requirement and how to resolve it in virtualized environments, rather than crashing with a Bun panic
Error Messages/Logs
============================================================
Bun v1.3.6 (d530ed99) Linux x64 (baseline)
Linux Kernel v6.12.57 | glibc v2.41
CPU: sse42 popcnt
Args: "claude"
Features: Bun.stderr(2) Bun.stdin(2) Bun.stdout(2) fetch(29) jsc no_avx2 no_avx spawn(20) standalone_executable
Builtins: "bun:main" "node:assert" "node:async_hooks" "node:buffer" "node:child_process" "node:constants" "node:crypto" "node:domain" "node:events" "node:fs" "node:fs/promises" "node:http" "node:https" "node:module" "node:net" "node:os" "node:path" "node:path/posix" "node:path/win32" "node:perf_hooks" "node:process" "node:querystring" "node:stream" "node:timers/promises" "node:tls" "node:tty" "node:url" "node:util" "node:zlib" "node:worker_threads" "undici" "ws" "node-fetch" "node:inspector" "node:http2" "node:diagnostics_channel"
Elapsed: 2882ms | User: 3646ms | Sys: 1240ms
RSS: 1.18GB | Peak: 0.44GB | Commit: 1.18GB | Faults: 0 | Machine: 16.78GB
CPU lacks AVX support. Please consider upgrading to a newer CPU.
panic(main thread): Illegal instruction at address 0x4001FB4
oh no: Bun has crashed. This indicates a bug in Bun, not your code.
Steps to Reproduce
- Create a Linux VM in Proxmox (or other QEMU/KVM hypervisor) using the default CPU type (e.g.,
kvm64 or qemu64)
- Install Claude Code 2.0.15 via npm:
npm install -g @anthropic-ai/claude-code
- Run
claude in the terminal
- Observe the Bun crash with "Illegal instruction" panic
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.0.12
Claude Code Version
2.0.15
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
No response
Preflight Checklist
What's Wrong?
Description
Claude Code 2.0.15 crashes immediately on startup with an "Illegal instruction" panic when running on virtual machines that do not expose AVX CPU instructions. This is a breaking change from previous versions that used Node.js, as the new Bun runtime requires AVX support.
Environment
Error Output
Root Cause Analysis
Summary: The migration from Node.js to Bun runtime in Claude Code 2.0.15 introduced a hard dependency on AVX (Advanced Vector Extensions) CPU instructions, which are not exposed by default in many virtualized environments.
Technical Details:
Why This Happens in VMs:
qemu64orkvm64only expose baseline x86-64 instructions-cpu host)SandyBridge,Haswell, or newer)Resolution / Workaround
For Proxmox/QEMU users:
qm set <vmid> -cpu hostFor other hypervisors:
Verified Working: After changing the CPU type to
host, Claude Code 2.0.15 launches successfully.Check AVX availability:
Suggested Improvements
Impact
This issue affects users running Claude Code in:
Related
baselinebuilds without AVX requirements, though the standalone executable bundled with Claude Code appears to use the standard buildWhat Should Happen?
Claude Code should either:
Error Messages/Logs
Steps to Reproduce
kvm64orqemu64)npm install -g @anthropic-ai/claude-codeclaudein the terminalClaude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.0.12
Claude Code Version
2.0.15
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
No response