Summary
Destructive slash commands execute immediately with zero confirmation:
| Command |
What it destroys |
Confirmation? |
/clear |
Screen AND conversation history (cli.py:1392-1399) |
None |
/reset |
Entire conversation history (cli.py:1402-1403, cli.py:997-1000) |
None |
/undo |
Last exchange |
None |
/cron remove |
Scheduled job |
None |
By contrast, dangerous terminal commands go through a proper 4-choice approval flow (tools/terminal_tool.py). Slash commands that destroy conversation data have zero safety net.
/rollback is the only destructive command that creates a recovery snapshot first.
Suggested fix
Add a confirmation prompt before destructive commands:
elif cmd_lower == "/clear":
confirm = input("Clear screen and reset conversation? [y/N] ")
if confirm.lower() == "y":
self.console.clear()
self.conversation_history = []
self.show_banner()
With options:
--force flag to skip confirmation (for scripting)
- Config key
tui.confirm_destructive: false to disable globally
- Or a simple
y/N prompt (less intrusive than the full approval flow)
Impact
- Severity: High — accidental
/clear or /reset loses entire conversation
- Risk: Medium — changes muscle-memory for users who type
/new<enter> quickly
- Effort: Small
Ref
UX audit item #17.
Summary
Destructive slash commands execute immediately with zero confirmation:
/clearcli.py:1392-1399)/resetcli.py:1402-1403,cli.py:997-1000)/undo/cron removeBy contrast, dangerous terminal commands go through a proper 4-choice approval flow (
tools/terminal_tool.py). Slash commands that destroy conversation data have zero safety net./rollbackis the only destructive command that creates a recovery snapshot first.Suggested fix
Add a confirmation prompt before destructive commands:
With options:
--forceflag to skip confirmation (for scripting)tui.confirm_destructive: falseto disable globallyy/Nprompt (less intrusive than the full approval flow)Impact
/clearor/resetloses entire conversation/new<enter>quicklyRef
UX audit item #17.