Skip to content

Voice mode stops working mid-session after audio input device change (Bluetooth); only terminal restart fixes it #80366

Description

@mandarparikh

Summary

Voice/dictation stops capturing audio mid-session after the audio input device changes (e.g. connecting or disconnecting Bluetooth headphones like AirPods). Claude Code surfaces an error — "No audio detected… Check that the correct input device is selected…" — but provides no in-session way to re-select or re-bind the input device. The only fix is fully quitting and relaunching the terminal (⌘Q, not window-close). A newly launched terminal works immediately; the already-running one stays broken.

Environment

  • Claude Code: 2.1.218
  • macOS: 26.5.1 (build 25F80)
  • Terminal: Apple Terminal (TERM_PROGRAM=Apple_Terminal)
  • Voice mode: voice.enabled: true, voice.mode: hold
  • Microphone permission: granted to Terminal (present + authorized in the TCC microphone table)

Reproduction

  1. Launch the terminal + Claude Code, use voice — works.
  2. Mid-session, change the default audio input device — e.g. connect Bluetooth AirPods (or disconnect them / plug/unplug wired headphones).
  3. Try voice in the same (already-running) session → recording captures nothing and Claude Code shows: "No audio detected… Check that the correct input device is selected…." Settings are unchanged and mic permission is unchanged — but there is no way in the app to actually re-select/re-bind the input device it is pointing at.
  4. Launch a new terminal window/process and try voice there → works (it may prompt for mic access on first use, which is expected for a fresh process).
  5. Back in the original session, only ⌘Q + relaunch restores voice. Toggling /voice off/on does not.

Likely root cause

The "No audio detected — check the input device" error is the tell: the audio input device binding is established once, when the process starts. When the default input device changes underneath a running process (a CoreAudio device change from Bluetooth connect/disconnect, headphone plug/unplug, etc.), the capture pipeline keeps reading from the now-stale device and gets no audio. The app correctly detects the silence and even advises checking the input device — but exposes no in-session control to switch/re-bind it, so only a full process restart recovers it.

Expected behavior

When "No audio detected" fires (or when the audio input device changes mid-session), Claude Code should re-bind to the current default input device — or offer an in-session way to select/re-bind the input device — instead of requiring a full terminal restart. The error already points the user at the input device; there should be a way to act on it without quitting.

Workarounds (current)

  • ⌘Q (full quit, not window-close) + relaunch, then /voice.
  • Connect the intended mic (AirPods/Bluetooth) before launching the terminal, and avoid changing audio input devices during a session.

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleIssue is inactive

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions