You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
hermes config set provider X writes to a top-level provider: key in config.yaml, but the runtime reads the effective provider from model.provider — a nested key. The two keys silently diverge, so a user who runs hermes config set provider openai and later checks hermes config show sees the value, but the agent never actually uses it.
Add a CONFIG_KEY_ALIASES registry inside set_config_value() that transparently maps the user-friendly shortcut provider to the canonical dotted path model.provider, and cleans up any legacy bare key left by previous writes.
🐛 Bug fix (non-breaking change that fixes an issue)
Changes Made
hermes_cli/config.py: Added _CONFIG_KEY_ALIASES mapping that resolves provider → model.provider before calling _set_nested. Also cleans up any lingering bare provider: key from previous writes.
How to Test
Run hermes config set provider opencode-go and verify it writes to model.provider in config.yaml (not a top-level provider: key)
Run hermes config show and confirm the provider reflects the new value
Verify hermes config set model.provider anthropic still works (explicit dotted path unaffected)
This reverts the fix for cascading-interrupt hang (#6600). The _request_cancelled flag was specifically added so the worker thread recognizes a force-close as intentional (not a network bug) and exits without burning full retry cycles. Removing it reintroduces the 7-minute hang on interrupt.
The ThreadPoolExecutor + _drain_sync_executor pattern exists because a misconfigured provider's sync_turn was observed blocking ~298s inline. Removing it means a slow/wedged memory provider blocks the turn-completion path again, keeping the agent marked "running" in all interfaces.
Reverts the fix for #40998 (interrupted clone with no initial commit causing git stash to abort). The three-check validation (rev-parse + status + HEAD) was belt-and-braces against partial checkouts.
4. scripts/install.sh — same as above
Recommendation: The hermes_cli/config.py shortcut alias (13 lines) is a clean, correct fix. The other three changes should be in separate PRs if they're intentional — but based on the code comments referencing specific issue numbers, these look like accidental deletions rather than deliberate reverts. Please confirm the intent.
Thanks for the thorough review! The unrelated regressions you pointed out were actually an artifact of a messy force-push on my fork branch. I've since squashed the history and the current diff should only contain the config.py +14 alias change. The current PR diff is clean now — just the one file. Appreciate you catching 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
area/configConfig system, migrations, profilescomp/cliCLI entry point, hermes_cli/, setup wizardP2Medium — degraded but workaround existstype/bugSomething isn't working
3 participants
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.
What does this PR do?
hermes config set provider Xwrites to a top-levelprovider:key inconfig.yaml, but the runtime reads the effective provider frommodel.provider— a nested key. The two keys silently diverge, so a user who runshermes config set provider openaiand later checkshermes config showsees the value, but the agent never actually uses it.Add a
CONFIG_KEY_ALIASESregistry insideset_config_value()that transparently maps the user-friendly shortcutproviderto the canonical dotted pathmodel.provider, and cleans up any legacy bare key left by previous writes.Related Issue
Fixes #41943
Type of Change
Changes Made
hermes_cli/config.py: Added_CONFIG_KEY_ALIASESmapping that resolvesprovider→model.providerbefore calling_set_nested. Also cleans up any lingering bareprovider:key from previous writes.How to Test
hermes config set provider opencode-goand verify it writes tomodel.providerinconfig.yaml(not a top-levelprovider:key)hermes config showand confirm the provider reflects the new valuehermes config set model.provider anthropicstill works (explicit dotted path unaffected)Checklist
Code
fix(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/A