Voice input button starts audio context but receives silent stream — level meter dead, no transcription (macOS, fresh install)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

The voice input feature in Cursor’s chat is non-functional. Clicking the microphone button (or holding Ctrl+M) appears to activate the mic — the icon turns on and initAudioContext succeeds in the renderer — but the audio level visualizer never moves and no transcription text ever appears in the chat input box, regardless of how long or loud I speak. The audio stream Cursor receives appears to be completely silent at the application level, even though the OS-level microphone is working correctly for everything else.

Steps to Reproduce

  1. Open Cursor on macOS.
  2. Open the chat input (or Composer).
  3. Click the microphone icon, OR press and hold Ctrl+M.
  4. Speak normally for 5–30 seconds.
  5. Observe: level visualizer stays flat, no transcription appears, chat input remains empty.

Expected Behavior

  • Audio level visualizer should move while speaking.
  • Transcribed text should appear in the chat input box.
  • Stopping the mic (or releasing Ctrl+M) should leave the transcription in the input or auto-submit, depending on the configured mode.

Operating System

MacOS

Version Information

  • 3.2.21 (stable, arm64)
  • Layout: unifiedAgent
  • Bundle ID: com.todesktop.230313mzl4w4u92
  • Fresh reinstall from Cursor · Download — same behavior before and after

Additional Information

What works (rules out OS/hardware/permission causes):

  • macOS dictation (F5 / accessibility dictation) works perfectly in the same Cursor chat input — types in real time
  • Browser-based microphone input (Chrome) works fine on the same machine in web apps
  • macOS Privacy & Security → Microphone shows Cursor as allowed
  • tccutil reset Microphone com.todesktop.230313mzl4w4u92 followed by re-prompt and re-grant — no change
  • The com.apple.security.device.audio-input entitlement is present in the bundle
    DevTools console output when clicking the mic (Help → Toggle Developer Tools → Console):
    The only voice-related log entry is a yellow deprecation warning, with no error after it:

Does this stop you from using Cursor

Yes - Cursor is unusable

Same exact problem here on Windows 11. Also tried to resolve it in all the ways listed above but to no avail. Looks like the same issue appeared last December. Hopefully the developers can fix it soon.

I’m having the same issue on 11. Mic works fine on other apps and in gpt, not working in cursor for me.

Hey, thanks for the detailed report. The troubleshooting in the post is great, and it immediately rules out the usual suspects like entitlements, permissions, and hardware.

The cause is different. Voice input and transcription in Cursor are only available on paid plans Pro and above. Your account is currently on Free, so when you send audio for transcription, the request gets rejected on the backend. The client does not show this clearly. The button works, recording happens, but no text appears.

That’s honestly bad UX on our side. For Free users, the button should be hidden or show an upgrade prompt instead of failing silently. I reported this to the team as a separate issue so the behavior becomes explicit.

@Hagbard_Celine_42, @H37iX, you’re probably in the same situation. If you’re on Free, the symptoms match. If you’re on Pro and it still doesn’t work, that’s a different bug. In that case, please share your Cursor version and OS, and run Cursor Settings > Network > Run Diagnostics.

Thanks for the reply.
I am on Pro+ currently but my subscription is changing to Pro. I believe my subscription period changes in just a few hours, but regardless, it is still a paid plan. I updated Cursor while trying to troubleshoot this issue so I was using previous version before. It didn’t fixed it though.

Here is my information:

Version: 3.2.21 (user setup)
VSCode Version: 1.105.1
Commit: 806df57ed3b6f1ee0175140d38039a38574ec720
Date: 2026-05-03T01:46:14.413Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Windows_NT x64 10.0.26200

Diagnostics:
Cursor Network Diagnostic Results

