{"record":{"id":"ac46907f4f429997","repo":"jdx/mise","slug":"mise-outdated-monorepo-is-not-implemented-yet","errorCode":null,"errorMessage":"mise outdated --monorepo is not implemented yet","messagePattern":"mise outdated --monorepo is not implemented yet","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/outdated.rs","lineNumber":76,"sourceCode":"\n    /// Don't show table header\n    #[clap(long)]\n    pub no_header: bool,\n}\n\nimpl Outdated {\n    pub async fn run(mut self) -> Result<()> {\n        if self.legacy_bump {\n            deprecated_at!(\n                \"2026.8.5\",\n                \"2027.8.5\",\n                \"cli.outdated.bump-l\",\n                \"`mise outdated -l` is deprecated. Use `mise outdated -b` or `mise outdated --bump` instead. After removal, `-l` will become shorthand for `--local`.\"\n            );\n            self.bump = true;\n        }\n        if self.monorepo {\n            unimplemented!(\"mise outdated --monorepo is not implemented yet\");\n        }\n        let config = Config::get().await?;\n        let scope = if self.local {\n            ConfigScope::LocalOnly\n        } else {\n            ConfigScope::All\n        };\n        let mut ts = ToolsetBuilder::new()\n            .with_args(&self.tool)\n            .with_scope(scope)\n            .build(&config)\n            .await?;\n        let tool_set = self\n            .tool\n            .iter()\n            .map(|t| t.ba.clone())\n            .collect::<HashSet<_>>();\n        ts.versions","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/jdx/mise/blob/6bd4a54fadcdf3a6757cc44061a9528b48dd2ae7/src/cli/outdated.rs#L58-L94","documentation":"mise reserves a `--monorepo` flag on `mise outdated` (declared in src/cli/outdated.rs:55-57 as a clap placeholder documented as 'Placeholder for future monorepo outdated checks') but the implementation does not exist yet. When the flag is passed, `Outdated::run` immediately calls `unimplemented!()` (src/cli/outdated.rs:76), a Rust panic that aborts the command before any config or toolset is loaded. The flag exists only so the CLI grammar is stable for scripts written against the future feature.","triggerScenarios":"Running `mise outdated --monorepo` from the command line or a script. The panic fires unconditionally and first thing in `run()` (after only the legacy `-l` deprecation check), so any invocation carrying the flag terminates with a panic message instead of a usage error.","commonSituations":"Scripts written against mise docs/issues that discuss upcoming monorepo support; shell tab-completion offering the flag because clap exposes it; copying a command from a teammate's dotfiles running a newer/older mise; CI pinning a mise version where the flag parses but is not implemented.","solutions":["Remove `--monorepo` from the command: run `mise outdated` per repository, or scope it with `--local` (only project-local mise.toml tools) or `--inactive` (include installed-but-inactive tools)","If you need per-project checks across a monorepo, loop over subprojects: `for d in */; do (cd \"$d\" && mise outdated); done`","Track mise releases (mise --version, github.com/jdx/mise releases) and re-enable the flag only in a version where monorepo support ships","If the flag came from a shared script, gate it: only pass it when `mise outdated --help 2>&1 | grep -q monorepo.*implemented` no longer matches 'not implemented'"],"exampleFix":"# before\nmise outdated --monorepo\n# after\nfor d in services/*/; do (cd \"$d\" && mise outdated); done","handlingStrategy":"validation","validationCode":"# before invoking mise in a script, confirm the flag is actually implemented\nif mise outdated --help 2>/dev/null | grep -q -- '--monorepo.*not implemented'; then\n  echo \"--monorepo is a placeholder here; falling back to per-project outdated\" >&2\n  for d in services/*/; do (cd \"$d\" && mise outdated); done\nelse\n  mise outdated --monorepo\nfi","typeGuard":null,"tryCatchPattern":"# shell: capture the panic and retry without the flag\nout=$(mise outdated --monorepo 2>&1)\nif [ $? -ne 0 ] && printf '%s' \"$out\" | grep -q 'not implemented yet'; then\n  mise outdated   # retry without the unsupported flag\nelse\n  printf '%s\\n' \"$out\"\nfi","preventionTips":["Never script against placeholder flags: check `mise <cmd> --help` text for 'not implemented yet' before adopting a new flag","Pin the mise version in CI and read that version's release notes before adding flags to shared scripts","Keep monorepo workflows as explicit per-project loops until mise ships monorepo support and announces it"],"tags":["mise","cli","outdated","monorepo","unimplemented","flag"],"backgroundTag":"unimplemented-cli-flag","analyzedSha":"6bd4a54fadcdf3a6757cc44061a9528b48dd2ae7","analyzedAt":"2026-08-16T19:20:32.527Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}