Skip to content

fix(credstore): stabilize macOS Keychain reads across rebuilds - #75

Closed
zzwong wants to merge 1 commit into
mainfrom
zzwong/INT-870/stable-keychain-reads
Closed

zzwong wants to merge 1 commit into
mainfrom
zzwong/INT-870/stable-keychain-reads

Conversation

@zzwong

@zzwong zzwong commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Why

macOS Keychain grants can be tied to the hash of an ad-hoc-signed CLI, so replacing a binary can prompt again for each stored credential. The shared credstore currently reads secrets through the caller binary.

Change

Read macOS Keychain generic passwords through the fixed system-signed /usr/bin/security executable, preserving the existing service/account mapping. Keep native Keychain writes, metadata, listing, and deletion; do not pass secrets on command lines or change stored entries. Add hermetic tests and update the shared guidance.

Verification

  • go test -race ./... — passed
  • go build ./... — passed
  • go test -tags keyring_no1password,keyring_nopassage ./credstore — passed
  • git diff --check — passed
  • make check — lint could not complete locally: installed golangci-lint panicked loading a dependency that reports Go 1.27 syntax while the local tool was built with Go 1.26

Release follow-up

Before release, build a consumer against this commit, grant Keychain access once, rebuild it, and verify a second read without a prompt. Coordinate consumer dependency bumps and releases after that check.

@zzwong zzwong changed the title fix(credstore): stabilize macOS Keychain reads across rebuilds (INT-870) fix(credstore): stabilize macOS Keychain reads across rebuilds Sep 25, 2026
@zzwong
zzwong force-pushed the zzwong/INT-870/stable-keychain-reads branch from ae1b70d to 0eeb338 Compare September 25, 2026 21:47
@zzwong zzwong closed this Sep 25, 2026
@zzwong
zzwong deleted the zzwong/INT-870/stable-keychain-reads branch September 25, 2026 21:47
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