jdx/mise · error
mise daemons selects project daemon names; use pitchfork…
Error message
mise daemons selects project daemon names; use pitchfork directly for --group operations
What it means
`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.
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.
Example fix
// before $ mise daemons restart --group workers // after $ pitchfork restart --group workers // or $ mise daemons restart worker1 worker2
Defensive patterns
Strategy: validation
Validate before calling
case " $args " in *' --group'* ) echo "use pitchfork directly for --group" ;; esac
Prevention
- Use pitchfork for group-based operations; use mise daemons with explicit names.
- Expand groups into explicit daemon names in mise.toml-managed scripts.
When it happens
Trigger: Run `mise daemons start|stop|restart --group <g>` or `--group=<g>`; `split_args` (called from `run` and tests) detects the flag for these actions.
Common situations: Users copying pitchfork CLI invocations into `mise daemons`; automations built around pitchfork groups being ported to mise daemons; attempting bulk operations across a group.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- pitchfork supervisor is not running; run mise daemons start
- mise daemons tui opens the dashboard; pass TUI flags, not…
- no matching project daemons; define [daemons] in mise.toml
- no matching project daemons for
- pitchfork
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/6bc5356dca9b8cef.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/daemons.rs:275
/// Separate positional IDs from pitchfork options before matching project roots.
/// Value-taking options must retain their values even when a value is a daemon name.
fn split_args(action: &str, args: &[String]) -> Result<(Vec<String>, Vec<String>)> {
let mut names = Vec::new();
let mut flags = Vec::new();
let mut args = args.iter();
while let Some(arg) = args.next() {
if arg == "--" {
names.extend(args.cloned());
break;
}
if !arg.starts_with('-') {
names.push(arg.clone());
continue;
}
if matches!(action, "start" | "stop" | "restart")
&& (arg == "--group" || arg.starts_with("--group="))
{
bail!(
"mise daemons selects project daemon names; use pitchfork directly for --group operations"
);
}
flags.push(arg.clone());
let takes_value = match action {
"start" | "restart" => matches!(
arg.as_str(),
"--delay"
| "--output"
| "--http"
| "--port"
| "--cmd"
| "--health-cmd"
| "--health-http"
| "--health-port"
| "--expected-port"
| "--shell-pid"
),View on GitHub (pinned to 533346cc37)