improved confirm

- uses `prompt()` validation logic instead of looping
- allows the response to be passed to env
- better semantic use of `default` keyword arg