You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In MacOS Sequoia (15) Apple have changed where configuration is stored for enabling AppleScript control of VoiceOver.
Specifically ~/Library/Preferences/com.apple.VoiceOver4/default.plist has been replaced by the sandboxed ~/Library/Group Containers/group.com.apple.VoiceOver/Library/Preferences/com.apple.VoiceOver4/default.plist.
# Update VoiceOver Utility to allow VoiceOver to be controlled with AppleScript# by creating a special Accessibility DB file (SIP must be disabled) and# updating the user defaults system to reflect this change.if csrutil status | grep -Eq "System Integrity Protection status: (disabled|unknown)";then
sudo bash -c 'echo -n "a" > /private/var/db/Accessibility/.VoiceOverAppleScriptEnabled'# New requirement for MacOS Sequoia replacing the `defaults write` below. Due to the plist being located in sandboxed location SIP or similar security controls need to be relaxed before unentitled apps/scripts can modify the value.
sudo plutil -replace SCREnableAppleScript -bool true~/Library/Group\ Containers/group.com.apple.VoiceOver/Library/Preferences/com.apple.VoiceOver4/default.plist
fi
defaults write com.apple.VoiceOver4/default SCREnableAppleScript -bool YES
Note: care needed to make sure that this new command is only executed for MacOS 15 (Darwin 24) agents (as presumably the file does not exist for earlier versions of the OS!)
Platforms affected
Azure DevOps
GitHub Actions - Standard Runners
GitHub Actions - Larger Runners
Runner images affected
Ubuntu 20.04
Ubuntu 22.04
Ubuntu 24.04
macOS 12
macOS 13
macOS 13 Arm64
macOS 14
macOS 14 Arm64
macOS 15
macOS 15 Arm64
Windows Server 2019
Windows Server 2022
Windows Server 2025
Image version and build link
Image: macos-15-arm64
Version: 20241217.490
Included Software: https://github.com/actions/runner-images/blob/macos-15-arm64/20241217.490/images/macos/macos-15-arm64-Readme.md
Image Release: https://github.com/actions/runner-images/releases/tag/macos-15-arm64%2F20241217.490
VoiceOver cannot be automated through AppleScript.
Repro steps
Run macos-15 agent
Start VoiceOver, e.g. execute /System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter
Attempt to control VoiceOver using AppleScript, e.g. execute
-- example.applescripttellapplication"VoiceOver"activatetell vo cursor to perform action
end tell
/usr/bin/osascript example.applescript
Observe that the script errors with example.applescript:60:74: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708) when it would normally succeed (because the dictionary isn't loaded when AppleScript control is disabled).
The text was updated successfully, but these errors were encountered:
Description
In MacOS Sequoia (15) Apple have changed where configuration is stored for enabling AppleScript control of VoiceOver.
Specifically
~/Library/Preferences/com.apple.VoiceOver4/default.plist
has been replaced by the sandboxed~/Library/Group Containers/group.com.apple.VoiceOver/Library/Preferences/com.apple.VoiceOver4/default.plist
.This means the current code at https://github.com/actions/runner-images/blob/main/images/macos/scripts/build/configure-machine.sh#L22-L28 is no longer sufficient to allow the automation of VoiceOver on macos-15 agents.
This should be updated to something similar to:
where the pertinent addition is:
Note: care needed to make sure that this new command is only executed for MacOS 15 (Darwin 24) agents (as presumably the file does not exist for earlier versions of the OS!)
Platforms affected
Runner images affected
Image version and build link
REF: https://github.com/guidepup/setup/actions/runs/12561961803/job/35021706292?pr=39
Is it regression?
No
Expected behavior
VoiceOver can be automated through AppleScript.
Actual behavior
VoiceOver cannot be automated through AppleScript.
Repro steps
Run
macos-15
agentStart VoiceOver, e.g. execute
/System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter
Attempt to control VoiceOver using AppleScript, e.g. execute
Observe that the script errors with
example.applescript:60:74: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
when it would normally succeed (because the dictionary isn't loaded when AppleScript control is disabled).The text was updated successfully, but these errors were encountered: