I have a base system image that gets forked off into delta qcow2 images for every project I'm working on or whatever ephemeral execution context I need.
I started a side project to build software just to manage those VMs. I'm daily driving this thing even though it's my first "vibecoded" project, it's just way too useful and has saved me quite a few times from accidents.
https://github.com/matheusmoreira/virtdev
The firewall works but it's pretty clunky. I'm working on a custom Rust network stack to replace it.
You'd probably prefer something that isn't literally made by one guy and his AIs though. Docker sandboxes seem to be a good solution that also employs virtualization.
https://news.ycombinator.com/item?id=49239751
Before I made all this, I used to use firejail.