fix(config): shipped template no longer enables session auto-reset - #67772
Merged
Conversation
#60194 flipped SessionResetPolicy's default to mode: none, but cli-config.yaml.example still shipped session_reset.mode: both. Every install path (install.sh, install.ps1, docker stage2-hook, hermes doctor) copies the template verbatim to ~/.hermes/config.yaml, so fresh installs got an EXPLICIT mode: both that overrides the code default — users hit 24h-idle resets with 'nothing' in their config enabling it. - cli-config.yaml.example: session_reset.mode both -> none, comments rewritten to describe auto-reset as opt-in - docs/session-lifecycle.md: appendix example updated to match - tests/gateway/test_config.py: invariant tests — template seed, absent config, and mode-less session_reset block all resolve to mode none; explicit opt-in still honored
Collaborator
Open
1 task
randlee
pushed a commit
to randlee/hermes-agent
that referenced
this pull request
Aug 11, 2026
…ousResearch#67772) NousResearch#60194 flipped SessionResetPolicy's default to mode: none, but cli-config.yaml.example still shipped session_reset.mode: both. Every install path (install.sh, install.ps1, docker stage2-hook, hermes doctor) copies the template verbatim to ~/.hermes/config.yaml, so fresh installs got an EXPLICIT mode: both that overrides the code default — users hit 24h-idle resets with 'nothing' in their config enabling it. - cli-config.yaml.example: session_reset.mode both -> none, comments rewritten to describe auto-reset as opt-in - docs/session-lifecycle.md: appendix example updated to match - tests/gateway/test_config.py: invariant tests — template seed, absent config, and mode-less session_reset block all resolve to mode none; explicit opt-in still honored
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
Fresh installs no longer get session auto-reset silently enabled: the shipped config template (
cli-config.yaml.example) now seedssession_reset.mode: none, matching the runtime default from #60194.Root cause of the "auto-reset with nothing in my config" reports (Luciano, July 2026): #60194 flipped
SessionResetPolicy's code default to"none", but the template still shippedmode: both. Every install path —scripts/install.sh,scripts/install.ps1,docker/stage2-hook.sh, andhermes doctor— copies the template verbatim to~/.hermes/config.yaml, so new installs got an EXPLICITmode: boththat overrides the code default. Users then hit the 24h-idle reset banner while their config "had nothing enabling it" (nobody greps their config for settings the installer planted).Changes
cli-config.yaml.example:session_reset.modeboth→none; comments rewritten to describe auto-reset as opt-in (and no longer recommendboth)docs/session-lifecycle.md: appendix example updated to match the real defaulttests/gateway/test_config.py: 4 invariant tests inTestLoadGatewayConfigValidation
mode: both— 24h idle reset ONmode: nonenone(already correct)none(pinned by test)session_reset:block withoutmodenone(already correct)none(pinned by test)mode: idleopt-inThe template test loads the actual
cli-config.yaml.examplethroughload_gateway_config()— if the template ever re-enables resets, CI fails. 117/117 tests intests/gateway/test_config.pypass viascripts/run_tests.sh.Remaining ways an existing user still sees resets (not bugs, informational): pre-existing config.yaml seeded from the old template (explicit user data — we honor it), legacy
~/.hermes/gateway.jsonwith adefault_reset_policy, or a pre-v2026.7.7 runtime that was never restarted.Infographic