Repository navigation
[Bug]: Built-in browser denies microphone access to web pages #19081
Replies: 1 comment
|
Consolidating the camera use case and proposal here, as requested in #19284. This is a feature/RFC, not a bug report. Direction and scope approval are still needed before a PR proceeds. The implementation in #19285 remains a reference; I am closing that premature PR and the duplicate issue while the discussion is pending. Embedded camera use caseAn Infosys Springboard system check requests a camera from Proposed consent model
This does not forward a remote client's webcam into a streamed/headless browser or change provider, web/mobile, or wire permissions. Local prototype evidenceThe user supplied this screenshot after running the Linux development checkout. It shows the requested camera, both origins, and the Allow/Deny controls: The screenshot establishes that the dialog appeared. The user subsequently confirmed that clicking Allow delivered camera video in the local Linux development build. This is user-reported manual verification; the agent did not independently observe the stream or retain a capture recording. The screenshot predates the final macOS helper-entitlement packaging adjustment; the dialog implementation is unchanged. The prototype passes 104 focused tests, desktop/scripts typechecks, touched-file lint, and desktop bundle generation. A new consent test fails against unmodified main at the grant assertion and passes with the implementation. These are policy tests with mocked Electron callbacks, not physical-device proof. Microphone capture, a complete before/after screenshot pair, requesting-subframe navigation, Windows runtime, and signed macOS TCC/helper behavior remain unverified. No exam completion or remote webcam support is claimed. Direction requestedWould maintainers accept this direction and scope, particularly the session-only decisions and reset mechanism, or prefer dedicated per-site permission controls or a smaller initial scope? I will keep the implementation on my fork while approval is pending and adjust it to the agreed scope. |

Uh oh!
There was an error while loading. Please reload this page.
Originally filed as issue #18970 by @bjesuiter: #18970
Before submitting
Area
apps/desktop, built-in browser preview
Problem
Web pages in T3 Code's built-in browser cannot obtain microphone input. This blocks testing WebRTC/audio-capture applications inside the preview.
Steps to reproduce
https://webrtc.github.io/samples/src/content/getusermedia/gum/in T3 Code's built-in browser.navigator.permissions.query({ name: "microphone" })andnavigator.mediaDevices.getUserMedia({ audio: true }).Actual behavior
In T3 Code Nightly
0.0.46-nightly.20261012.3021on macOS 26.7.1, the HTTPS page reportsisSecureContext === trueandnavigator.mediaDevicesexists, but the microphone permission state isdenied.getUserMedia({ audio: true })rejects withNotSupportedError: Not supported. No grant path is offered to the user.Expected behavior
A page should be able to request microphone access with an origin-specific user prompt, then capture audio after the user grants the relevant macOS and site permissions. The user should be able to revoke the grant.
Likely cause
The Electron preview session's permission request and check handlers return
ALLOWED_PREVIEW_PERMISSIONS.has(permission). The allowlist omitsmedia, so media capture requests are denied. See BrowserSession.ts on current main and the handlers. The behavior was reproduced in the preview; the source points to the likely reason but was not debugged at runtime.Related reports
Workaround
Open the application in an external browser for microphone testing.
All reactions