Skip to content

[Bug]: macOS 15.2+: in-app MCP startRecording opens Apple's picker instead of recording the window, then times out #1232

Closed

Description

@EtienneLescot

Platform: macOS 26.5 (M1), CI build of main @ 61fa43812 (run 38615516865, notarized). Found in the retest logged in #1231.

Repro

  1. Launch OpenScreen normally, without OPENSCREEN_MAC_SOURCE_PICKER, on macOS 15.2 or later, with Screen Recording granted.
  2. In AI settings, turn on the MCP server and MCP edits.
  3. From an MCP client: startRecording with window: "<a window from listSources>", systemAudio: true.

Expected: the editor closes and the recording bar records that window, as the in-app tool description and the checklist say, and as the stdio server does.

Actual: the editor closes and Apple's "Share a Window or Entire Screen" picker opens, waiting for a click. With nobody at the Mac, the call fails after 120 s with "capture had not started". The picker then stays on screen after the timeout, and even after OpenScreen quits, until someone presses Cancel.

Cause: pointHudAtTake in electron/ipc/handlers.ts clears the selected source on purpose when macPickerOwnsSources(): "Apple's picker asks for this take". The window and display arguments are never used on macOS 15.2+. With OPENSCREEN_MAC_SOURCE_PICKER=legacy the same call starts in 4.3 s and records the window.

Impact: on a default install of a supported macOS, the in-app server cannot record unattended, which is what an agent calls it for. It also leaves a system picker stuck on the user's screen.

Direction: for an MCP take that names a window or a display, pick that source the way the legacy path and the stdio server do. That path needs the Screen Recording grant; when the grant is missing, refuse with a message that says so instead of falling back to the picker. Separately, a take that times out should end its picker session, so the picker does not outlive the request.

Activity

  1. added
    status: fixed in mainWork is merged into main but may not be in a downloadable release yet.
    status: pending releaseMerged change is waiting for a packaged desktop release.
    on Oct 14, 2026
  2. added this to the Next Release milestone on Oct 14, 2026
  3. github-actions commented on Oct 14, 2026

    @github-actions
    Contributor

    Fixed by #1237 and merged into main.

    This change is assigned to the Next Release release milestone and is not necessarily available in the latest downloadable desktop release yet. It is currently marked as status: pending release until a packaged release containing it is published.

  4. added a commit that references this issue on Oct 14, 2026
    6bfbcb3
  5. added a commit that references this issue on Oct 15, 2026
  6. EtienneLescot commented on Oct 15, 2026

    @EtienneLescot
    MemberAuthor

    Moved into v2.1.0 as part of the pre-release cut.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstatus: fixed in mainWork is merged into main but may not be in a downloadable release yet.status: pending releaseMerged change is waiting for a packaged desktop release.

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions