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
- Check the printed Choices list and use an exact name.
- If the name came from docs, confirm it exists in your kitty version (kitty --debug-configuration or the entry_points dict).
- 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
- Pin kitty version in scripts so entry-point names stay valid.
- Read the error's Choices list — it enumerates exactly what is accepted.
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
- Unknown kitty remote control command: {cmd_name}
- No kitten named {original_kitten_name}
- This should be run as kitten ssh
- {x} is not a valid value for {alias}. Valid values are y, ye
- Usage: kitty +runpy "some python code"
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/fd406ae4783ec7a3.
Report an issue: GitHub.