kovidgoyal/kitty · error · SystemExit

{args[1]} is not a known entry point. Choices are:

Error message

{args[1]} is not a known entry point. Choices are: 

What it means

The second token on kitty's command line does not match any key in the namespaced_entry_points mapping, so kitty lists the valid choices and exits. It is the dispatcher's unknown-subcommand error.

Source

Thrown at kitty/entry_points.py:112

        list_kittens()
        raise SystemExit(1)
    sys.argv = args[1:]
    from kittens.runner import run_kitten as rk

    rk(kitten)


def namespaced(args: list[str]) -> None:
    try:
        func = namespaced_entry_points[args[1]]
    except IndexError:
        raise SystemExit('The kitty command line is incomplete')
    except KeyError:
        pass
    else:
        func(args[1:])
        return
    raise SystemExit(f'{args[1]} is not a known entry point. Choices are: ' + ', '.join(namespaced_entry_points))


entry_points = {
    # These two are here for backwards compat
    'icat': icat,
    'list-fonts': list_fonts,
    '+': namespaced,
}
namespaced_entry_points = {k: v for k, v in entry_points.items() if k[0] not in '+@'}
namespaced_entry_points['hold'] = hold
namespaced_entry_points['complete'] = complete
namespaced_entry_points['runpy'] = runpy
namespaced_entry_points['launch'] = launch
namespaced_entry_points['open'] = open_urls
namespaced_entry_points['kitten'] = run_kitten
namespaced_entry_points['shebang'] = shebang

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Check the printed Choices list and use an exact name.
  2. If the name came from docs, confirm it exists in your kitty version (kitty --debug-configuration or the entry_points dict).
  3. For removed/renamed commands, update scripts to the new name.

Example fix

# before
kitty list-font
# after
kitty list-fonts
Defensive patterns

Strategy: validation

Validate before calling

from kitty.entry_points import namespaced_entry_points
if args[1] not in namespaced_entry_points:
    valid = ', '.join(namespaced_entry_points)
    raise SystemExit(f'unknown {args[1]}; choices: {valid}')

Prevention

When it happens

Trigger: `kitty <unknown>` — args[1] not in namespaced_entry_points (e.g. `kitty +foo` or a misspelled built-in like `kitty list-font` instead of `list-fonts`).

Common situations: Typos in shell scripts/aliases; using an entry point removed or renamed in a newer kitty version; copying docs from a different kitty version.

Related errors


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