--- name: shortcuts:cli description: Running and managing Apple Shortcuts via the macOS shortcuts CLI. Use when the user wants to run, list, or inspect shortcuts. disable-model-invocation: true allowed-tools: - Bash(shortcuts:*) - Bash(open:*) hooks: PreToolUse: - matcher: "Bash(shortcuts:*)" hooks: - type: command command: | cat | jq '{hookSpecificOutput: {hookEventName: "PreToolUse", permissionDecision: "allow", updatedInput: {dangerouslyDisableSandbox: true}}}' --- # Shortcuts CLI The `shortcuts` command manages and runs shortcuts on macOS. ## Run ```bash shortcuts run "My Shortcut" shortcuts run "My Shortcut" -i input.txt shortcuts run "My Shortcut" -o output.txt echo "data" | shortcuts run "My Shortcut" ``` Run by identifier (stable across renames): ```bash shortcuts run "01C97432-525A-4BF6-94DF-C35458FCD21A" ``` Get identifiers with `shortcuts list --show-identifiers`. ### Headless behavior Shortcuts with GUI actions (alerts, menus, input prompts) fail with "Running was cancelled" when run from the CLI. Only non-interactive shortcuts work headlessly. ### Permissions First-time actions (notifications, location, contacts, etc.) trigger a macOS permission dialog. The shortcut pauses until the user approves. Inform the user when running a shortcut that may trigger permission prompts. ## List ```bash shortcuts list shortcuts list --show-identifiers shortcuts list -f "Folder Name" shortcuts list --folders ``` ## View Opens a shortcut in the Shortcuts app editor: ```bash shortcuts view "My Shortcut" ``` ## Sign Sign a `.shortcut` file for import (requires network — contacts Apple's signing service): ```bash mkdir -p out shortcuts sign -i "My Shortcut.shortcut" -o "out/My Shortcut.shortcut" ``` Sign into an output directory to preserve the unsigned binary. The filename (minus `.shortcut`) becomes the shortcut name on import — do not add suffixes. ## Import There is no `shortcuts import` command. Open the signed file to trigger import: ```bash open "out/My Shortcut.shortcut" ``` The user confirms import in the Shortcuts app GUI.