DNS: Success
Logs:
[2026-05-05T08:57:22.237Z] Host: api2.cursor.sh
[2026-05-05T08:57:22.237Z] Servers: 192.168.219.1,2001:270::3:1,2001:270::4:1
[2026-05-05T08:57:22.237Z] Resolved to 3.220.93.0 in 8ms
[2026-05-05T08:57:22.335Z] Resolved to 3.220.93.0 in 77ms
[2026-05-05T08:57:22.346Z] Resolved to 3.220.93.0 in 1ms
[2026-05-05T08:57:22.350Z] Resolved to 3.220.93.0 in 0ms
[2026-05-05T08:57:22.354Z] Host: api2.cursor.sh
[2026-05-05T08:57:22.354Z] Servers: system
[2026-05-05T08:57:22.354Z] Resolved to 3.220.93.0, 3.213.20.174, 100.55.136.71, 50.16.109.83, 44.218.145.230, 34.237.58.26, 52.3.58.251, 54.197.117.20 in 3ms
[2026-05-05T08:57:22.354Z] Resolved to 3.220.93.0, 3.213.20.174, 100.55.136.71, 50.16.109.83, 44.218.145.230, 34.237.58.26, 52.3.58.251, 54.197.117.20 in 0ms
[2026-05-05T08:57:22.355Z] Resolved to 3.220.93.0, 3.213.20.174, 100.55.136.71, 50.16.109.83, 44.218.145.230, 34.237.58.26, 52.3.58.251, 54.197.117.20 in 0ms
[2026-05-05T08:57:22.355Z] Resolved to 3.220.93.0, 3.213.20.174, 100.55.136.71, 50.16.109.83, 44.218.145.230, 34.237.58.26, 52.3.58.251, 54.197.117.20 in 0ms
[2026-05-05T08:57:22.355Z] Result: true

HTTP/2: Success
Logs:
[2026-05-05T08:57:22.220Z] Start
[2026-05-05T08:57:22.631Z] Host: api2.cursor.sh
[2026-05-05T08:57:22.631Z] Protocol: h2
[2026-05-05T08:57:22.631Z] Result: true in 411ms

SSL: Success
Logs:
[2026-05-05T08:57:22.220Z] Start
[2026-05-05T08:57:22.821Z] URL: https://api2.cursor.sh/\
[2026-05-05T08:57:22.822Z] Status: 200
[2026-05-05T08:57:22.822Z] IP: 3.220.93.0
[2026-05-05T08:57:22.822Z] Issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M01
[2026-05-05T08:57:22.822Z] Name: api2.cursor.sh
[2026-05-05T08:57:22.822Z] AltName: DNS:api2.cursor.sh, DNS:prod.authentication.cursor.sh, DNS:*.api2.cursor.sh
[2026-05-05T08:57:22.822Z] DNS Time: 5ms
[2026-05-05T08:57:22.822Z] Connect Time: 198ms
[2026-05-05T08:57:22.822Z] TLS Time: 195ms
[2026-05-05T08:57:22.822Z] Result: true in 602ms

API: Success
Logs:
[2026-05-05T08:57:22.220Z] Start
[2026-05-05T08:57:23.894Z] Result: true

Ping: Success
Logs:
[2026-05-05T08:57:22.221Z] Sending ping 1
[2026-05-05T08:57:23.865Z] Response: ‘ping’ in 1644ms
[2026-05-05T08:57:23.865Z] Sending ping 2
[2026-05-05T08:57:24.654Z] Response: ‘ping’ in 789ms
[2026-05-05T08:57:24.654Z] Sending ping 3
[2026-05-05T08:57:24.965Z] Response: ‘ping’ in 311ms
[2026-05-05T08:57:24.965Z] Sending ping 4
[2026-05-05T08:57:25.732Z] Response: ‘ping’ in 767ms
[2026-05-05T08:57:25.732Z] Sending ping 5
[2026-05-05T08:57:26.480Z] Response: ‘ping’ in 748ms
[2026-05-05T08:57:26.480Z] Result: true

Chat: Success
Logs:
[2026-05-05T08:57:22.221Z] Starting stream
[2026-05-05T08:57:23.956Z] Response: ‘foo’ in 1734ms
[2026-05-05T08:57:24.972Z] Response: ‘foo’ in 1016ms
[2026-05-05T08:57:25.975Z] Response: ‘foo’ in 1003ms
[2026-05-05T08:57:26.974Z] Response: ‘foo’ in 999ms
[2026-05-05T08:57:27.975Z] Response: ‘foo’ in 1001ms
[2026-05-05T08:57:28.964Z] Result: true

