Skip to content

Conversation

@Horiodino
Copy link
Contributor

This PR addresses [Issue #3995] regarding the confusing and inconsistent behavior of the --yes flag in limactl clone and limactl edit. The following changes have been made:

Changes

  1. Deprecate --yes flag for the clone and edit commands. A warning is shown when used, recommending --start instead.
  2. Add --start flag (default: true) to both commands, allowing users to explicitly control whether the instance is started after cloning or editing.

@AkihiroSuda AkihiroSuda added the area/cli limactl CLI user experience label Sep 29, 2025
@AkihiroSuda AkihiroSuda added this to the v2.0.0 milestone Sep 29, 2025
Copy link
Member

@jandubois jandubois left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please wait for feedback from @AkihiroSuda before making any changes.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still think we should remove --yes from being a global option that shows up in limactl help. start, edit, and clone are the only commands that check the value of the --tty setting, so it really only applies to start now.

So I would make it a local option in those 3 commands, and make it hidden in edit and clone, so it really becomes just a start option.

@AkihiroSuda You seemed to have reservations about making the deprecated option hidden. What is the reason for that?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You seemed to have reservations about making the deprecated option hidden. What is the reason for that?

Because we have been keeping other deprecated commands/options.
(limactl show-ssh)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but I don't understand why this makes sense: the point of deprecation is to transition away from something because it will go away. Keeping it available for new users to discover and use is not helpful.

Only users that already know about these commands (or existing scripts) should continue to use them, but get a warning, so they can transition away before the commands get removed. If there is no intention of removing a command or feature, then there is no point in deprecating it.

Copy link
Member

@jandubois jandubois Oct 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I would make it a local option in those 3 commands, and make it hidden in edit and clone, so it really becomes just a start option.

We definitely need to make it a local option if we don't want to hide the deprecated option. That way we can mark it in the --help output for edit and clone as deprecated (which it isn't right now):

l edit --help
Edit an instance of Lima or a template
...
Global Flags:
...
  -y, --yes                 Alias of --tty=false

But also so that --yes doesn't show up for every single subcommand when it really is just an option for start anymore.

One big reason for getting rid of --yes is to avoid user confusion, and we are not achieving this by keeping it very visible.

