docs/keychain-prompts.md
CodexBar uses several credential sources, but two foreign-owned Keychain items are the common authorization surfaces:
Chrome Safe Storage, Brave Safe Storage, and Microsoft Edge Safe Storage.Claude Code-credentials item. Direct access to that foreign item is
off by default and requires explicit consent in Claude's provider settings. The default prompt policy reserves
interactive repair for a user action.CodexBar does not need the browser or Claude account password. macOS owns the authorization prompt and should name the requesting app or binary. Never send a Keychain item value, cookie header, OAuth token, API key, or password in a support report.
Background CodexBar paths are intended to fail or skip when a Keychain read would require interaction. This includes scheduled Chromium imports: CodexBar scopes the actual Safe Storage read as non-interactive, not just the preflight. A user-initiated import or acknowledged Claude repair may attempt interactive authorization because the user has chosen to continue. Denials temporarily suppress repeated Chromium-family attempts so one browser cannot lead to a prompt storm across the others.
Provider-owned child processes are a separate boundary. CodexBar may intentionally launch a provider CLI such as Claude for usage. That executable owns its credential behavior, which CodexBar cannot constrain or fully inspect.
Keychain access control evaluates the requesting executable's code signature and designated requirement, not just its filename or install path. A stable, properly signed CodexBar bundle makes grants more durable, while ad-hoc development builds or a materially changed identity may need authorization again. The Keychain item's owner can also recreate or rotate a foreign item. Chromium or Claude Code updates can therefore replace the previous access-control entry even when CodexBar itself has not changed.
The item's accessibility class controls when its data is available, such as after the first unlock. It does not grant a changed executable access and does not repair a code-signature ACL mismatch.
Only authorize a prompt whose requested item and requesting app match the action you just started. Avoid “Allow all
applications.” In Keychain Access, adding only the installed, stably signed CodexBar.app is the narrower grant.
Open CodexBar → Settings → Advanced and enable Disable Keychain access. The stored setting is applied immediately; relaunching is useful when diagnosing another already-running copy.
This setting blocks CodexBar-owned Security.framework item reads and writes, including foreign-item readers such as Zed, and disables Chromium Safe Storage decryption. Browser-cookie import that needs Keychain is skipped. It does not promise that a provider-owned CLI launched by CodexBar will avoid its own credential store; Claude's owner-CLI policy is intentionally unchanged.
Alternatives depend on the provider:
If a prompt appears unexpectedly, first read the full item name and requesting app/path. Quit CodexBar, then check for another running or installed copy:
pgrep -fl 'CodexBar|CodexBarCLI'
ls -ld /Applications/CodexBar.app
brew info --cask codexbar
mdfind 'kMDItemCFBundleIdentifier == "com.steipete.codexbar"'
Also inspect Activity Monitor and System Settings → General → Login Items. Deleting an app does not terminate an already-running process, and another copy may have launched from a different path. Do not use command-line tools to dump Keychain contents while troubleshooting.
For a support report, include: