{"record":{"id":"8695c74045a368c2","repo":"nats-io/nats-server","slug":"unrecognized-command-q","errorCode":null,"errorMessage":"unrecognized command: %q","messagePattern":"unrecognized command: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/server.go","lineNumber":1695,"sourceCode":"// PrintServerAndExit will print our version and exit.\nfunc PrintServerAndExit() {\n\tfmt.Printf(\"nats-server: v%s\\n\", VERSION)\n\tos.Exit(0)\n}\n\n// ProcessCommandLineArgs takes the command line arguments\n// validating and setting flags for handling in case any\n// sub command was present.\nfunc ProcessCommandLineArgs(cmd *flag.FlagSet) (showVersion bool, showHelp bool, err error) {\n\tif len(cmd.Args()) > 0 {\n\t\targ := cmd.Args()[0]\n\t\tswitch strings.ToLower(arg) {\n\t\tcase \"version\":\n\t\t\treturn true, false, nil\n\t\tcase \"help\":\n\t\t\treturn false, true, nil\n\t\tdefault:\n\t\t\treturn false, false, fmt.Errorf(\"unrecognized command: %q\", arg)\n\t\t}\n\t}\n\n\treturn false, false, nil\n}\n\n// Public version.\nfunc (s *Server) Running() bool {\n\treturn s.isRunning()\n}\n\n// Protected check on running state\nfunc (s *Server) isRunning() bool {\n\treturn s.running.Load()\n}\n\nfunc (s *Server) logPid() error {\n\tpidStr := strconv.Itoa(os.Getpid())","sourceCodeStart":1677,"sourceCodeEnd":1713,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/server.go#L1677-L1713","documentation":"The command-line argument parser encountered a sub-command it does not recognize while processing flags like version/help. ProcessCommandLine returns this for any non-option argument that isn't 'version' or 'help'.","triggerScenarios":"Running the binary with an unexpected positional argument, e.g. `nats-server serve`, `nats-server start` (there is no 'start' subcommand — it runs by default), or a stray positional arg after flags.","commonSituations":"Users coming from other servers typing `nats-server start`; typos like `nats-server versio`; shell scripts appending an accidental extra argument; packaging wrappers passing a subcommand.","solutions":["Remove the positional argument: run `nats-server` (optionally `-c config.conf`) with no subcommand","Use recognized subcommands only: `nats-server version` or `nats-server help`","Check the exact command line in scripts/systemd units for stray args","Run `nats-server --help` to list valid flags"],"exampleFix":"// before\nnats-server start -c nats.conf\n// after\nnats-server -c nats.conf","handlingStrategy":"validation","validationCode":"// Validate CLI args before exec\nargs := os.Args[1:]\nfor _, a := range args {\n    if !strings.HasPrefix(a, \"-\") {\n        switch strings.ToLower(a) {\n        case \"version\", \"help\":\n        default:\n            log.Fatalf(\"unrecognized command: %q (nats-server takes no subcommand)\", a)\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":"if _, _, err := opts.ProcessCommandLine(args); err != nil {\n    if strings.HasPrefix(err.Error(), \"unrecognized command\") {\n        fmt.Fprintln(os.Stderr, err, \"-- run 'nats-server --help'\")\n        os.Exit(2)\n    }\n    return err\n}","preventionTips":["Remember nats-server has no 'start'/'run' subcommand — it runs by default","Only 'version' and 'help' are accepted positional commands","Review systemd unit ExecStart lines for stray positional arguments"],"tags":["nats-server","cli","argument-parsing"],"backgroundTag":"unrecognized-command","analyzedSha":"3a66a489d262bf89b71a71c955c94920394532f3","analyzedAt":"2026-09-02T04:41:54.247Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}