Respect merge mode when restoring private keys from backups#1044
Merged
mfat merged 1 commit intoJun 30, 2026
Conversation
_restore_private_keys() now accepts the import mode and skips existing key files in merge mode instead of always overwriting them. Replace mode behavior is unchanged. Also restores the exported file mode on private keys. Co-authored-by: Mehdi <mfat@users.noreply.github.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
f212eeb
into
feature/pluggable-secret-storage-backends
4 of 6 checks passed
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.
Problem
When restoring a
.spbkbackup, config categories (SSH config, known_hosts, app settings) honor the user's Merge vs Replace choice. Private keys did not:_restore_private_keys()always overwrote files at the stored paths, so choosing Merge could still clobber an existing~/.ssh/id_ed25519.Solution
modefromapply_imported_manifest()into_restore_private_keys()..pubfile if it already exists.modefield when setting private key permissions (was hardcoded to0o600).Tests
Added two unit tests in
tests/test_backup_manager.py:test_spbk_private_key_merge_skips_existing— merge does not overwrite existing key filestest_spbk_private_key_merge_restores_missing— merge still writes keys whose paths are absent