Skip to content

fix(macos): connections were not saved: secrets go to the login keychain - #1756

Closed
ZhuchkaTriplesix wants to merge 1 commit into
devfrom
fix/macos-keychain-legacy
Closed

ZhuchkaTriplesix wants to merge 1 commit into
devfrom
fix/macos-keychain-legacy

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

On macOS a new connection is not kept. `LocalDb.addConnection` inserts the row, writes the password to the secure store, and rolls the row back when that write throws.

`flutter_secure_storage` uses the data-protection keychain on macOS by default (`usesDataProtectionKeychain: true`). That needs the `keychain-access-groups` entitlement, which `ReleaseSigned.entitlements` (non-sandboxed Developer ID build) does not carry, so the write should fail with errSecMissingEntitlement (-34018) and the row is rolled back. This change switches macOS to the login keychain (`usesDataProtectionKeychain: false`).

Not verified on a Mac. The cause is inferred from the code and entitlements, not from an observed error. Please check on a Mac that a new connection with a password survives an app restart. If it still fails, the error now shows in the debug log (`PostgresConnection.connect` logging from #1755).

No existing secrets are affected: with the old setting nothing could have been written on the signed build.

…protection keychain needs an entitlement the signed build lacks
@ZhuchkaTriplesix

Copy link
Copy Markdown
Member Author

Closed: dev already has this fix (#1586, ConnectionSecretsStore.macOsOptions). This PR was also pushed with merge-conflict markers by mistake.

@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the fix/macos-keychain-legacy branch October 25, 2026 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant