[BUG] Voice mode: native audio-capture module crashes on Linux x64 (Node 22)

Resolved 💬 2 comments Opened Mar 25, 2026 by lilly-arch Closed Apr 23, 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?

## Description

Voice mode activates ("Listening" appears in footer) but after releasing Space, no transcription is produced. The native audio-capture.node module crashes with a NAPI assertion error when startRecording is called.

The microphone hardware works fine — arecord captures audio successfully, and the native module loads without error. The crash only occurs when actually starting a recording.

## Environment

  • Claude Code: 2.1.83
  • Node.js: v22.19.0
  • OS: Ubuntu, Linux 5.15.0-139-generic x86_64
  • Terminal: GNOME Terminal
  • Audio hardware: HDA Intel PCH / CX8070 (detected by arecord -l)
  • PulseAudio source: alsa_input.pci-0000_00_1f.3.analog-stereo (works with arecord)
  • Native module path: vendor/audio-capture/x64-linux/audio-capture.node

## Notes

  • The native module loads successfully (require() works, exports are present)
  • arecord and rec (SoX) are both installed and work correctly
  • The crash appears to prevent fallback to arecord/rec
  • microphoneAuthorizationStatus() returns 3

What Should Happen?

Voice mode should work.

Error Messages/Logs

Calling `startRecording` on the native module directly produces:

Auth status: 3
Starting recording...

#  node[128144]: napi_status napi_release_threadsafe_function(napi_threadsafe_function, napi_threadsafe_function_release_mode) at ../src/node_api.cc:1410                                                                                                                     
    
#  Assertion failed: (func) != nullptr
                                                                                                                                                                                                                                                                                  
----- Native stack trace -----
                                                                                                                                                                                                                                                                                
1: 0xf74a87 node::Assert(node::AssertionInfo const&) [node]
2: 0xf2a28a napi_release_threadsafe_function [node]
3: 0x7faf7770236a  [audio-capture.node]                                                                                                                                                                                                                                        
4: 0x7faf776e9480  [audio-capture.node]
5: 0x7faf776e3eee  [audio-capture.node]                                                                                                                                                                                                                                        
6: 0xefd8a5  [node]

Steps to Reproduce

  1. /voice to enable voice mode
  2. Hold Space — "Listening" appears
  3. Speak, then release Space
  4. Nothing happens — no transcription, no error shown in the UI

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.83

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

Other

Additional Information

_No response_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