Repository navigation
Replies: 2 comments
|
Fork with the package is ready — the upstream repo blocks API PR creation, so the change lives on a fork:
Status: |
0 replies
|
I just think this is a great feature. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
feat(credentials): macOS Keychain-backed credentials provider
Problem Statement
The current file-based credentials provider (
dsh-credentials-local) stores secrets in$DSH_HOME/.credentials.yamlwith0600permissions. While this prevents access by other OS users, it fails to protect against the harness’s own agent processes. Since these agents run under the same user context, they can trivially read the plaintext file. As the documentation notes, the file provider offers "discretion, not a boundary." This leaves sensitive credentials exposed to any process executing within the same user space, undermining the security model for multi-tenant or privileged agent environments.Context
The
credentials-localREADME explicitly identifies this limitation, stating that an "OS-keychain provider" is the "deferred answer" and should "belong beside this provider as a sibling package." We have now implemented that deferred answer.Proposed Solution
We introduce a working sibling package:
@deepseek-ai/dsh-credentials-keychain. This provider leverages the macOS Login Keychain to store credentials asgeneric-passworditems, ensuring secrets are never written to disk in plaintext.Key Design Features
/usr/bin/securityCLI. Secrets are fed throughstdin(neverargv) and protected by Keychain Access Control Lists (ACLs).CredentialProviderinterface, including:resolve,describe,set,unset.readRecord,describeRecord,listRecords,modifyRecord,deleteRecord.generic-passworditem where the account field equals the reference name.record:<scope>/<id>, storing a JSON payload.service(default:dsh-credentials) and optional custom keychain paths.Scope and Constraints
This provider is macOS-only, relying on native Keychain APIs. It is designed to sit alongside
dsh-credentials-localas a drop-in replacement for users requiring stronger isolation from same-user processes.Please review the implementation and integration details in the next comment
All reactions