hermes - 💡(How to fix) Fix [Bug]: renamed root/default profile alias is not honored by CLI/profile APIs

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…

A renamed root/default profile is not currently honored by Hermes Agent's profile CLI/API helpers.

In my install, the root profile display name is stored as kinni:

~/.hermes/default_profile_name = kinni
~/.hermes/active_profile = <missing>

The root profile data correctly lives directly under ~/.hermes rather than under ~/.hermes/profiles/kinni, but Hermes currently lists and resolves it only as literal default.

Error Message

$ hermes profile list

Profile Model Gateway Alias ─────────────── ───── ─────── ───── ◆default gpt-5.5 running — haku gpt-5.5 running haku noblepro gpt-5.5 running noblepro noblepro-ads gpt-5.5 running noblepro-ads noblepro-invoices gpt-5.5 running noblepro-invoices

$ hermes profile show kinni Error: Profile 'kinni' does not exist.

$ hermes -p kinni config path Error: Profile 'kinni' does not exist. Create it with: hermes profile create kinni

$ hermes -p default config path ~/.hermes/config.yaml

Root Cause

This creates user-visible confusion after renaming the root/default profile. In my case, the intended root profile is kinni, but the profile selector now appears to have lost kinni and only shows default.

It also interacts with WebUI profile work: downstream WebUI fixes can honor renamed-root aliases only if Hermes Agent's CLI/profile helpers expose and resolve the renamed root consistently.

Related WebUI context:

Fix Action

Fix / Workaround

A local patch candidate exists in my checkout that follows this shape and adds regression coverage (fix(profile): support renamed root profile), but I am filing the issue first so the desired upstream behavior is explicit.

Code Example

~/.hermes/default_profile_name = kinni
~/.hermes/active_profile = <missing>

---

$ hermes profile list

 Profile              Model      Gateway      Alias
 ───────────────      ─────      ───────      ─────
default             gpt-5.5    running      —
  haku                gpt-5.5    running      haku
  noblepro            gpt-5.5    running      noblepro
  noblepro-ads        gpt-5.5    running      noblepro-ads
  noblepro-invoices   gpt-5.5    running      noblepro-invoices

$ hermes profile show kinni
Error: Profile 'kinni' does not exist.

$ hermes -p kinni config path
Error: Profile 'kinni' does not exist. Create it with: hermes profile create kinni

$ hermes -p default config path
~/.hermes/config.yaml
RAW_BUFFERClick to expand / collapse

Summary

A renamed root/default profile is not currently honored by Hermes Agent's profile CLI/API helpers.

In my install, the root profile display name is stored as kinni:

~/.hermes/default_profile_name = kinni
~/.hermes/active_profile = <missing>

The root profile data correctly lives directly under ~/.hermes rather than under ~/.hermes/profiles/kinni, but Hermes currently lists and resolves it only as literal default.

Actual behavior

Sanitized local evidence from Hermes Agent v0.12.0 (2026.4.30), checkout 28299afc21a3:

$ hermes profile list

 Profile              Model      Gateway      Alias
 ───────────────      ─────      ───────      ─────
 ◆default             gpt-5.5    running      —
  haku                gpt-5.5    running      haku
  noblepro            gpt-5.5    running      noblepro
  noblepro-ads        gpt-5.5    running      noblepro-ads
  noblepro-invoices   gpt-5.5    running      noblepro-invoices

$ hermes profile show kinni
Error: Profile 'kinni' does not exist.

$ hermes -p kinni config path
Error: Profile 'kinni' does not exist. Create it with: hermes profile create kinni

$ hermes -p default config path
~/.hermes/config.yaml

The WebUI/profile API also sees the root profile as default, which means downstream UIs cannot reliably display or switch to the renamed root profile by its intended display name.

Expected behavior

When ~/.hermes/default_profile_name contains a root-profile display name such as kinni:

  • hermes profile list should display the root/default profile as kinni while still marking it as default/root.
  • hermes profile show kinni should resolve to ~/.hermes.
  • hermes -p kinni ... should resolve to the root profile home (~/.hermes).
  • default should remain a backwards-compatible alias for the same root profile.
  • Deleting the renamed root profile should still be refused, just as deleting default is refused.
  • Ordinary named profiles under ~/.hermes/profiles/<name> should keep existing behavior.

Why this matters

This creates user-visible confusion after renaming the root/default profile. In my case, the intended root profile is kinni, but the profile selector now appears to have lost kinni and only shows default.

It also interacts with WebUI profile work: downstream WebUI fixes can honor renamed-root aliases only if Hermes Agent's CLI/profile helpers expose and resolve the renamed root consistently.

Related WebUI context:

Possible implementation shape

Treat the root profile as having two valid names:

  1. The compatibility alias: default
  2. The display/root alias stored in ~/.hermes/default_profile_name, e.g. kinni

Then route both aliases through the root profile directory (~/.hermes) in profile helpers such as:

  • get_profile_dir()
  • profile_exists()
  • get_active_profile_name() / active profile display
  • list_profiles()
  • resolve_profile_env() / -p <profile> resolution
  • profile wrapper creation/cleanup paths

A local patch candidate exists in my checkout that follows this shape and adds regression coverage (fix(profile): support renamed root profile), but I am filing the issue first so the desired upstream behavior is explicit.

Regression tests that would pin the contract

Suggested coverage:

  • With default_profile_name = kinni, get_profile_dir("kinni") == ~/.hermes.
  • profile_exists("kinni") and profile_exists("default") are both true.
  • hermes -p kinni config path resolves to the root config.
  • hermes profile list displays the renamed root alias instead of literal default.
  • No ~/.hermes/profiles/kinni directory is required or created.
  • Deleting the renamed root alias is refused.
  • Ordinary named profile create/rename/delete behavior remains unchanged.

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

When ~/.hermes/default_profile_name contains a root-profile display name such as kinni:

  • hermes profile list should display the root/default profile as kinni while still marking it as default/root.
  • hermes profile show kinni should resolve to ~/.hermes.
  • hermes -p kinni ... should resolve to the root profile home (~/.hermes).
  • default should remain a backwards-compatible alias for the same root profile.
  • Deleting the renamed root profile should still be refused, just as deleting default is refused.
  • Ordinary named profiles under ~/.hermes/profiles/<name> should keep existing behavior.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING