luckman212 / screencapture-nag-remover

Small tool to disable macOS 15's annoying new screencapture nag popups
https://news.ycombinator.com/item?id=41658492
29 stars 1 forks source link
macos permissions screen-capture screencapture screencapturekit sequoia

macOS 15 screencapture nag remover

Abstract

macOS 15 (Sequoia) introduced a new "security" feature which has frustrated many people, and insulted power users who prefer to have full control over their systems. The effect is nagging popups like the one below when apps that you have already granted permission to try to capture your screen.

nag image

Hey Apple, you forgot the “Always Allow” option!

This script operates on the ~/Library/Group Containers/group.com.apple.replayd/ScreenCaptureApprovals.plist and sets the nag dates far in the future to avoid the popups from appearing.

macOS 15.1 (currently in beta)

macOS 15.1 introduces a new method for suppressing these alerts across the board. This leverages a configuration profile which must be provisioned by an MDM server (e.g Jamf, Addigy, Mosyle etc). Apple unfortunately prohibits self-installing configuration profiles for certain TCC settings, ScreenCapture being one of them.

But don't despair, for self-managed Macs, the script also supports the standard method of individually setting MRU dates for each app (including macOS 15.1's new multi-keyed dict approach).

Automatic Updates via LaunchAgent (required for smooth operation on 15.1)

macOS 15.1 made a change to replayd whereby upon each invocation of an app that requests ScreenCapture permission, the timestamp in the plist is overwritten with the current date/time. The net effect is that if you use an app once, and then don't use it again for >30 days, you will be nagged again, even if you had previously disabled the nag.

v1.3.0 of this script added a workaround for this: an option to install a LaunchAgent which runs every 24h and keeps the timestamps updated. This ensures that nags are kept hidden even as apps are used or if your system clock abruptly changes.

Setup

  1. Download the latest release.
  2. Open a Terminal and type cd ~/Downloads to navigate to the directory which should contain the file you just downloaded.
  3. Remove the quarantine flag which probably exists on the file: xattr -d com.apple.quarantine screencapture-nag-remover.sh
  4. Make the script executable: chmod a+x screencapture-nag-remover.sh
  5. Place that screencapture-nag-remover.sh file somewhere in your $PATH (I suggest /usr/local/bin if you're unsure)
  6. You are now ready to run the program!

Use

Open a Terminal and run:

screencapture-nag-remover.sh

Full Disk Access is required so the protected plist file can be accessed. The program will check to ensure FDA has been granted. If it hasn't, the relevant System Settings panel will be opened.

With no arguments, it will iterate over any apps which have requested screencapture permissions and set the nag date for each to 100 years in the future. That should prevent you from seeing the nag again.

N.B. If life expectancy increases dramatically over the next few years, you might need to run the app again in a decade or two. 😉

There are also a few commandline arguments:

Example of manually adding an app

macOS 15.0 (by specifying path)

screencapture-nag-remover.sh -a "/Applications/CleanShot X.app/Contents/MacOS/CleanShot X"

macOS 15.1 (using Bundle ID)

screencapture-nag-remover.sh -a cc.ffitch.shottr

If you encounter any problems, please file an issue. And in case anyone @Apple is reading this, please get rid of this bothersome "feature"...