You can find WFActions.plist
from /System/Library/PrivateFrameworks/WorkflowKit.framework/
on macOS and iOS, which contains useful info on some of the native actions. The following actions have the RateLimit
field:
- Take Screenshot
RateLimit: {Delay: 3, Threshold: 1, Timeout: 20} - Set Wallpaper
RateLimit: {Delay: 3, Threshold: 1, Timeout: 20} - Send Message
RateLimit: {Delay: 3, Threshold: 4, Timeout: 30} - Show Notification
RateLimit: {Delay: 2, Threshold: 30, Timeout: 30}
After some experiments, I think I figured out what each of them means:
- If Timeout is not active, the action executes immediately. Then Timeout activates and counter increments.
- If Timeout is active and counter ≤ Threshold, the action executes immediately. Timeout restarts and counter increments.
- If Timeout is active and counter > Threshold, the action takes Delay seconds to execute. Timeout restarts and counter increments.
- Counter resets to 0 after Timeout seconds without executing the action.
- Timeout and counter apply globally. For example, if shortcut A takes a screenshot and finishes, shortcut B will get a 3-second delay when taking a new screenshot within 30 seconds.
Note: WFActions.plist
is no longer available starting iOS 18.