Agent: Success
Logs:
[2026-05-05T08:57:22.222Z] Starting stream
[2026-05-05T08:57:22.222Z] Pushing first message
[2026-05-05T08:57:23.861Z] Response: ‘foo’ in 1639ms
[2026-05-05T08:57:24.372Z] Pushing next message
[2026-05-05T08:57:24.460Z] Response: ‘foo’ in 599ms
[2026-05-05T08:57:24.965Z] Pushing next message
[2026-05-05T08:57:25.063Z] Response: ‘foo’ in 603ms
[2026-05-05T08:57:25.563Z] Pushing next message
[2026-05-05T08:57:25.657Z] Response: ‘foo’ in 594ms
[2026-05-05T08:57:26.160Z] Pushing next message
[2026-05-05T08:57:26.248Z] Response: ‘foo’ in 591ms
[2026-05-05T08:57:26.248Z] Result: true

Marketplace: Success
Logs:
[2026-05-05T08:57:22.217Z] Host: marketplace.cursorapi
[2026-05-05T08:57:22.577Z] Response in 360ms
[2026-05-05T08:57:22.577Z] Response: 200
[2026-05-05T08:57:22.577Z] Response Type: cors
[2026-05-05T08:57:22.577Z] Server: null
[2026-05-05T08:57:22.577Z] Result: OK in 360ms

Authentication: Success
Logs:
[2026-05-05T08:57:22.217Z] Host: prod.authentication.cursor.sh
[2026-05-05T08:57:22.877Z] Response: 200 in 660ms

Authentication UI: Success
Logs:
[2026-05-05T08:57:22.220Z] DNS lookup: authenticator.cursor.sh
[2026-05-05T08:57:22.318Z] Resolved authenticator.cursor.sh to 172.64.152.23 in 80ms

Cursor Tab: Success
Logs:
[2026-05-05T08:57:22.220Z] DNS lookup: api3.cursor.sh
[2026-05-05T08:57:22.238Z] Resolved api3.cursor.sh to 104.18.18.125 in 10ms

Agent Endpoint: Success
Logs:
[2026-05-05T08:57:22.220Z] DNS lookup: agent.api5.cursor.sh
[2026-05-05T08:57:22.335Z] Resolved agent.api5.cursor.sh to 54.153.104.1 in 102ms

Codebase Indexing: Success
Logs:
[2026-05-05T08:57:22.220Z] DNS lookup: repo42.cursor.sh
[2026-05-05T08:57:22.334Z] Resolved repo42.cursor.sh to 34.229.69.39 in 88ms

Downloads: Success
Logs:
[2026-05-05T08:57:22.219Z] Host: downloads.cursor
[2026-05-05T08:57:22.892Z] Response: 403 in 673ms

CDN: Success
Logs:
[2026-05-05T08:57:22.219Z] Host: cursor-cdn
[2026-05-05T08:57:22.605Z] Response: 404 in 386ms

also having the same issue with the voice. it won’t transcribe my voice to text. other apps are working fine. just happened today, also installed the latest update.

Same issue for me, Pro user:

Environment:

- macOS: 23.6.0

- Cursor version: 3.2.21

- Mic: MacBook Pro built-in

- Language: English

Issue:

Pressing voice button shows listening animation, but speech is never detected.

What I verified:

- Voice Memos records normally.

- Microphone permission for Cursor is enabled.

- Input device set to built-in mic.

- In Cursor DevTools:

  • navigator.mediaDevices.enumerateDevices() shows audioinput devices

  • navigator.mediaDevices.getUserMedia({audio:true}) returns active MediaStream

- Console only shows:

[Deprecation] ScriptProcessorNode is deprecated (no hard error)

Recovery attempts:

- Reload Window

- Full system restart

- Full app quit/reopen

- Killed Cursor processes

- Switched input routes (built-in/iPhone/back)

- Restarted coreaudiod

- No change

@Hagbard_Celine_42, thanks for clarifying. Since you’re on Pro+, this isn’t a paywall issue. The symptoms look similar, but the cause is different. To figure out what’s happening, I need a few details:

  1. Open DevTools in Cursor via Help → Toggle Developer Tools → Console. Click the mic, say a couple words, then stop. Please paste everything that shows up in the console, including warnings.
  2. Does the audio level visualizer the wave around the button move while you speak, or does it stay still? This is important since it helps tell apart audio not reaching Cursor vs audio arriving but transcription getting rejected.
  3. Do the mic button and Ctrl+M behave the same, or does one work while the other doesn’t?
  4. What mic are you using built-in, USB, or Bluetooth, and what’s set as the default recording device in Windows Sound Settings? If you can, try switching to another mic and test again.
  5. You’re on the editor layout the classic one. If you switch to Glass via Cursor Settings > General > Layout and try there, does the behavior change?

Hi, same issue here, it was working perfectly yesterday but it stopped working today. My environment:
OS: Ubuntu 24.04.4 LTS
Install: AppImage
Cursor versions I tried: Cursor-2.4.37-x86_64.AppImage, Cursor-3.0.12-x86_64.AppImage and Cursor-3.2.21-x86_64.AppImage
Mic I tried: Laptop built-in and camera built-in
Language: English and Spanish

With all the AppImages I have the same symptoms, I click the voice button, I see the voice level moving, but no text appears in the chat.
I tested more AppImages from version 2.4.37 (6 from 12 intermediate versions) until 3.2.21 (that I downloaded today) and they all fail the same when before they used to work.
I checked both mics works with other applications, that I can capture audio, etc. The only app failing with the mic is Cursor.

Opening DevTools->Network I can see the same error in all of them:
URL: vscode-file://vscode-app/.../vs/workbench/contrib/composer/browser/voice/voice-processor.js
tatus: (failed) net::ERR_FILE_NOT_FOUND

I uploaded the screenshot of the only three entries that appeared during the voice recording using Cursor-3.2.21-x86_64.AppImage.

My Account is an enterprise team account. As I stated, Using AppImages, so no code changed in the Cursor installation, yesterday it was working, today it doesn’t with any of the previous AppImages that it used to work. All other Linux apps work fine with the mics.

  1. From the console:
    workbench.desktop.main.js:41817 [Deprecation] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (Audio Worklet is now available by default  |  Blog  |  Chrome for Developers)
  2. Audio level visualizer does not react to voice.
  3. Mic button and Ctrl+M aren’t working.
  4. I primarily use the built-in mic but I tested a bluetooth mic and it isn’t working either.
  5. I tested in Agent mode and still no sauce.

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Voice mode is not working properly. When using voice mode, the audio waves are visible and appear to be moving (indicating the microphone is picking up audio) but text does not appear at all. Yesterday it was working fine for me.
The mic input works well on other apps such as Voice Memo and Google Meet.

Steps to Reproduce

  1. Open a chat panel in Cursor IDE
  2. Click the Voice Mode microphone button to start voice input
  3. Speak into the microphone - audio waves are visible and moving
  4. Press the Stop button to end voice input
    Observe: no text is transcribed or outputted into the chat/editor

Expected Behavior

text should be written into the chat window while i speak

Operating System

MacOS

Version Information

Version: 3.2.21 (Universal)
VSCode Version: 1.105.1
Commit: 806df57ed3b6f1ee0175140d38039a38574ec720
Date: 2026-05-03T01:46:14.413Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.4.0

For AI issues: which model did you use?

tried with Auto, Sonet 4.6, and Opus 4.7

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

When I’m in the Cursor IDE, I try pressing the microphone button and the UI correctly enters listening mode. However, no matter how long I speak, nothing is written in the text field when I press stop.

However, when I’m in the Agents window, the microphone button works correctly; it listens to me and transcribes exactly what I say.

Therefore, the issue only occurs within the IDE. I will attach two screenshots for reference.

Steps to Reproduce

This bug has a 100% reproduction rate, regardless of which version of Cursor I install. My microphone no longer works within the IDE.

Expected Behavior

I would like the microphone to work within the IDE and function exactly the same way in Agent Window mode.

Screenshots / Screen Recordings

Operating System

MacOS

Version Information

Version: 3.2.21
VSCode Version: 1.105.1
Commit: 806df57ed3b6f1ee0175140d38039a38574ec720
Date: 2026-05-03T01:46:14.413Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0

Does this stop you from using Cursor

No - Cursor works, but with this issue

do you have an estimation to when it will be fixed?
since i saw in other tickets that it was said that there is a limitation for free plans, i just want to add that i have a paid subscription to Cursor

Hey everyone, quick update.

Thanks for the extra reports, we’ve got a clear picture now. This is not the same issue as the OP’s free tier paywall. For paid users, this looks like a regression in 3.2.21 that only affects the IDE editor layout.

The key clue is in @Angel_Barragan1’s DevTools Network capture. The AudioWorklet file voice-processor.js is failing with net::ERR_FILE_NOT_FOUND. Without that file, the recorder doesn’t get usable audio frames. That’s why the level meter is dead for some of you and why nothing ever reaches transcription. @Gwab’s note that voice still works in the Agents Window but not in the IDE matches this. The Agents or Glass surface uses a different code path that does include the file.

We’ve reported this internally as a regression. No ETA yet. I’ll post here when I have an update.

Workarounds for now:

  • Use the mic button in the Agents Window. Transcription works there on the same build.
  • On macOS, you can use the system dictation shortcut Fn+F5 by default. It types straight into the Cursor chat input.
  • Downgrading doesn’t help. Per @Angel_Barragan1’s tests across multiple AppImage versions, I wouldn’t recommend reinstalling older builds.

Quick confirmation request so we’re sure it’s the same regression:

  • Open Help > Toggle Developer Tools > Network tab
  • Filter by voice-processor
  • Click the mic, speak, stop
  • If you see voice-processor.js failing with ERR_FILE_NOT_FOUND, reply with a one line confirmed
  • If you see something else in the Network tab, paste that instead. It’ll help us figure out if anyone has a different cause.

it happens to me and i’m on Pro

Same issue here on Ultra.

i’m on the ultra plan, have been for months, the voice function issue i described above just suddenly stop worked, as described, yesterday. i’m not on a free plan.

i’m not on free tier. what is making you think i’m on free (that is, do you see something different on subscription on your end)? when i said a “fresh download” i just mean i downloaded it again. i’m in ultra

Yes I have been having this exact issue since yesterday, across two different computers. I’m on v2.3.21. I can see the “voice-processor.js (failed)” error in Cursor’s network console. For now, I’m working around it by using the macos “voice memo” app.

I’m in a shared corporate account with hundreds of users. My coworkers report seeing the same bug. So this problem is definitely not limited to the free tier.

It’s quite disruptive – Hope we see a fix soon! :folded_hands:t2:

@dato2000, the email you used on the forum shows up in our system on the Free plan. That’s why my first reply went in the paywall direction. If you’re on Ultra under a different email, that’s totally fine, it just means the forum is linked to a different account.

But that’s not the main thing. The symptom you described matches the same regression as everyone else in this thread. Right now, on any tier, in the IDE editor layout voice-processor.js fails with net::ERR_FILE_NOT_FOUND, and without it the recorder can’t get audio. So regardless of plan, it’s the same fix.

@uri111, @mqln, @Tim_Jones1, this is for you too. @Tim_Jones1 already confirmed the Network error, thanks. We’ve reported the issue internally, no ETA yet. We’ll post an update in the thread when we have one.

Workarounds for now:

  • The mic button in the Agents Window works on the same build, it uses a different code path and the worklet file loads.
  • On macOS you can use system dictation Fn+F5 by default, it types directly into Cursor’s chat input.
  • Rolling back to older builds doesn’t help, based on @Angel_Barragan1’s tests.