Skip to content

fix(doctor): attach codex CLI hint to OpenAI Codex auth (#27986)#28595

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-3ad7d98a
May 19, 2026
Merged

fix(doctor): attach codex CLI hint to OpenAI Codex auth (#27986)#28595
teknium1 merged 1 commit into
mainfrom
hermes/hermes-3ad7d98a

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Salvage of #27986 by @xxxigm (squashed 3-commit stack). Supersedes duplicates #28007 (@worlldz) and #28186 (@outsourc-e) — all three landed the same diff; @xxxigm submitted first.

What: hermes doctor printed 'codex CLI not installed' as a generic info line at the bottom of the auth section, several rows below 'OpenAI Codex auth (not logged in)' and after MiniMax/Gemini auth checks. Users reading sequentially mistook it for MiniMax-related advice.

How: Move the hint up under the Codex auth warning so it's adjacent to the row it pertains to. Behavior unchanged when the codex CLI IS installed (success path keeps its 'codex CLI ✓' row at the bottom). Tests cover both placement and suppression cases.

Original PR: #27986
Co-credit: @worlldz (#28007) and @outsourc-e (#28186) submitted the same fix in parallel; closing those in favor of this one.
Closes #27975.

…27975

`hermes doctor` printed 'codex CLI not installed (optional — ...)' as a
generic info line at the bottom of the auth section, several rows below
'OpenAI Codex auth (not logged in)' and after MiniMax/Gemini auth checks.
Users reading sequentially mistook it for MiniMax-related advice.

Move the hint up under the Codex auth warning so it's adjacent to the
row it actually pertains to. Behavior unchanged when the codex CLI is
installed (success path keeps its 'codex CLI ✓' row at the bottom).
Tests cover both placement and suppression cases.

Salvage of @xxxigm's 3-commit stack (#27986).
Closes #27975.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-3ad7d98a vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 8954 on HEAD, 0 on base (🆕 +8954)

🆕 New issues (4702):

Rule Count
unresolved-import 1392
unresolved-attribute 1226
invalid-argument-type 1001
invalid-assignment 473
unsupported-operator 141
invalid-parameter-default 129
invalid-method-override 86
not-subscriptable 85
invalid-return-type 38
no-matching-overload 31
call-non-callable 29
unused-type-ignore-comment 19
unresolved-reference 17
invalid-type-form 17
not-iterable 6
+6 more rules
First entries
gateway/platforms/bluebubbles.py:439: [deprecated] deprecated: The function `utcnow` is deprecated: Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .now(datetime.timezone.utc)
tests/gateway/test_line_plugin.py:467: [not-subscriptable] not-subscriptable: Cannot subscript object of type `None` with no `__getitem__` method
tests/test_yuanbao_pipeline.py:762: [invalid-assignment] invalid-assignment: Object of type `AsyncMock` is not assignable to attribute `handle_message` of type `def handle_message(self, event: MessageEvent) -> CoroutineType[Any, Any, None]`
plugins/video_gen/fal/__init__.py:325: [unresolved-import] unresolved-import: Cannot resolve imported module `fal_client`
tests/hermes_cli/test_gemini_free_tier_setup_block.py:6: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
tests/run_agent/test_session_id_env.py:46: [unresolved-attribute] unresolved-attribute: Object of type `AIAgent` has no attribute `session_id`
tests/agent/test_minimax_provider.py:301: [invalid-argument-type] invalid-argument-type: Argument to function `AIAgent._anthropic_preserve_dots` is incorrect: Expected `AIAgent`, found `SimpleNamespace`
batch_runner.py:552: [invalid-parameter-default] invalid-parameter-default: Default value of type `None` is not assignable to annotated parameter type `dict[str, Any]`
tests/acp/test_tools.py:15: [unresolved-import] unresolved-import: Cannot resolve imported module `acp.schema`
tests/tools/test_send_message_telegram_proxy.py:23: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
tools/environments/base.py:694: [unresolved-attribute] unresolved-attribute: Attribute `close` is not defined on `None` in union `IO[str] | None`
tools/environments/local.py:532: [unresolved-attribute] unresolved-attribute: Module `subprocess` has no member `CREATE_NO_WINDOW`
tests/tools/test_skills_hub_clawhub.py:210: [unresolved-attribute] unresolved-attribute: Attribute `name` is not defined on `None` in union `SkillMeta | None`
tests/agent/test_redact.py:6: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
tools/environments/docker.py:303: [invalid-parameter-default] invalid-parameter-default: Default value of type `None` is not assignable to annotated parameter type `list[Unknown]`
hermes_cli/runtime_provider.py:654: [invalid-argument-type] invalid-argument-type: Argument to function `_config_base_url_trustworthy_for_bare_custom` is incorrect: Expected `str`, found `Any | None | Literal[""]`
gateway/platforms/yuanbao.py:3065: [unresolved-attribute] unresolved-attribute: Attribute `exceptions` is not defined on `None` in union `Unknown | None`
tests/hermes_cli/test_aux_config.py:40: [invalid-argument-type] invalid-argument-type: Method `__getitem__` of type `Overload[(key: SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> LiteralString, (key: SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> str]` cannot be called with key of type `Literal["model"]` on object of type `str`
tests/gateway/test_api_server.py:22: [unresolved-import] unresolved-import: Cannot resolve imported module `aiohttp`
tests/run_agent/test_compression_boundary.py:42: [invalid-argument-type] invalid-argument-type: Argument to `ContextCompressor.__init__` is incorrect: Expected `int | float`, found `str | int | float`
tests/gateway/test_discord_slash_commands.py:113: [invalid-assignment] invalid-assignment: Object of type `AsyncMock` is not assignable to attribute `_check_slash_authorization` of type `def _check_slash_authorization(self, interaction: Unknown, command_text: str) -> CoroutineType[Any, Any, bool]`
tools/mcp_tool.py:225: [unresolved-import] unresolved-import: Cannot resolve imported module `mcp.types`
gateway/platforms/discord.py:263: [unresolved-import] unresolved-import: Cannot resolve imported module `discord.utils`
tests/tools/test_mcp_oauth_cold_load_expiry.py:503: [unresolved-import] unresolved-import: Cannot resolve imported module `pydantic`
tests/agent/test_crossloop_client_cache.py:17: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
... and 4677 more

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard labels May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: hermes doctor prints the codex CLI import hint under MiniMax OAuth

3 participants