if cmd.Flags().Changed("yes") {
switch cmd.Name() {
case "clone", "edit":
logrus.Warn("--yes flag is deprecated for the '" + cmd.Name() + "' command, use --start instead and --tty=false")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really understand the warning. --start has different semantics than --yes, so --start=false may be the same as --yes=true, but --start=true (start without asking) is different from --yes=false (ask about starting).

I think the edit and clone commands should just print the simplified message:

Suggested change
logrus.Warn("--yes flag is deprecated for the '" + cmd.Name() + "' command, use --start instead and --tty=false")
logrus.Warn("The --yes flag is deprecated")

Users can then run limactl edit --help to learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about:

Suggested change
logrus.Warn("--yes flag is deprecated for the '" + cmd.Name() + "' command, use --start instead and --tty=false")
logrus.Warn("--yes flag is deprecated (--tty=false is still supported and works in the same way. Also consider using --start)")


if cmd.Flags().Changed("yes") {
switch cmd.Name() {
case "clone", "edit":
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now "rename" has to be covered too

Copy link
Member

@jandubois jandubois left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please resolve merge conflicts and add support for the limactl rename command as well.

@AkihiroSuda
Copy link
Member

@Horiodino Could you update the PR?

@Horiodino
Copy link
Contributor Author

Horiodino commented Oct 24, 2025 via email

Signed-off-by: Praful Khanduri <holiodin@gmail.com>
Copy link
Member

@AkihiroSuda AkihiroSuda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@AkihiroSuda AkihiroSuda requested a review from jandubois October 27, 2025 07:07
Copy link
Member

@jandubois jandubois left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

I'm going to approve and merge this to get the --start option into the Lima 2.0 release.

But I don't think it has solved the confusion around --yes being a global option for all commands. But we can address this later; it is mostly about deprecating/hiding it from the --help output.

@jandubois jandubois merged commit 4fcc789 into lima-vm:master Oct 30, 2025
62 of 64 checks passed
nlordell added a commit to nlordell/lima that referenced this pull request Nov 3, 2025
This PR is a follow up to lima-vm#4108 and <lima-vm#3995 (comment)>
which adds a new `--start` flag to the `shell` subcommand, which
auto-starts the VM in case it isn't already running.

Note that, unlike lima-vm#4108, I did not add any deprecation warning to
the `--yes` flag since it was previously ignored by `limactl shell`.
nlordell added a commit to nlordell/lima that referenced this pull request Nov 3, 2025
This PR is a follow up to lima-vm#4108 and <lima-vm#3995 (comment)>
which adds a new `--start` flag to the `shell` subcommand, which
auto-starts the VM in case it isn't already running.

Note that, unlike lima-vm#4108, I did not add any deprecation warning to
the `--yes` flag since it was previously ignored by `limactl shell`.

Signed-off-by: Nicholas Rodrigues Lordello <n@lordello.net>
nlordell added a commit to nlordell/lima that referenced this pull request Nov 3, 2025
This PR is a follow up to lima-vm#4108 and <lima-vm#3995 (comment)>
which adds a new `--start` flag to the `shell` subcommand, which
auto-starts the VM in case it isn't already running.

Note that, unlike lima-vm#4108, I did not add any deprecation warning to
the `--yes` flag since it was previously ignored by `limactl shell`.

Signed-off-by: Nicholas Rodrigues Lordello <n@lordello.net>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 10, 2025
⚠️ **CAUTION: this is a major update, indicating a breaking change!** ⚠️

This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [lima-vm/lima](https://github.com/lima-vm/lima) | major | `v1.2.2` -> `v2.0.1` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>lima-vm/lima (lima-vm/lima)</summary>

### [`v2.0.1`](https://github.com/lima-vm/lima/releases/tag/v2.0.1)

[Compare Source](lima-vm/lima@v2.0.0...v2.0.1)

#### Changes

- Binary release artifacts:
  - Fix a regression in v2.0.0 `level=fatal msg="template \"_images/<IMAGE>.yaml\" not found"` ([#&#8203;4313](lima-vm/lima#4313), thanks to [@&#8203;vvoland](https://github.com/vvoland))

- Misc:
  - pkg/networks/usernet: use `SIGINT` instead of `SIGKILL` ([#&#8203;4310](lima-vm/lima#4310), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))

Full changes: <https://github.com/lima-vm/lima/milestone/64?closed=1>

#### Usage

```console
$ limactl create
$ limactl start
...
INFO[0029] READY. Run `lima` to open the shell.

$ lima uname
Linux
```

***

The binaries were built automatically on GitHub Actions.
The build log is available for 90 days: <https://github.com/lima-vm/lima/actions/runs/19137304035>

The sha256sum of the SHA256SUMS file itself is `25ad222fa1cf91a85ef7be67664f2ba65228a5d82a39be1adbbe842096854e24` .

***

Release manager: [@&#8203;AkihiroSuda](https://github.com/AkihiroSuda)

### [`v2.0.0`](https://github.com/lima-vm/lima/releases/tag/v2.0.0)

[Compare Source](lima-vm/lima@v1.2.2...v2.0.0)

This is the second major release of Lima, featuring the support for [pluggable VM drivers](https://lima-vm.io/docs/dev/drivers/), [GPU acceleration](https://lima-vm.io/docs/config/gpu/), and [MCP](https://lima-vm.io/docs/config/ai/outside/mcp/).
This release also commemorates the promotion of the project from CNCF [Sandbox](https://www.cncf.io/sandbox-projects/) to [Incubating](https://www.cncf.io/projects/) 🎉.

#### Highlights

- [Experimental plug-in subsystem for VM driver infrastructure](https://lima-vm.io/docs/dev/drivers/).
  This will help implementing third-party plugins without modifying the code base of Lima.
  Thanks to [GSoC 2025](https://gist.github.com/unsuman/ff31a323ecef2289bf065882726ed7f0) contributor [@&#8203;unsuman](https://github.com/unsuman) .
- [Experimental krunkit VM driver](https://lima-vm.io/docs/config/vmtype/krunkit/) for supporting GPU acceleration ([#&#8203;4137](lima-vm/lima#4137), thanks to [@&#8203;unsuman](https://github.com/unsuman))
- [Experimental integration for Model Context Protocol (MCP)](https://lima-vm.io/docs/config/ai/outside/) ([#&#8203;3744](lima-vm/lima#3744)). i.e., Lima can be now used as a sandbox for AI agents such as Gemini.
- Add `limactl (start|restart) --progress` flag to show the progress of provisioning ([#&#8203;3846](lima-vm/lima#3846), [#&#8203;3915](lima-vm/lima#3915), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000) [@&#8203;norio-nomura](https://github.com/norio-nomura))
- Add `limactl shell --preserve-env` flag to propagate env vars from the host to VM ([#&#8203;3830](lima-vm/lima#3830), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000))

#### Other notable changes

- `/tmp/lima` is no longer mounted by default ([#&#8203;3951](lima-vm/lima#3951))
- SSH port is no longer hard-coded to 60022 for the "default" instance ([#&#8203;3780](lima-vm/lima#3780))
- Forward UDP ports by default ([#&#8203;4054](lima-vm/lima#4054))
- Support CLI plugins ([#&#8203;3834](lima-vm/lima#3834), [#&#8203;4009](lima-vm/lima#4009), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000))
- Support custom URL scheme plugins ([#&#8203;3937](lima-vm/lima#3937), thanks to [@&#8203;jandubois](https://github.com/jandubois)).
  `template://default` is now recommended to be written as `template:default`. The old form is still supported.

##### Details

- VM driver infrastructure:
  - [Experimental plug-in subsystem for VM driver infrastructure](https://lima-vm.io/docs/dev/drivers/) ([multiple MRs](https://github.com/lima-vm/lima/pulls?q=is%3Apr+milestone%3Av2.0.0+is%3Aclosed+label%3Aarea%2Fvmdrivers), thanks to [@&#8203;unsuman](https://github.com/unsuman))

- krunkit:
  - [Experimental krunkit VM driver](https://lima-vm.io/docs/config/vmtype/krunkit/) for supporting GPU acceleration ([#&#8203;4137](lima-vm/lima#4137), thanks to [@&#8203;unsuman](https://github.com/unsuman))

- VZ:
  - Support Rosetta AOT Caching with CDI ([#&#8203;3858](lima-vm/lima#3858), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))
  - Support accelerating SSH using `AF_VSOCK` ([#&#8203;3979](lima-vm/lima#3979), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))

- QEMU:
  - Fallback to TCG when KVM is not available on Linux hosts ([#&#8203;4204](lima-vm/lima#4204))

- MCP:
  - [Experimental integration for Model Context Protocol (MCP)](https://lima-vm.io/docs/config/ai/outside/) ([#&#8203;3744](lima-vm/lima#3744)).  Lima now provides MCP tools for reading, writing, and executing local files using a VM sandbox. Known to work with Google Gemini CLI.

- `limactl` CLI:
  - Add `limactl (start|restart) --progress` flag to show the progress of provisioning ([#&#8203;3846](lima-vm/lima#3846), [#&#8203;3915](lima-vm/lima#3915), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000) [@&#8203;norio-nomura](https://github.com/norio-nomura))
  - Add `limactl (create|start|edit) --port-forward` flag for static port forwarding ([#&#8203;3699](lima-vm/lima#3699), thanks to [@&#8203;Horiodino](https://github.com/Horiodino)).
    Usually not needed, but useful for instances created with `--plain`.
  - Add `limactl (create|start|edit) --ssh-port` flag ([#&#8203;3791](lima-vm/lima#3791))
  - Add `limactl (create|start|edit) --mount-only` flag ([#&#8203;3947](lima-vm/lima#3947)).
    Similar to `--mount`, but overrides the existing mounts. Useful for mounting `$(pwd)`.
  - Support specifying `--set` multiple times in `limactl (create|start|edit)` ([#&#8203;4197](lima-vm/lima#4197), thanks to [@&#8203;AndiDog](https://github.com/AndiDog))
  - Add `limactl shell --preserve-env` flag to propagate env vars from the host to VM ([#&#8203;3830](lima-vm/lima#3830), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000)).
    See also [`LIMA_SHELLENV_ALLOW`](https://lima-vm.io/docs/config/environment-variables/#lima_shellenv_allow) and [`LIMA_SHELLENV_BLOCK`](https://lima-vm.io/docs/config/environment-variables/#lima_shellenv_block).
  - Support CLI plugins ([#&#8203;3834](lima-vm/lima#3834), [#&#8203;4009](lima-vm/lima#4009), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000))
  - Support custom URL scheme plugins ([#&#8203;3937](lima-vm/lima#3937), thanks to [@&#8203;jandubois](https://github.com/jandubois)).
    `template://default` is now recommended to be written as `template:default`. The old form is still supported.
  - Add `limactl copy --backend=rsync` flag as an alternative to `scp` backend ([#&#8203;3143](lima-vm/lima#3143), thanks to [@&#8203;olamilekan000](https://github.com/olamilekan000))
  - Add `limactl list--yq` and `limactl info --yq` flags ([#&#8203;3998](lima-vm/lima#3998), thanks to [@&#8203;jandubois](https://github.com/jandubois))
  - Add `limactl rename OLD NEW` ([#&#8203;4207](lima-vm/lima#4207))
  - Deprecate `--yes` and introduce `limactl (clone|rename|edit|shell) --start` instead ([#&#8203;4108](lima-vm/lima#4108), [#&#8203;4285](lima-vm/lima#4285), thanks to [@&#8203;Horiodino](https://github.com/Horiodino) [@&#8203;nlordell](https://github.com/nlordell))

- YAML:
  - Migrate `cpuType` to `vmOpts.qemu` ([#&#8203;3500](lima-vm/lima#3500), thanks to [@&#8203;unsuman](https://github.com/unsuman))
  - Add `yq` provision mode ([#&#8203;3892](lima-vm/lima#3892), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))
  - Prohibit relative paths in YAML ([#&#8203;3950](lima-vm/lima#3950)).
    Relative paths were never intended to be supported,
    but they were accidentally allowed due to a regression in v1.1.0.
    The CLI command `limactl (create|start|edit) --mount DIR` still supports relative paths.

- Default template:
  - Remove `/tmp/lima` mount ([#&#8203;3951](lima-vm/lima#3951))
  - Stop hardcoding SSH port 60022 ([#&#8203;3780](lima-vm/lima#3780))

- Network:
  - Enable mDNS for vzNAT and socket\_vmnet ([#&#8203;4272](lima-vm/lima#4272), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))

- Port forwarding:
  - Support port forwarding in plain mode ([#&#8203;3699](lima-vm/lima#3699), thanks to [@&#8203;Horiodino](https://github.com/Horiodino))
  - Support host sockets in gRPC port forwarder ([#&#8203;4008](lima-vm/lima#4008), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))
  - Forward UDP ports by default ([#&#8203;4054](lima-vm/lima#4054))
  - Eliminated 3-second delay for detecting ports ([#&#8203;4066](lima-vm/lima#4066))
  - Removed iptables watcher for `sudo nerdctl run -p ...` ([#&#8203;4107](lima-vm/lima#4107)).
    `sudo nerdctl run -p ...` now requires nerdctl v2.1.6 or later.
  - Improved performance of gRPC forwarder ([#&#8203;4247](lima-vm/lima#4247), thanks to [@&#8203;balajiv113](https://github.com/balajiv113))
  - Support UDP in Kubernetes ([#&#8203;4233](lima-vm/lima#4233))
  - Change default of `guestIPMustBeZero` to `true` when `guestIP` is `0.0.0.0` ([#&#8203;4221](lima-vm/lima#4221), thanks to [@&#8203;jandubois](https://github.com/jandubois))

- Build system:
  - Remove `Kconfig` and `config.mk`, in favor of Makefile variables ([#&#8203;3732](lima-vm/lima#3732))
  - Support Fedora, RHEL, and relevant host distributions ([#&#8203;4228](lima-vm/lima#4228), thanks to [@&#8203;valdela1](https://github.com/valdela1))

- Templates:
  - `alpine`, `alpine-iso`: update to Alpine 3.22 ([#&#8203;4184](lima-vm/lima#4184), [#&#8203;4190](lima-vm/lima#4190), thanks to [@&#8203;jandubois](https://github.com/jandubois))
  - `debian`: update to Debian 13 ([#&#8203;4029](lima-vm/lima#4029), thanks to [@&#8203;unsuman](https://github.com/unsuman))
  - `docker`, `docker-rootful`: Enable containerd image store ([#&#8203;3941](lima-vm/lima#3941), thanks to [@&#8203;norio-nomura](https://github.com/norio-nomura))
  - `fedora`: update to Fedora 43 ([#&#8203;4255](lima-vm/lima#4255))
  - `opensuse`: update to openSUSE Leap 16 ([#&#8203;4203](lima-vm/lima#4203))
  - `oraclelinux`: update to Oracle Linux 10 ([#&#8203;4236](lima-vm/lima#4236), thanks to [@&#8203;valdela1](https://github.com/valdela1))
  - `ubuntu`, `default`: update Ubuntu to 25.10 ([#&#8203;4202](lima-vm/lima#4202))
  - `k0s`: New template ([#&#8203;3728](lima-vm/lima#3728), thanks to [@&#8203;plandem](https://github.com/plandem))
  - `experimental/ubuntu-next`: update to Ubuntu 26.04 pre-release ([#&#8203;4311](lima-vm/lima#4311))

- Project:
  - Invite Ansuman Sahoo ([@&#8203;unsuman](https://github.com/unsuman)) as a Reviewer ([#&#8203;4003](lima-vm/lima#4003), thanks to [@&#8203;jandubois](https://github.com/jandubois))
  - Promote from CNCF Sandbox to Incubating ([#&#8203;4201](lima-vm/lima#4201))

Full changes: <https://github.com/lima-vm/lima/milestone/59?closed=1>

Thanks to [@&#8203;AndiDog](https://github.com/AndiDog) [@&#8203;Horiodino](https://github.com/Horiodino) [@&#8203;afbjorklund](https://github.com/afbjorklund) [@&#8203;alexandear](https://github.com/alexandear) [@&#8203;ashwat287](https://github.com/ashwat287) [@&#8203;balajiv113](https://github.com/balajiv113) [@&#8203;bonifaido](https://github.com/bonifaido) [@&#8203;dharsanb](https://github.com/dharsanb) [@&#8203;gnawhleinad](https://github.com/gnawhleinad) [@&#8203;iamleot](https://github.com/iamleot) [@&#8203;jandubois](https://github.com/jandubois) [@&#8203;kachick](https://github.com/kachick) [@&#8203;muchzill4](https://github.com/muchzill4) [@&#8203;ningmingxiao](https://github.com/ningmingxiao) [@&#8203;nlordell](https://github.com/nlordell) [@&#8203;norio-nomura](https://github.com/norio-nomura) [@&#8203;olamilekan000](https://github.com/olamilekan000) [@&#8203;plandem](https://github.com/plandem) [@&#8203;stek29](https://github.com/stek29) [@&#8203;unsuman](https://github.com/unsuman) [@&#8203;valdela1](https://github.com/valdela1) [@&#8203;vax-r](https://github.com/vax-r) [@&#8203;vishalanarase](https://github.com/vishalanarase) [@&#8203;zyfy29](https://github.com/zyfy29)

#### EOL of v1.2

Lima v1.2 will continue to receive security updates and critical bug fixes until **2026-02-06** (3 months from now).
See also <https://lima-vm.io/docs/releases/>.

#### Usage

```console
$ limactl create
$ limactl start
...
INFO[0029] READY. Run `lima` to open the shell.

$ lima uname
Linux
```

***

The binaries were built automatically on GitHub Actions.
The build log is available for 90 days: <https://github.com/lima-vm/lima/actions/runs/19130682878>

The sha256sum of the SHA256SUMS file itself is `112f1ef1d9850e29b4be425ca71e8b6ac686f593ff741164885b51fbd6919ca6` .

***

Release manager: [@&#8203;AkihiroSuda](https://github.com/AkihiroSuda)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/cli limactl CLI user experience

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants