{"record":{"id":"fd406ae4783ec7a3","repo":"kovidgoyal/kitty","slug":"args-1-is-not-a-known-entry-point-choices-are","errorCode":null,"errorMessage":"{args[1]} is not a known entry point. Choices are: ","messagePattern":"(.+?) is not a known entry point\\. Choices are: ","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"error","filePath":"kitty/entry_points.py","lineNumber":112,"sourceCode":"        list_kittens()\n        raise SystemExit(1)\n    sys.argv = args[1:]\n    from kittens.runner import run_kitten as rk\n\n    rk(kitten)\n\n\ndef namespaced(args: list[str]) -> None:\n    try:\n        func = namespaced_entry_points[args[1]]\n    except IndexError:\n        raise SystemExit('The kitty command line is incomplete')\n    except KeyError:\n        pass\n    else:\n        func(args[1:])\n        return\n    raise SystemExit(f'{args[1]} is not a known entry point. Choices are: ' + ', '.join(namespaced_entry_points))\n\n\nentry_points = {\n    # These two are here for backwards compat\n    'icat': icat,\n    'list-fonts': list_fonts,\n    '+': namespaced,\n}\nnamespaced_entry_points = {k: v for k, v in entry_points.items() if k[0] not in '+@'}\nnamespaced_entry_points['hold'] = hold\nnamespaced_entry_points['complete'] = complete\nnamespaced_entry_points['runpy'] = runpy\nnamespaced_entry_points['launch'] = launch\nnamespaced_entry_points['open'] = open_urls\nnamespaced_entry_points['kitten'] = run_kitten\nnamespaced_entry_points['shebang'] = shebang\n\n","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/entry_points.py#L94-L130","documentation":"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.","triggerScenarios":"`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`).","commonSituations":"Typos in shell scripts/aliases; using an entry point removed or renamed in a newer kitty version; copying docs from a different kitty version.","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."],"exampleFix":"# before\nkitty list-font\n# after\nkitty list-fonts","handlingStrategy":"validation","validationCode":"from kitty.entry_points import namespaced_entry_points\nif args[1] not in namespaced_entry_points:\n    valid = ', '.join(namespaced_entry_points)\n    raise SystemExit(f'unknown {args[1]}; choices: {valid}')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin kitty version in scripts so entry-point names stay valid.","Read the error's Choices list — it enumerates exactly what is accepted."],"tags":["kitty","cli","unknown-command"],"backgroundTag":"unknown-cli-subcommand","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}