Run a Throwaway VM

cubic run --rm creates a VM instance, opens a shell in it and deletes the whole VM instance when you leave the shell. It is the quick way to try a command in a clean guest without anything left on your host afterwards.

Start One

$ cubic run --rm --image ubuntu
info: Using generated name grumpy-dragon
alice@grumpy-dragon:~$ python3 --version
Python 3.13.7
alice@grumpy-dragon:~$ exit
logout

Cubic picks the name and prints it, so there is nothing to invent. A given name still works, as in cubic run --rm scratch --image ubuntu.

The VM instance is gone once the shell closes. cubic instances no longer lists it:

$ cubic instances
Name   OS   Arch   vCPUs   Memory   Disk   Running

Cubic deletes the VM instance whenever the session ends, so a dropped connection or a crash of the guest cleans up as well.

Fast and Small

The disk of a throwaway VM instance is a thin overlay on the cached image rather than a full copy, so it is created at once and stores only what the guest writes. This makes --rm cheap to run again and again.

The overlay refers back to the image in the cache, so a throwaway VM instance is not self-contained. cubic prune clears the whole image cache, so avoid it while a throwaway VM instance still runs, or the overlay loses the base image it reads from. A VM instance created without --rm holds a full copy and is not affected.

Combine with Isolation

--isolate keeps the guest off the network, which pairs well with a throwaway VM instance for code you do not trust. It runs in a clean guest, reaches nothing, and leaves nothing behind:

$ cubic run --rm --isolate --image ubuntu

See Isolate a VM Instance for what isolation covers.

Only cubic run

--rm belongs to cubic run, which owns the shell session from start to finish. cubic create, cubic start and cubic ssh have no --rm, because they do not know when you are done with the VM instance. Delete a VM instance you started that way with cubic delete.