hermes-agent/hermes_cli
kshitijk4poor a7ec334448 fix(cli): deprecated `hermes login` fails gracefully for any provider
`hermes login` was removed in favor of `hermes auth` / `hermes model`, but
the subparser still validated `--provider` against a hardcoded choices list
(nous, openai-codex, xai-oauth). Running `hermes login --provider anthropic`
therefore crashed in argparse with `invalid choice: 'anthropic'` *before* the
deprecation handler could print the redirect to `hermes model` — so a user
trying to authenticate a perfectly valid provider just saw a hard error and
assumed the feature was broken rather than relocated.

- Drop the restrictive `choices=` so every `--provider` value reaches the
  deprecation handler (which ignores the value and prints guidance).
- Omit the subparser `help=` kwarg so the dead command no longer advertises
  itself in `hermes --help` (#24756). Avoids the `==SUPPRESS==` placeholder
  leak that `help=argparse.SUPPRESS` emits for a top-level subparser on 3.12+.
- `hermes login [--flags]` still reaches the actionable deprecation message
  for old scripts/aliases; `hermes login --help` shows the redirect.

Picks up the intent of the inactivity-closed #24902, rebased onto the
post-refactor parser location (hermes_cli/subcommands/login.py) and extended
to fix the whole bug class (any provider value), not just hiding from --help.

Tests: parametrized provider acceptance + help-suppression (no SUPPRESS leak).
2026-06-17 12:55:40 +05:30
..
dashboard_auth
…
proxy
…
subcommands fix(cli): deprecated `hermes login` fails gracefully for any provider 2026-06-17 12:55:40 +05:30
__init__.py
…
_parser.py
…
_subprocess_compat.py
…
active_sessions.py
…
auth.py fix(auth): preserve Codex pool-only rate-limit state 2026-06-16 05:56:11 -07:00
auth_commands.py
…
azure_detect.py
…
backup.py
…
banner.py
…
blueprint_cmd.py
…
browser_connect.py
…
build_info.py
…
bundles.py
…
callbacks.py
…
checkpoints.py
…
claw.py
…
cli_agent_setup_mixin.py
…
cli_commands_mixin.py
…
cli_output.py
…
clipboard.py
…
codex_models.py
…
codex_runtime_plugin_migration.py
…
codex_runtime_switch.py
…
colors.py
…
commands.py docs(cli): note URL exclusion in _extract_path_word docstring 2026-06-17 12:36:01 +05:30
completion.py
…
config.py feat(gateway): gate message timestamps behind opt-in (default off) 2026-06-16 15:49:59 -07:00
container_boot.py
…
copilot_auth.py
…
cron.py
…
curator.py
…
curses_ui.py
…
dashboard_register.py
…
debug.py
…
default_soul.py
…
dep_ensure.py
…
dingtalk_auth.py
…
doctor.py
…
dump.py
…
env_loader.py
…
fallback_cmd.py
…
fallback_config.py
…
gateway.py
…
gateway_windows.py
…
goals.py
…
gui_uninstall.py
…
hooks.py
…
inventory.py fix(inventory): keep user-defined custom providers in model dedup 2026-06-16 13:04:07 -07:00
kanban.py
…
kanban_db.py
…
kanban_decompose.py
…
kanban_diagnostics.py
…
kanban_specify.py
…
kanban_swarm.py
…
logs.py
…
main.py fix(desktop): re-download Electron binary via mirror when pack fails (#47266) (#47276) 2026-06-16 15:40:55 -05:00
managed_uv.py
…
mcp_catalog.py
…
mcp_config.py
…
mcp_picker.py
…
mcp_security.py
…
mcp_startup.py
…
memory_setup.py
…
middleware.py
…
migrate.py
…
model_catalog.py
…
model_cost_guard.py
…
model_normalize.py
…
model_setup_flows.py feat(xai): default to grok-build-0.1 2026-06-16 11:50:17 -07:00
model_switch.py fix(model-switch): probe /v1/models for providers without api_key 2026-06-16 13:07:52 -07:00
models.py fix(models): pass model.base_url to fetch_models in /model picker 2026-06-16 13:09:40 -07:00
nous_account.py
…
nous_subscription.py
…
oneshot.py
…
pairing.py
…
partial_compress.py
…
platforms.py
…
plugins.py
…
plugins_cmd.py
…
portal_cli.py
…
profile_describer.py
…
profile_distribution.py
…
profiles.py
…
prompt_size.py
…
providers.py
…
psutil_android.py
…
pt_input_extras.py
…
pty_bridge.py
…
relaunch.py
…
runtime_provider.py
…
secret_prompt.py
…
secrets_cli.py
…
security_advisories.py
…
security_audit.py
…
send_cmd.py
…
service_manager.py
…
session_listing.py
…
session_recap.py
…
setup.py
…
setup_whatsapp_cloud.py
…
skills_config.py
…
skills_hub.py
…
skin_engine.py
…
slack_cli.py
…
status.py
…
stdio.py
…
suggestions_cmd.py
…
telegram_managed_bot.py
…
timeouts.py
…
tips.py
…
tools_config.py
…
uninstall.py
…
voice.py
…
web_server.py
…
webhook.py
…
win_pty_bridge.py
…
write_approval_commands.py
…
xai_retirement.py
…