Summary
brev delete <instance> prompts for confirmation when the target instance exists, and there is no documented flag to skip the prompt. brev delete --help lists only global flags (--help, --no-check-latest, --user, --version); there is no --yes / --force / --non-interactive / --skip-confirmation. This makes the command unsafe to call from scripts or agent harnesses that delete test instances as part of automated teardown.
Reproduction
$ brev delete --help
…
SYNOPSIS
brev delete [ Workspace Name or ID... ]
…
Global Flags:
-h, --help Help for Brev
--no-check-latest Do not check for the latest version when printing version
--user string Non root user to use for per user configuration of commands run as root
--version Print version output
No command-specific flags. When the command runs against an existing instance with an open-but-non-TTY stdin (e.g. a pipe / unix socket from a parent process / a subprocess invocation that didn't close fd 0), brev blocks on a read(2) waiting for confirmation that never arrives:
$ sudo cat /proc/<brev-pid>/stack
[<0>] unix_stream_data_wait+0x121/0x1b0
[<0>] unix_stream_read_generic+0x345/0xae0
[<0>] unix_stream_recvmsg+0x8d/0xa0
[<0>] sock_recvmsg+0xde/0xf0
[<0>] sock_read_iter+0x8f/0x100
[<0>] vfs_read+0x36a/0x3a0
We observed three separate agent-driven session wedges in a single day, each lasting hours, all caused by brev delete <existing-test-manager> blocking on a confirmation read inside an automated teardown script.
The only workarounds we found are non-obvious:
brev delete X </dev/null — close stdin so the read returns EOF.
yes | brev delete X — feed an infinite stream of y.
Neither is documented as the official non-interactive pattern. The Examples block in brev delete --help does mention echo instance-name | brev delete, but that's for piping the name, not the confirmation answer, and it doesn't address the prompt at all.
What we'd like
A documented, command-specific flag to skip the confirmation prompt, in line with conventions in other CLIs:
brev delete --yes <instance> (preferred — matches apt-get -y, dnf -y, gh repo delete --yes)
- or
--force (matches kubectl delete --force, though --force is overloaded)
- or
--non-interactive / --no-confirm
The flag should:
- Skip the confirmation prompt.
- Not change any other delete semantics — same eventual API call, same
brev ls post-state.
- Behave identically whether stdin is a TTY, a pipe, a unix socket, or
/dev/null — i.e. confirmation reading is conditional on the flag, not on TTY detection.
Documentation patch: add the flag to brev delete --help and to the Examples section showing how to script a teardown safely.
Summary
brev delete <instance>prompts for confirmation when the target instance exists, and there is no documented flag to skip the prompt.brev delete --helplists only global flags (--help,--no-check-latest,--user,--version); there is no--yes/--force/--non-interactive/--skip-confirmation. This makes the command unsafe to call from scripts or agent harnesses that delete test instances as part of automated teardown.Reproduction
No command-specific flags. When the command runs against an existing instance with an open-but-non-TTY stdin (e.g. a pipe / unix socket from a parent process / a subprocess invocation that didn't close fd 0), brev blocks on a
read(2)waiting for confirmation that never arrives:We observed three separate agent-driven session wedges in a single day, each lasting hours, all caused by
brev delete <existing-test-manager>blocking on a confirmation read inside an automated teardown script.The only workarounds we found are non-obvious:
brev delete X </dev/null— close stdin so the read returns EOF.yes | brev delete X— feed an infinite stream ofy.Neither is documented as the official non-interactive pattern. The
Examplesblock inbrev delete --helpdoes mentionecho instance-name | brev delete, but that's for piping the name, not the confirmation answer, and it doesn't address the prompt at all.What we'd like
A documented, command-specific flag to skip the confirmation prompt, in line with conventions in other CLIs:
brev delete --yes <instance>(preferred — matchesapt-get -y,dnf -y,gh repo delete --yes)--force(matcheskubectl delete --force, though--forceis overloaded)--non-interactive/--no-confirmThe flag should:
brev lspost-state./dev/null— i.e. confirmation reading is conditional on the flag, not on TTY detection.Documentation patch: add the flag to
brev delete --helpand to theExamplessection showing how to script a teardown safely.