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

  1. Run kitty from the installed kitty.app so the bundle identifier is resolvable.
  2. Check System Settings > Notifications to see if kitty is listed; toggle or reset its entry.
  3. Reboot or restart the notification service (killall usernoted) if permissions UI is wedged.
  4. Update kitty to the latest release matching your macOS version.
Defensive patterns

Strategy: validation

Prevention

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


AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27). Data as JSON: /api/errors/255b9f0675824f88. Report an issue: GitHub.