Created
June 19, 2026 18:47
-
-
Save ChrisHardie/b65455b05064cbed4e8ae2e381a8f22b to your computer and use it in GitHub Desktop.
Fix Photoshop 2025 droplets not running on macOS Tahoe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| APP="${1:-}" | |
| if [[ -z "$APP" ]]; then | |
| echo "Usage: fix-droplet.sh \"/path/to/Droplet.app\"" | |
| exit 1 | |
| fi | |
| if [[ ! -d "$APP" ]]; then | |
| echo "Error: Not a directory (expected .app bundle): $APP" | |
| exit 1 | |
| fi | |
| BUNDLE_ID=$(defaults read "$APP/Contents/Info" CFBundleIdentifier 2>/dev/null || true) | |
| if [[ -z "$BUNDLE_ID" ]]; then | |
| echo "Error: Could not read CFBundleIdentifier from Info.plist" | |
| exit 1 | |
| fi | |
| echo "Fixing Photoshop droplet: $APP" | |
| echo "Bundle ID: $BUNDLE_ID" | |
| echo "--------------------------------" | |
| # 1. Remove quarantine and extended attributes | |
| echo "[1/4] Removing extended attributes..." | |
| xattr -dr com.apple.quarantine "$APP" || true | |
| xattr -cr "$APP" || true | |
| find "$APP/Contents" -name ".DS_Store" -delete 2>/dev/null || true | |
| # 2. Fix corrupted NSAppleEventsUsageDescription in Info.plist | |
| # A blank or single-space value causes Gatekeeper to reject the bundle | |
| # and prevents TCC from prompting for Apple Events permission | |
| echo "[2/4] Fixing NSAppleEventsUsageDescription in Info.plist..." | |
| sudo plutil -replace NSAppleEventsUsageDescription \ | |
| -string "This droplet needs to send Apple Events to Adobe Photoshop to run actions." \ | |
| "$APP/Contents/Info.plist" | |
| # 3. Re-sign to cover Droplet.8BDR which Adobe's original signature excludes | |
| # Without this Gatekeeper rejects the bundle as damaged | |
| echo "[3/4] Re-signing bundle..." | |
| codesign --force --deep --sign - "$APP" | |
| # 4. Grant Apple Events permission in TCC database | |
| # macOS will not prompt for permission on an ad-hoc signed bundle, | |
| # so we insert the entry directly | |
| echo "[4/4] Granting Apple Events permission in TCC database..." | |
| TCC_DB="$HOME/Library/Application Support/com.apple.TCC/TCC.db" | |
| TIMESTAMP=$(date +%s) | |
| sqlite3 "$TCC_DB" "INSERT OR REPLACE INTO access VALUES( | |
| 'kTCCServiceAppleEvents', | |
| '$BUNDLE_ID', | |
| 0, 2, 4, 1, | |
| NULL, NULL, 0, | |
| 'com.adobe.Photoshop', | |
| NULL, 0, | |
| $TIMESTAMP, | |
| NULL, NULL, 'UNUSED', 0 | |
| );" | |
| echo "--------------------------------" | |
| echo "Done. Verifying TCC entry..." | |
| sqlite3 "$TCC_DB" "SELECT service, client, auth_value FROM access WHERE client='$BUNDLE_ID' AND service='kTCCServiceAppleEvents';" | |
| echo "" | |
| echo "Make sure Photoshop is running before dropping a file onto the droplet." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment