chenhg5/cc-connect · error

unknown flag: %s

Error message

unknown flag: %s

What it means

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.

Source

Thrown at cmd/cc-connect/daemon.go:186

				return daemon.Config{}, false, err
			}
			cfg.WorkDir = value
			i = next
		case strings.HasPrefix(arg, "--work-dir="):
			cfg.WorkDir = strings.TrimPrefix(arg, "--work-dir=")
		case arg == "--config" || arg == "-config":
			value, next, err := daemonInstallFlagValue(args, i, arg)
			if err != nil {
				return daemon.Config{}, false, err
			}
			cfg.WorkDir = filepath.Dir(value)
			i = next
		case strings.HasPrefix(arg, "--config="):
			cfg.WorkDir = filepath.Dir(strings.TrimPrefix(arg, "--config="))
		case strings.HasPrefix(arg, "-config="):
			cfg.WorkDir = filepath.Dir(strings.TrimPrefix(arg, "-config="))
		default:
			return daemon.Config{}, false, fmt.Errorf("unknown flag: %s", arg)
		}
	}

	return cfg, force, nil
}

func daemonInstallFlagValue(args []string, index int, flagName string) (string, int, error) {
	next := index + 1
	if next >= len(args) {
		return "", index, fmt.Errorf("missing value for %s", flagName)
	}
	return args[next], next, nil
}

// isTruthyEnv accepts the conventional opt-in values for boolean env vars.
// Anything else, including "0" / "false" / "" / unset, is treated as false.
func isTruthyEnv(v string) bool {
	switch strings.ToLower(strings.TrimSpace(v)) {

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Check the exact flag names accepted: --config, --force, --log-max-size, --work-dir (and their equals forms)
  2. Fix typos in the flag spelling
  3. Run `cc-connect daemon install --help` to list valid flags
  4. Remove stray positional/unknown arguments from the command line

Example fix

// before
cc-connect daemon install --logsize=10
// after
cc-connect daemon install --log-max-size=10
Defensive patterns

Strategy: validation

Validate before calling

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

Prevention

When it happens

Trigger: `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).

Common situations: Typos in flag names, mixing flags from `daemon start`/other subcommands into `daemon install`, older docs referencing flags that were renamed.

Understand the failure class

Background: "Unknown argument", "Invalid value", and "must be one of": invalid CLI argument errors explained — this error's family across 35 libraries.

Related errors


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/8e46ed5c1592fb0b. Report an issue: GitHub.