You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agents currently submit passwords through normal fill values. Password fields are omitted from semantic snapshots and flows do not record fill values, but secrets can still appear in model context, process arguments, tool transcripts, or shell history. There is no credential vault, authorization policy, trusted autofill path, or documented relationship between credential security and macOS code signing.
Apple Developer Program membership is not required to implement Keychain storage, local authentication prompts, secure terminal input, aliases, private IPC, persistent sessions, or local tests. It is required for Developer ID certificates and notarized public distribution. That distinction must be settled before implementation because it changes which authorization modes can be offered safely.
Security goals
Password values never appear in snapshots, command output, MCP responses, logs, flows, recordings, diagnostics, errors, environment variables, or process arguments.
Websites and page JavaScript cannot enumerate aliases or query the vault.
Credentials are bound to a canonical authentication origin and account identity.
The vault fails closed when a supported OS secret store is unavailable.
Login cookies and profile data are included in the authentication threat model.
Direct agent-provided credentials remain available as an explicit user choice, with clear disclosure that the model or tool provider may retain them.
Threat model
Document protection against:
Another OS account or offline copy of the profile.
An untrusted webpage, cross-origin frame, or prompt-injection attempt.
An ordinary process that can reach the per-user socket.
A malicious process running as the logged-in user.
Browser-process injection or compromise.
Root, administrator, or kernel compromise.
Theft of authenticated session cookies without theft of a password.
Replacement of the distributed application or credential broker.
No design should claim to protect against every same-user or privileged compromise. The intended guarantees and residual risks must be stated precisely.
Required broker architecture
Specify a credential broker that:
Is the only component allowed to read password values from macOS Keychain or Linux Secret Service/KWallet.
Exposes aliases and opaque challenge references, never password values.
Authenticates IPC callers and validates the active session and top-level origin.
Keeps plaintext only for the shortest practical lifetime and clears temporary buffers where the platform permits.
Rejects insecure storage backends, including Chromium's Linux plaintext fallback.
That exception must remain off by default, inaccessible to agent-facing settings, explicit about its authorization-provenance risk, and invalidated after defined application-identity changes.
Users may need to approve the application manually through Gatekeeper.
Rebuilt or relocated binaries may trigger new Keychain prompts or be treated as a different identity.
Public automatic updates must not claim a stable Apple-verified signer.
Source builds and locally trusted installations are supported, but must not be described as notarized or enterprise-ready.
A locally generated or self-signed certificate may stabilize one installation, but it does not create public trust, requires per-user certificate management, and must not be the default distribution strategy.
Developer ID build with paid Apple membership
Developer ID distribution remains outside the Mac App Store and does not require App Store review. It enables:
A stable Apple-verifiable application and broker identity.
Notarization and normal Gatekeeper installation behavior.
Reliable identity across public updates.
Provisioned Keychain access groups if multiple signed components genuinely require them.
Consideration of session-level or trusted-origin approvals after security review.
Certificates, certificate passwords, team identifiers, and notarization credentials must live in protected local storage or CI secrets, never in the repository, artifacts, logs, or issue text.
Linux behavior
Linux implementation has no Apple dependency. Use Secret Service or KWallet through a documented backend. If neither approved backend is available or unlocked, credential storage and retrieval fail explicitly. Never fall back to a basic plaintext Chromium store.
The same alias, origin, challenge, redaction, private-context, and authorization contracts apply. Platform-specific limitations must be represented through capabilities rather than silent partial behavior.
Decision options
Support both deployment tiers. This is the recommended option. Development and community builds default to mandatory user presence and may offer the explicit native-only exception in Unsigned macOS credentials: user-authorized use without repeated confirmation #166; signed builds can later enable reviewed convenience policies.
Require Developer ID for all macOS credential features. This provides a simpler guarantee but blocks community and local users unnecessarily.
Defer the macOS credential manager until signing is available. This minimizes near-term risk but delays useful functionality and Linux parity.
The architecture should not require redesign when moving from option 1's local tier to a Developer ID release.
Required decisions
Record:
Chosen deployment tier policy.
Broker process and IPC identity checks.
Keychain item access-control flags and behavior after application updates.
Whether any component sharing requires a provisioned access group.
Problem
Agents currently submit passwords through normal fill values. Password fields are omitted from semantic snapshots and flows do not record fill values, but secrets can still appear in model context, process arguments, tool transcripts, or shell history. There is no credential vault, authorization policy, trusted autofill path, or documented relationship between credential security and macOS code signing.
Apple Developer Program membership is not required to implement Keychain storage, local authentication prompts, secure terminal input, aliases, private IPC, persistent sessions, or local tests. It is required for Developer ID certificates and notarized public distribution. That distinction must be settled before implementation because it changes which authorization modes can be offered safely.
Security goals
Threat model
Document protection against:
No design should claim to protect against every same-user or privileged compromise. The intended guarantees and residual risks must be stated precisely.
Required broker architecture
Specify a credential broker that:
macOS deployment tiers
Community or local build without paid Apple membership
The application can be compiled, ad-hoc signed, and tested locally. It can use Keychain Services and request Touch ID or macOS password authorization.
Required restrictions:
A locally generated or self-signed certificate may stabilize one installation, but it does not create public trust, requires per-user certificate management, and must not be the default distribution strategy.
Developer ID build with paid Apple membership
Developer ID distribution remains outside the Mac App Store and does not require App Store review. It enables:
Certificates, certificate passwords, team identifiers, and notarization credentials must live in protected local storage or CI secrets, never in the repository, artifacts, logs, or issue text.
Linux behavior
Linux implementation has no Apple dependency. Use Secret Service or KWallet through a documented backend. If neither approved backend is available or unlocked, credential storage and retrieval fail explicitly. Never fall back to a basic plaintext Chromium store.
The same alias, origin, challenge, redaction, private-context, and authorization contracts apply. Platform-specific limitations must be represented through capabilities rather than silent partial behavior.
Decision options
The architecture should not require redesign when moving from option 1's local tier to a Developer ID release.
Required decisions
Record:
Acceptance criteria
Apple references