Technical / 4 min read
Why window-hiding flags don't guarantee a private screen share
A window’s sharing flag does not guarantee that every recorder will exclude it. Apple now describes NSWindow.SharingType.none as a legacy constant that macOS no longer uses. ScreenCaptureKit filters apply to the stream an app creates, so ScreenVeil’s filtered window must be the source selected in the meeting or recording app.
A window's sharing setting doesn't protect it from every screen recorder on your Mac. Pick the right window in your meeting app and check what it records.
By ScreenVeilUpdated
What changed in macOS 15Does a window-sharing flag prevent screen capture?
A window-sharing flag is not a reliable promise that another app cannot capture the window. Apple’s current AppKit documentation describes NSWindow.SharingType.none as a legacy constant that macOS no longer uses.
The historical URL of this article refers to macOS 15. The current documentation supports a narrower conclusion than “every recorder broke in one macOS release”: do not build a privacy guarantee around that flag. Recorder implementations and operating-system versions need their own checks.
This distinction matters when a tool says a window is private. Ask whether it changes a property on that window, filters a capture stream it controls, or changes what you share in the meeting app. Those are different controls.
Who controls each part of a screen share?
The app creating a capture stream controls that stream’s filter. A separate meeting app controls its own selected source; ScreenVeil does not set that selection for it.
Apple’s SCContentFilter API supports selecting or excluding windows and applications from a stream. ScreenVeil uses a filtered capture to create its output. That output is useful because another app can capture the resulting window, rather than being expected to honor a global hiding rule.
Scroll sideways to compare →
| Control | Where it applies | What it does not establish |
|---|---|---|
| A window’s AppKit sharing property | The app’s own window configuration | A universal exclusion rule for other recorders |
| SCContentFilter | The SCStream created with that filter | Filtering in another app’s independent capture |
| Meeting or recorder source picker | The window, app or display that tool captures | That the selected content has been checked for private information |
How does the Privacy Screen window fit in?
Privacy Screen is the output you intentionally share. The private apps remain on your Mac while ScreenVeil leaves them out of its own capture.
Hide on My Mac has a different practical tradeoff: it hides private apps on the actual desktop or moves them to another display. Reopening one while sharing that desktop can reveal it. It does not create a system-wide ban on recording either.
Two captures, with a window between them
- 01
ScreenVeil captures
Its ScreenCaptureKit stream applies the app and window exclusions you choose.
- 02
ScreenVeil displays
The filtered result appears in an AppKit window named Privacy Screen.
- 03
The meeting app captures
You select Privacy Screen in that app’s source picker and check what the receiver gets.
How can you check your actual setup?
If the result is ambiguous, stop the share and resolve the source selection. A successful check supports that specific setup; it does not show that an unrelated recorder will exclude your windows.
- 1
Choose the source
Start Privacy Screen, exclude the notes app and select Privacy Screen in the meeting or recorder.
- 2
Exercise the windows
Bring the notes forward, switch back to the slide and move the windows as you would during the session.
- 3
Inspect the output
Watch from a second device or review the short recording. The private sample should stay absent while the public slide updates.
- 4
Check again after changes
Repeat after changing the selected source, display arrangement, macOS version or recording app.