fix: three CLI quality-of-life fixes#10599
Merged
Merged
Conversation
Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (#10526, #9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes #10468, #10230, #10526, #9545
kagura-agent
pushed a commit
to kagura-agent/hermes-agent
that referenced
this pull request
Apr 16, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
Colin4k1024
pushed a commit
to Colin4k1024/hermes-agent
that referenced
this pull request
Apr 17, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
OutThisLife
added a commit
that referenced
this pull request
Apr 18, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs #10526 — the Python backend dedupe from #10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
19 tasks
man209111-cpu
pushed a commit
to man209111-cpu/hermes-agent
that referenced
this pull request
Apr 18, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
1 task
This was referenced Apr 27, 2026
ulasbilgen
pushed a commit
to ulasbilgen/hermes-adhd-agent
that referenced
this pull request
May 1, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
ulasbilgen
pushed a commit
to ulasbilgen/hermes-adhd-agent
that referenced
this pull request
May 1, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
aj-nt
pushed a commit
to aj-nt/hermes-agent
that referenced
this pull request
May 1, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
aj-nt
pushed a commit
to aj-nt/hermes-agent
that referenced
this pull request
May 1, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
02356abc
pushed a commit
to 02356abc/hermes-agent
that referenced
this pull request
May 14, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
02356abc
pushed a commit
to 02356abc/hermes-agent
that referenced
this pull request
May 14, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
gweeteve
pushed a commit
to gweeteve/hermes-agent
that referenced
this pull request
Jun 2, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
gweeteve
pushed a commit
to gweeteve/hermes-agent
that referenced
this pull request
Jun 2, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
Egavasyug
pushed a commit
to Egavasyug/hermes-agent
that referenced
this pull request
Jun 10, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599) Three independent fixes batched together: 1. hermes auth add crashes on non-interactive stdin (NousResearch#10468) input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label. 2. Subcommand help prints twice (NousResearch#10230) 'hermes dashboard -h' printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately. 3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545) - Kimi showed 2x because kimi-coding and kimi-coding-cn both mapped to the same models.dev ID. Fix: track seen mdev_ids and skip aliases. - Providers could show 2-3x from case-variant slugs across the four loading paths. Fix: normalize all seen_slugs membership checks and insertions to lowercase. Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
Egavasyug
pushed a commit
to Egavasyug/hermes-agent
that referenced
this pull request
Jun 10, 2026
… collide If the gateway returns two providers that resolve to the same display name (e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the picker now appends the slug so users can tell them apart, in both the provider list and the selected-provider header. No-op when names are already unique. Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but user-defined providers, canonical overlays, and future regressions can still surface as indistinguishable rows in the picker. This is a client-side safety net on top of that.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three independent CLI fixes batched together. 3 files, 28 lines net.
1.
hermes auth addcrashes on non-interactive stdin (#10468)input()for the label prompt was called without checkingisatty(). In scripted/CI environments this raisedEOFError. Fix: checksys.stdin.isatty()and fall back to the computed default label.2. Subcommand help prints twice (#10230)
hermes dashboard -hprinted help text twice because theSystemExit(0)from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raiseSystemExitwith code 0 (help/version) immediately instead of falling through.3. Duplicate entries in /model picker (#10526, #9545)
kimi-codingandkimi-coding-cnboth map to the samemodels.devID (kimi-for-coding). Fix: trackseen_mdev_idsand skip aliases — first one with valid credentials wins.seen_slugschecks to lowercase.Tests
2081 hermes_cli tests pass. 1 pre-existing failure in test_model_validation (unrelated).