fix(approval): accept "auto" as alias for "smart" approval mode#60567
fix(approval): accept "auto" as alias for "smart" approval mode#60567whichguy wants to merge 1 commit into
Conversation
THESIS: approvals.mode: auto was silently rejected by _normalize_approval_mode (valid: manual/smart/off only) and fell back to "manual", causing every DANGEROUS_PATTERN match to prompt the user — the exact opposite of what "auto" implies. Users writing "auto" expect automatic approval, not more prompts. LEARNINGS: - Silent fallback to "manual" is the worst possible default for a user who wrote "auto" — it produces the opposite behavior from what the value name implies. A loud error would have been better than a quiet wrong default. - "auto" is the most intuitive value name for users who want LLM-based auto-approval without knowing Hermes internal mode names. Rejecting it forces users to discover "smart" through documentation or error logs. - The web_server.py config schema had stale options that did not match the actual valid values, compounding the confusion. REFERENCES: - _normalize_approval_mode in tools/approval.py - Test: test_auto_is_alias_for_smart in tests/tools/test_approval.py - Config schema: hermes_cli/web_server.py approvals.mode options - Tips: hermes_cli/tips.py approval mode hint
This PR is titled as a one-line approval-mode fix but its diff is +18/-2085 across 20 files: the |
|
too large to review safely This PR changes 2097 production lines before tests and docs. Please split it or add a focused justification if it should stay together. Signed: GPT-5.5-low in Codex |
fix(approval): accept "auto" as alias for "smart" approval mode
THESIS: approvals.mode: auto was silently rejected by _normalize_approval_mode
(valid: manual/smart/off only) and fell back to "manual", causing every
DANGEROUS_PATTERN match to prompt the user — the exact opposite of what
"auto" implies. Users writing "auto" expect automatic approval, not more
prompts.
LEARNINGS:
wrote "auto" — it produces the opposite behavior from what the value name
implies. A loud error would have been better than a quiet wrong default.
auto-approval without knowing Hermes internal mode names. Rejecting it
forces users to discover "smart" through documentation or error logs.
actual valid values, compounding the confusion.
REFERENCES: