kovidgoyal/kitty · warning · SystemExit
This should be run as kitten dnd
Error message
This should be run as kitten dnd
What it means
macOS's requestAuthorizationWithOptions call failed while kitty was asking for alert/sound/badge notification permission (kitty/cocoa_window.m:719). The NSError localizedDescription is logged; granted is false so all pending notifications are drained (dropped) rather than delivered.
Source
Thrown at kittens/dnd/main.py:84
Any arguments on the command line are assumed to be files and directories to drag.
They will be dragged as the text/uri-list MIME type which can then be dropped into any
file manager or similar program to copy the files.
If the text/uri-list MIME type is dropped onto this window, the files and directories in it are
copied into the current working directory. When dragging from this window, if a move operation is
performed when dropping and the drop is to a remote machine, the files and directories to drag and deleted.
If data is present on STDIN it is set as text/plain when dragging, unless text/plain is specified via --drag.
Any text/plain data that is dropped onto this window is output to STDOUT, if STDOUT is connected to a file, otherwise it
is discarded.
Press the Esc or Ctrl+C keys to quit the kitten at any time, cancelling any in progress drag.
"""
usage = '[files to drag]'
if __name__ == '__main__':
raise SystemExit('This should be run as kitten dnd')
elif __name__ == '__doc__':
from kitty.simple_cli_definitions import CompletionSpec
cd = sys.cli_docs # type: ignore
cd['usage'] = usage
cd['options'] = OPTIONS
cd['help_text'] = help_text
cd['short_desc'] = 'Perform drag and drop operations, even over SSH'
cd['args_completion'] = CompletionSpec.from_string('type:file mime:* group:Files')
View on GitHub (pinned to 6d5d0c4406)
Solutions
- Run kitty from the installed kitty.app so the bundle identifier is resolvable.
- Check System Settings > Notifications to see if kitty is listed; toggle or reset its entry.
- Reboot or restart the notification service (killall usernoted) if permissions UI is wedged.
- Update kitty to the latest release matching your macOS version.
Defensive patterns
Strategy: validation
Prevention
- Answer kitty's permission prompt on first notification.
- Run from the proper app bundle so authorization can succeed.
- Avoid sending notifications before permission is granted; kitty drains them.
When it happens
Trigger: First notification attempt on macOS triggers the permission request; the handler errors when the authorization subsystem is broken - e.g. running outside a proper app bundle (same root cause as UNUserNotificationCenter failures), parental controls, or MDM restrictions.
Common situations: kitty binary run outside its .app bundle, managed/restricted Macs, or a wedged notification daemon after an OS update.
Related errors
- Must be run as kitten diff
- This must be run as kitten desktop-ui
- Should be run as kitten hints
- This should be run as kitten hyperlinked_grep
- The value {val} is not a valid choice for window_title_bar
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/255b9f0675824f88.
Report an issue: GitHub.