hermes - ✅(Solved) Fix OpenAI Codex auth/model setup leaves Desktop unusable after macOS install [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#24756Fetched 2026-05-14 03:51:59
View on GitHub
Comments
0
Participants
1
Timeline
6
Reactions
0
Timeline (top)
labeled ×5cross-referenced ×1

Hermes Agent Desktop/CLI setup is not usable with OpenAI Codex auth on macOS after fresh install. The install completes enough for hermes doctor to pass many checks, but the desktop app and auth/model flows lead to contradictory states and unusable chat.

Error Message

  1. The .dmg install failed in Finder with macOS error -36.
  • Removed commands should not remain in CLI help, or the error should point to the exact replacement command.

Root Cause

  1. The .dmg install failed in Finder with macOS error -36.
  2. hdiutil verify ~/Downloads/hermes-desktop-0.3.6.dmg reported the image data was corrupted.
  3. The arm64 ZIP passed unzip -tq and installed successfully to ~/Applications/Hermes Agent.app.
  4. First launch reached Installing Hermes Agent, step 7/7, 100%, then appeared stuck on Installing Node.js dependencies (browser tools)....
  5. Meanwhile the CLI was already available and hermes doctor was mostly healthy.
  6. Desktop provider setup defaulted into bad model/provider states:
    • No models provided
    • anthropic/claude-sonnet-4-20250514 is not a valid model ID
    • Unknown provider 'openai'
  7. OpenAI Codex OAuth/device flow failed because the browser showed: Enable device code authorization for Codex in ChatGPT Security Settings, but that setting was not visible in ChatGPT Security settings. The account showed Codex CLI connected under security settings.
  8. hermes login --provider openai-codex is shown in help, but running it says the command was removed and to use hermes auth instead.
  9. hermes auth add openai-codex --type oauth starts the device flow, but the browser flow cannot continue due the device authorization blocker above.
  10. Existing local Codex CLI auth exists in ~/.codex/auth.json, but Hermes does not automatically import/use it.

Fix Action

Fixed

PR fix notes

PR #24902: fix(cli): hide deprecated hermes login from --help (#24756)

Description (problem / solution / changelog)

Summary

  • Hide the deprecated hermes login subparser from hermes --help via help=argparse.SUPPRESS so users don't discover a command that no longer works.
  • Keep the subparser registered so existing scripts/aliases that invoke hermes login [--flags] still receive the actionable deprecation message rather than an argparse invalid choice: 'login' error.
  • Rewrite the parser description to match the runtime's deprecation message (visible if a user runs hermes login --help).

The bug

#24756 reports a confusing UX during fresh macOS setup:

hermes login --provider openai-codex is shown in help, but running it says the command was removed and to use hermes auth instead.

hermes login was deprecated in favor of hermes auth by #5670, but that PR only updated documentation and error-message references — it left the actual subparser registration in hermes_cli/main.py intact, with a help string "Authenticate with an inference provider" that still surfaces in hermes --help. When a user follows that lead, the runtime in hermes_cli/auth.py::login_command just prints "The 'hermes login' command has been removed" and exits.

The fix

  1. subparsers.add_parser("login", help=argparse.SUPPRESS, description=…) — the misleading row in hermes --help is gone, but the parser keeps accepting the old flags so scripted callers don't break.
  2. Description rewrites to mirror the runtime deprecation hint (hermes auth / hermes model / hermes setup), visible on hermes login --help.
  3. Symmetric logout is intentionally left alone — logout_command is still fully functional (clears auth state, resets active provider config).

Same hiding pattern is already used in hermes_cli/kanban.py for an undocumented escape hatch flag, so this is consistent with project precedent.

Test plan

  • Focused regression tests (tests/hermes_cli/test_startup_plugin_gating.py):
    • test_login_subparser_hidden_from_help_description — runs hermes --help in-process, asserts the misleading description row is gone, asserts the auth subcommand is still listed.
    • test_login_command_still_responds_with_deprecation_message — invokes login_command directly with a stub args, asserts SystemExit(0) and the "command has been removed" + "hermes auth" message contract is preserved for scripted callers.
  • Adjacent suite: full tests/hermes_cli/test_startup_plugin_gating.py38 passed, 1 failed (test_builtin_set_covers_every_registered_subcommand is the unrelated pre-existing lsp baseline failure on origin/main; addressed by my open PR #24738).
  • Regression guard: with the SUPPRESS change reverted, test_login_subparser_hidden_from_help_description fails with "Authenticate with an inference provider" still in --help. With the deprecation message gutted, test_login_command_still_responds_with_deprecation_message fails.

Scope note

#24756 bundles six independent setup issues (DMG install error -36, desktop installer stuck, default provider/model states, Codex device-authorization blocker, this login discoverability issue, and ~/.codex/auth.json not auto-imported). This PR fixes only the discoverability issue (item 5). The remaining items are out of scope and need separate triage — happy to follow up on ~/.codex/auth.json auto-import in a separate PR if useful.

Sibling code paths that may need the same fix: none — logout, auth, model, setup are all live functional commands. Only login is the deprecation shim.

Related

  • Refs #24756 (one of six issues bundled in that report)
  • Builds on #5670 (replaced stale docs/error references but left the visible subparser)

Changed files

  • hermes_cli/main.py (modified, +11/-2)
  • tests/hermes_cli/test_startup_plugin_gating.py (modified, +75/-0)
RAW_BUFFERClick to expand / collapse

Summary

Hermes Agent Desktop/CLI setup is not usable with OpenAI Codex auth on macOS after fresh install. The install completes enough for hermes doctor to pass many checks, but the desktop app and auth/model flows lead to contradictory states and unusable chat.

Environment

  • macOS Apple Silicon (arm64)
  • Hermes Desktop asset used: Hermes Agent-0.3.6-arm64-mac.zip
  • Hermes Agent CLI version: Hermes Agent v0.13.0 (2026.5.7)
  • Install path: ~/Applications/Hermes Agent.app
  • Hermes home: ~/.hermes

What happened

  1. The .dmg install failed in Finder with macOS error -36.
  2. hdiutil verify ~/Downloads/hermes-desktop-0.3.6.dmg reported the image data was corrupted.
  3. The arm64 ZIP passed unzip -tq and installed successfully to ~/Applications/Hermes Agent.app.
  4. First launch reached Installing Hermes Agent, step 7/7, 100%, then appeared stuck on Installing Node.js dependencies (browser tools)....
  5. Meanwhile the CLI was already available and hermes doctor was mostly healthy.
  6. Desktop provider setup defaulted into bad model/provider states:
    • No models provided
    • anthropic/claude-sonnet-4-20250514 is not a valid model ID
    • Unknown provider 'openai'
  7. OpenAI Codex OAuth/device flow failed because the browser showed: Enable device code authorization for Codex in ChatGPT Security Settings, but that setting was not visible in ChatGPT Security settings. The account showed Codex CLI connected under security settings.
  8. hermes login --provider openai-codex is shown in help, but running it says the command was removed and to use hermes auth instead.
  9. hermes auth add openai-codex --type oauth starts the device flow, but the browser flow cannot continue due the device authorization blocker above.
  10. Existing local Codex CLI auth exists in ~/.codex/auth.json, but Hermes does not automatically import/use it.

Expected behavior

  • Desktop setup should not default to invalid provider/model combinations.
  • If Codex CLI is already connected, Hermes should either import it or clearly offer that path.
  • Removed commands should not remain in CLI help, or the error should point to the exact replacement command.
  • If device authorization is required, Hermes should link to the exact setting and explain what to do when the setting is not visible.
  • The desktop installer should recognize completed CLI setup instead of staying on a stuck final installer state.

Actual behavior

Hermes is installed, but not usable as a working agent runtime from Desktop for OpenAI Codex. It repeatedly enters provider/auth/model states that a user cannot resolve from the UI.

Notes

No API keys, tokens, or private project data included. This report is from a user trying to set up Hermes as a local orchestrator for a software project.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

  • Desktop setup should not default to invalid provider/model combinations.
  • If Codex CLI is already connected, Hermes should either import it or clearly offer that path.
  • Removed commands should not remain in CLI help, or the error should point to the exact replacement command.
  • If device authorization is required, Hermes should link to the exact setting and explain what to do when the setting is not visible.
  • The desktop installer should recognize completed CLI setup instead of staying on a stuck final installer state.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING