Bug with conflicting field edits between 1Password desktop and browser plugin
Hi, I’ve noticed a long-standing issue where changes made in 1Password’s desktop app and browser plugin at the same time cause one of the changes to be lost. Does anyone else experience this, and could 1Password address it?
The Problem: If you edit one field of an item in the 1Password desktop app (Windows 11) and at the same time, edit a different field for the same item in the Firefox plugin, one of the changes gets lost.
Example:
- You’re adding both MFA (OTP) and a Passkey to your GitHub account using 1Password.
- First, you add the MFA OTP using the 1Password desktop app but haven’t saved it yet.
- Then, in the same session, you add a Passkey and use the 1Password browser plugin’s "Update Existing" feature to capture it.
- You go back to the 1Password desktop app and save your OTP entry.
Expected Behaviour:
1Password should only update the OTP field in the desktop app and the Passkey field in the browser plugin.
Actual Behaviour: The Passkey field gets lost, even though both changes were to different fields. It seems the desktop app overwrites the entire item, ignoring the browser plugin's update. The history feature also doesn’t help as updates made within the same second are shown out of order, making it difficult to find the lost Passkey.
Suggested Fixes:
- Conflict Check: When saving, 1Password should check if a newer version of the item exists and only modify the fields that were edited.
- Field-Level Merging: Instead of overwriting the entire entry, only update the specific fields that were changed. This would avoid most conflicts and data loss.
- Conflict Warning: If a field was changed elsewhere, display a warning asking which version to keep or offer a merge option.
- Optimistic Locking: Implement a system that locks the entry during a save operation to prevent race conditions and alert the user if a conflict occurs (combined with above conflict warning).
Would appreciate any feedback from others or insights from the 1Password team!
Thanks!
