{"record":{"id":"8e46ed5c1592fb0b","repo":"chenhg5/cc-connect","slug":"unknown-flag-s","errorCode":null,"errorMessage":"unknown flag: %s","messagePattern":"unknown flag: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cc-connect/daemon.go","lineNumber":186,"sourceCode":"\t\t\t\treturn daemon.Config{}, false, err\n\t\t\t}\n\t\t\tcfg.WorkDir = value\n\t\t\ti = next\n\t\tcase strings.HasPrefix(arg, \"--work-dir=\"):\n\t\t\tcfg.WorkDir = strings.TrimPrefix(arg, \"--work-dir=\")\n\t\tcase arg == \"--config\" || arg == \"-config\":\n\t\t\tvalue, next, err := daemonInstallFlagValue(args, i, arg)\n\t\t\tif err != nil {\n\t\t\t\treturn daemon.Config{}, false, err\n\t\t\t}\n\t\t\tcfg.WorkDir = filepath.Dir(value)\n\t\t\ti = next\n\t\tcase strings.HasPrefix(arg, \"--config=\"):\n\t\t\tcfg.WorkDir = filepath.Dir(strings.TrimPrefix(arg, \"--config=\"))\n\t\tcase strings.HasPrefix(arg, \"-config=\"):\n\t\t\tcfg.WorkDir = filepath.Dir(strings.TrimPrefix(arg, \"-config=\"))\n\t\tdefault:\n\t\t\treturn daemon.Config{}, false, fmt.Errorf(\"unknown flag: %s\", arg)\n\t\t}\n\t}\n\n\treturn cfg, force, nil\n}\n\nfunc daemonInstallFlagValue(args []string, index int, flagName string) (string, int, error) {\n\tnext := index + 1\n\tif next >= len(args) {\n\t\treturn \"\", index, fmt.Errorf(\"missing value for %s\", flagName)\n\t}\n\treturn args[next], next, nil\n}\n\n// isTruthyEnv accepts the conventional opt-in values for boolean env vars.\n// Anything else, including \"0\" / \"false\" / \"\" / unset, is treated as false.\nfunc isTruthyEnv(v string) bool {\n\tswitch strings.ToLower(strings.TrimSpace(v)) {","sourceCodeStart":168,"sourceCodeEnd":204,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/cmd/cc-connect/daemon.go#L168-L204","documentation":"parseDaemonInstallArgs enumerates every accepted `daemon install` flag and throws this error when the parser encounters an argument it does not recognize in its default branch. It is a strict parser: no pass-through or positional arguments are allowed, so any typo or unknown flag aborts the install before any config is written.","triggerScenarios":"`cc-connect daemon install --logsize 10` (typo), `--log-max-sizes=10`, a leftover positional argument like a stray path, or flags valid for other subcommands (e.g. --force used where it is not supported in this form).","commonSituations":"Typos in flag names, mixing flags from `daemon start`/other subcommands into `daemon install`, older docs referencing flags that were renamed.","solutions":["Check the exact flag names accepted: --config, --force, --log-max-size, --work-dir (and their equals forms)","Fix typos in the flag spelling","Run `cc-connect daemon install --help` to list valid flags","Remove stray positional/unknown arguments from the command line"],"exampleFix":"// before\ncc-connect daemon install --logsize=10\n// after\ncc-connect daemon install --log-max-size=10","handlingStrategy":"validation","validationCode":"allowed=(--config --force --log-max-size --work-dir); for f in \"$@\"; do case \"$f\" in --*|-*) [[ \" ${allowed[*]} \" == *\" ${f%%=*}\" * ]] || { echo \"unknown flag $f\" >&2; exit 1; };; esac; done","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Copy flag names exactly from current --help output","Do not reuse flags from other subcommands","Keep daemon install invocations free of positional arguments"],"tags":["cli","daemon","argument-parsing"],"backgroundTag":"invalid-cli-argument","analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}