{"record":{"id":"6bc5356dca9b8cef","repo":"jdx/mise","slug":"mise-daemons-selects-project-daemon-names-use-pitchfork","errorCode":null,"errorMessage":"mise daemons selects project daemon names; use pitchfork directly for --group operations","messagePattern":"mise daemons selects project daemon names; use pitchfork directly for --group operations","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/daemons.rs","lineNumber":275,"sourceCode":"/// Separate positional IDs from pitchfork options before matching project roots.\n/// Value-taking options must retain their values even when a value is a daemon name.\nfn split_args(action: &str, args: &[String]) -> Result<(Vec<String>, Vec<String>)> {\n    let mut names = Vec::new();\n    let mut flags = Vec::new();\n    let mut args = args.iter();\n    while let Some(arg) = args.next() {\n        if arg == \"--\" {\n            names.extend(args.cloned());\n            break;\n        }\n        if !arg.starts_with('-') {\n            names.push(arg.clone());\n            continue;\n        }\n        if matches!(action, \"start\" | \"stop\" | \"restart\")\n            && (arg == \"--group\" || arg.starts_with(\"--group=\"))\n        {\n            bail!(\n                \"mise daemons selects project daemon names; use pitchfork directly for --group operations\"\n            );\n        }\n        flags.push(arg.clone());\n        let takes_value = match action {\n            \"start\" | \"restart\" => matches!(\n                arg.as_str(),\n                \"--delay\"\n                    | \"--output\"\n                    | \"--http\"\n                    | \"--port\"\n                    | \"--cmd\"\n                    | \"--health-cmd\"\n                    | \"--health-http\"\n                    | \"--health-port\"\n                    | \"--expected-port\"\n                    | \"--shell-pid\"\n            ),","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/daemons.rs#L257-L293","documentation":"`mise daemons` scopes start/stop/restart to daemon names declared in project config. The `--group` flag is a pitchfork concept for operating on process groups, so when `split_args` sees `--group` (or `--group=...`) with a start/stop/restart action it bails and directs users to use pitchfork directly.","triggerScenarios":"Run `mise daemons start|stop|restart --group <g>` or `--group=<g>`; `split_args` (called from `run` and tests) detects the flag for these actions.","commonSituations":"Users copying pitchfork CLI invocations into `mise daemons`; automations built around pitchfork groups being ported to mise daemons; attempting bulk operations across a group.","solutions":["Use pitchfork directly: `pitchfork start --group <g>` (etc.) for group operations.","List the daemon names explicitly: `mise daemons restart web worker db`.","Model the group as multiple named daemons in mise.toml `[daemons]` if you want mise to manage them."],"exampleFix":"// before\n$ mise daemons restart --group workers\n// after\n$ pitchfork restart --group workers\n// or\n$ mise daemons restart worker1 worker2","handlingStrategy":"validation","validationCode":"case \" $args \" in *' --group'* ) echo \"use pitchfork directly for --group\" ;; esac","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use pitchfork for group-based operations; use mise daemons with explicit names.","Expand groups into explicit daemon names in mise.toml-managed scripts."],"tags":["cli","daemons","pitchfork","unsupported-flag"],"backgroundTag":"unsupported-operation","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}