{"record":{"id":"56c059eb2d0a3042","repo":"AdguardTeam/AdGuardHome","slug":"unknown-option-s","errorCode":null,"errorMessage":"unknown option %s","messagePattern":"unknown option (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/home/options.go","lineNumber":415,"sourceCode":"\t\t\treturn o, eff, fmt.Errorf(\"parsing arg at index %d: %w\", i, err)\n\t\t}\n\t}\n\n\treturn o, eff, nil\n}\n\n// parseArg parses command-line argument into options and effects.  next and\n// eff must not be nil.\nfunc parseArg(\n\tcmdName string,\n\tnext func() (int, string, bool),\n\to options,\n\teff effect,\n\targ string,\n) (newOpt options, newEff effect, err error) {\n\topt, found := findMatchingOpt(arg)\n\tif !found {\n\t\treturn o, eff, fmt.Errorf(\"unknown option %s\", arg)\n\t}\n\n\tif opt.updateWithValue != nil {\n\t\treturn applyOptWithValue(opt, next, o, eff, arg)\n\t}\n\n\treturn applyOptNoValue(opt, cmdName, o, eff, arg)\n}\n\n// applyOptNoValue applies option with no value.  eff must not be\n// nil.\nfunc applyOptNoValue(\n\topt cmdLineOpt,\n\tcmdName string,\n\to options,\n\teff effect,\n\targ string,\n) (newOpt options, newEff effect, err error) {","sourceCodeStart":397,"sourceCodeEnd":433,"githubUrl":"https://github.com/AdguardTeam/AdGuardHome/blob/b41aefbe51c8dde65e2c50f093996afa0502edf9/internal/home/options.go#L397-L433","documentation":"parseArg could not match the current command-line token against any known long or short option definition (findMatchingOpt returned false). The token is passed to the user verbatim.","triggerScenarios":"Supplying a flag that AdGuard Home doesn't define: --foobar, single-dash long forms like -config (only -c may be accepted), or options removed in newer releases.","commonSituations":"Copy-pasting instructions for a different version, using single-dash long options (Go flag-style) where the parser expects double dash, or trailing garbage after a valid command.","solutions":["Check spelling and dash count: long options use --, short use single char (-c, -h, -p)","Run ./AdGuardHome --help to see supported options in your build","Upgrade/downgrade docs to match your binary version"],"exampleFix":"# before\n./AdGuardHome -config /etc/adguardhome.yaml\n\n# after\n./AdGuardHome -c /etc/adguardhome.yaml","handlingStrategy":"validation","validationCode":"// Validate flags against a known set before launching:\nvar known = map[string]bool{\"--config\":true,\"-c\":true,\"--workdir\":true,\"-w\":true,\"--host\":true,\"-h\":true,\"--port\":true,\"-p\":true}\nif !known[arg] && !strings.HasPrefix(arg, \"--\") { /* reject */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use double dash for long options","Check --help output for the running version before scripting flags"],"tags":["go","cli","argument-parsing","unknown-flag"],"backgroundTag":"unknown-command-line-flag","analyzedSha":"b41aefbe51c8dde65e2c50f093996afa0502edf9","analyzedAt":"2026-08-27T04:57:55.097Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}