<!-- entire-trail-link-start -->
https://entire.com/gh/jdx/-/trails/2967/changes/mise/1104
<!-- entire-trail-link-end -->
`--local` means two different things in mise. On `ls`, `outdated`,
`upgrade` and `tasks ls` it means "everything except global config",
parent directories included. On `settings`, and on the new `uninstall
--local`, it means the nearest project config. So `mise ls --local` does
not preview what `mise uninstall --local` removes.
This stacks on #15079 and renames that PR's flag before it ships.
```console
$ cd ~/work/app # ~/work/mise.toml also exists
$ mise ls --no-global # app's config and ~/work's, not the global config
$ mise ls --project # app's config only
$ mise uninstall --project # removes the versions app's config names, after asking
```
## What changes
- **`mise uninstall --project`** replaces `mise uninstall --local` from
#15079. Nothing released uses the old name, so there is no alias.
- **`mise ls --project`** lists the versions the nearest project's
config files request. It uses the same file selection as `uninstall
--project`, so it shows what that command works from. A version that a
later file in the directory overrides is not listed, as with
`--no-global`, while `uninstall --project` still removes it and lists it
before asking. `MISE_<TOOL>_VERSION` is ignored.
- **`--no-global`** on `ls`, `outdated`, `upgrade` and `tasks ls` does
what `--local` did there: only tools or tasks from non-global config. On
`ls`, `outdated` and `upgrade` it conflicts with `--global` and
`--local`. On `tasks ls`, where `-g` and `-l` already override each
other (the later flag wins), `--no-global` follows the same rule.
- **`--local` is deprecated** on those four commands in favor of
`--no-global`. The flag help and docs say so now, and it keeps working.
mise starts warning on 2027.1.0:
```text
mise WARN deprecated [cli.ls.local]: `mise ls --local` is deprecated.
Use `mise ls --no-global` instead. This will be removed in mise
2027.7.0.
```
`settings --local` and `lock --local` are unchanged.
## Timeline
| When | What happens |
|---|---|
| Now (2026.10) | `--no-global` and `--project` ship. `--local` works as
before, without a warning. |
| 2027.1.0 | `--local` starts warning. |
| 2027.7.0 | `--local` is removed from `ls`, `outdated`, `upgrade` and
`tasks ls`. It fails as an unknown flag. |
The three silent months are the compatibility window: `--no-global` is
new, so older mise versions reject it, and warning people to switch
before it is widely available would send them to a flag their other
machines do not have. The six months of warning is shorter than the
12-month default, on purpose. `--local` is not coming back: it would
read as `mise.local.toml`, which `mise lock --local` and `mise dot
--local` already mean, and `--project` and `--no-global` cover both
scopes it could take.
## Things to know
- **Merge with #15079.** If #15079 shipped alone, `uninstall --local`
would ship and then need its own deprecation. Merging them together, or
this one right after, avoids that.
- `outdated -l` and `upgrade -l` are already deprecated aliases of
`--bump`. I dropped the note that `-l` would become shorthand for
`--local` after 2027.8.5, since `--local` is going away.
- `--no-global` skips global config, system config and
`MISE_<TOOL>_VERSION`, as `--local` did.
## Validation
New `e2e/cli/test_local_flag_alias` checks that `--local` and
`--no-global` select the same tools and do not warn yet. `test_ls`
covers `--project` from the project root and a subdirectory and its
conflicts. Existing `ls`, `outdated`, `upgrade`, `tasks ls` and
`uninstall` e2e tests were switched to the new flags and pass, and
clippy with `-D warnings` is clean.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
*AI-assisted — Tool: Claude Code; model: anthropic/claude-sonnet-5-5;
version: 2.1.308.*
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->
## Summary by CodeRabbit
* **New Features**
* Added `--no-global` to list tools and tasks, check outdated tools, and
upgrade tools using non-global configuration.
* Added `mise ls --project` to show effective tool requests from the
nearest project’s configuration files, excluding parent, global, system,
and environment-variable requests.
* **Updates**
* `--local` is deprecated in favor of `--no-global`; warnings begin in
2027.1.0, with removal scheduled for 2027.7.0.
* Renamed `mise uninstall --local` to `--project`. Project uninstall
considers requests from the nearest project’s configuration files,
including overridden versions, but excludes `path:` and `system`
versions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>