The "destroy_on_error" functionality for `vagrant up` is implemented in the `recover()` action chain, and works by firing off a destroy action from inside that chain. This is all well and good, but it copies its existing `env` which has had `action_name` set for the up action. This was causing action_hooks for up actions to attach to this destroy action stack. Setting the action_name explicitly in the env before firing the runner should correct the behavior. I'm not sure if raw_action_name is used anywhere but I figured it was better to be consistent vs conservative in what we change.
Vagrant Core Plugins
These are plugins that ship with Vagrant. Vagrant core uses its own plugin system to power a lot of the core pieces that ship with Vagrant. Each plugin will have its own README which explains its specific role.
Generate proto
grpc_tools_ruby_protoc -I . --ruby_out=gen/plugin --grpc_out=gen/plugin ./plugin_server.proto