Skip to content

fix: action secrets readable across updates (2.9.1) - #10

Merged
roypadina merged 2 commits into
mainfrom
fix/keychain-cli-owned-items
Oct 27, 2026
Merged

roypadina merged 2 commits into
mainfrom
fix/keychain-cli-owned-items

Conversation

@roypadina

Copy link
Copy Markdown
Owner

What

Stops the Keychain password prompt for Send to ntfy passwords after every update.

Root cause: the app is self-signed with no Team ID, so an item it creates with SecItemAdd is partitioned to that build's cdhash. Each new build can't read the previous build's item without asking.

How

SecretStore now creates, reads and deletes "MaccyPlus action secrets" items through /usr/bin/security. The item then trusts the CLI (ACL + partition apple-tool:), which every build can run silently. This also works from the sandbox: verified with a sandboxed test binary.

  • The secret goes in as hex on stdin (security -i + add-generic-password -U … -X <hex>), never on argv.
  • Reads parse find-generic-password -g, so hex-looking and non-ASCII values round-trip.
  • Version 2.9.1 / build 79, CHANGELOG. The appcast follows in its own PR once the release asset exists.

Existing items need one Always Allow click each.

Tests

  • New testSecretStoreParsesSecurityOutput.
  • MaccyTests/BuiltinProvidersTests pass locally (61), including the real-keychain testNtfyKeychainReferenceResolvesThroughSecretStore.

🤖 Generated with Claude Code

roypadina and others added 2 commits October 27, 2026 18:59
Without a Team ID, an item the app creates with SecItemAdd is partitioned
to that build's cdhash, so every new build asked for the login password
to read "MaccyPlus action secrets".

SecretStore now creates, reads and deletes the items through
/usr/bin/security (ACL + partition apple-tool:), which every build -
sandboxed included - runs silently. The secret goes in as hex on stdin,
never argv; reads parse `-g` output so hex-looking and non-ASCII values
round-trip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@roypadina
roypadina merged commit c3ec1de into main Oct 27, 2026
1 check passed
@roypadina
roypadina deleted the fix/keychain-cli-owned-items branch October 27, 2026 19:59
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