fix: OpenClaw migration overwrites defaults and setup wizard skips imported sections#3282
Merged
fix: OpenClaw migration overwrites defaults and setup wizard skips imported sections#3282
Conversation
…ported sections Two bugs caused the OpenClaw migration during first-time setup to be ineffective, forcing users to reconfigure everything manually: 1. The setup wizard created config.yaml with all defaults BEFORE running the migration, then the migrator ran with overwrite=False. Every config setting was reported as a 'conflict' against the defaults and skipped. Fix: use overwrite=True during setup-time migration (safe because only defaults exist at that point). The hermes claw migrate CLI command still defaults to overwrite=False for post-setup use. 2. After migration, the full setup wizard ran all 5 sections unconditionally, forcing the user through model/terminal/agent/messaging/tools configuration even when those settings were just imported. Fix: add _get_section_config_summary() and _skip_configured_section() helpers. After migration, each section checks if it's already configured (API keys present, non-default values, platform tokens) and offers 'Reconfigure? [y/N]' with default No. Unconfigured sections still run normally. Reported by Dev Bredda on social media.
|
StreamOfRon
pushed a commit
to StreamOfRon/hermes-agent
that referenced
this pull request
Mar 29, 2026
…ported sections (NousResearch#3282) Two bugs caused the OpenClaw migration during first-time setup to be ineffective, forcing users to reconfigure everything manually: 1. The setup wizard created config.yaml with all defaults BEFORE running the migration, then the migrator ran with overwrite=False. Every config setting was reported as a 'conflict' against the defaults and skipped. Fix: use overwrite=True during setup-time migration (safe because only defaults exist at that point). The hermes claw migrate CLI command still defaults to overwrite=False for post-setup use. 2. After migration, the full setup wizard ran all 5 sections unconditionally, forcing the user through model/terminal/agent/messaging/tools configuration even when those settings were just imported. Fix: add _get_section_config_summary() and _skip_configured_section() helpers. After migration, each section checks if it's already configured (API keys present, non-default values, platform tokens) and offers 'Reconfigure? [y/N]' with default No. Unconfigured sections still run normally. Reported by Dev Bredda on social media.
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
Two bugs caused the OpenClaw migration during first-time setup to appear to do nothing, forcing users to reconfigure everything manually.
Bug 1: Default config creates false conflicts
_offer_openclaw_migration()calledsave_config(load_config())to createconfig.yamlbefore migration. This wrote ALL defaults (e.g.model: anthropic/claude-opus-4.6). The migrator then ran withoverwrite=False, saw existing values for everything, and reported them all as "conflicts" — even though they were just defaults.Fix: Use
overwrite=Trueduring setup-time migration. This is safe because only defaults exist at that point. Thehermes claw migrateCLI command still defaults tooverwrite=Falsefor post-setup use where real user values may exist.Bug 2: Setup wizard continues unconditionally after migration
After migration, all 5 setup sections ran regardless of what was imported, forcing the user through model/terminal/agent/messaging/tools configuration from scratch.
Fix: Add
_get_section_config_summary()and_skip_configured_section()helpers. After migration, each section checks if it's already configured:Configured sections show a summary and ask
Reconfigure [section]? [y/N]with default No. Unconfigured sections (e.g. no messaging tokens were imported) still run the full interactive flow.Test plan
test_setup_openclaw_migration.py(was 10)test_setup.py/test_setup_model_provider.pyremain unchangedReported by Dev Bredda on social media.