Install
openclaw skills install @jlacroix82/secrets-managerSecure secrets store for OpenClaw agents. AES-256-GCM encryption. Store, retrieve, rotate, and audit secrets. Inject secrets into commands. Zero external dependencies.
openclaw skills install @jlacroix82/secrets-managerStop hardcoding secrets. Start managing them securely.
API keys, tokens, passwords — they end up in shell history, logs, or committed to git. No local secrets store means every agent session is a potential leak.
Secrets Manager fixes this with AES-256-GCM encrypted local storage and zero dependencies.
Secrets Manager is a local agent tool, not a production secrets vault. Raw secrets printed via --get --raw or embedded via --inject can leak to shell history, terminal scrollback, logs, CI output, and process listings. Prefer environment-variable injection for sensitive contexts. See the Security Notes section below.
node skills/secrets-manager/secrets-manager.js --store openai-key sk-abc123
node skills/secrets-manager/secrets-manager.js --get openai-key
# Output (stderr): [secrets-manager] openai-key: sk-a****23
node skills/secrets-manager/secrets-manager.js --get --raw openai-key
# ⚠️ WARNING: Outputs raw secret to stdout
node skills/secrets-manager/secrets-manager.js --list
node skills/secrets-manager/secrets-manager.js --delete old-key
node skills/secrets-manager/secrets-manager.js --rotate openai-key
# Generates a new random value, archives old as "retired"
# New value is never printed — secure by default
node skills/secrets-manager/secrets-manager.js --rotate --all
node skills/secrets-manager/secrets-manager.js --audit
node skills/secrets-manager/secrets-manager.js --audit --expired
node skills/secrets-manager/secrets-manager.js --audit --stale
node skills/secrets-manager/secrets-manager.js --inject "curl -H 'Authorization: Bearer {{openai-key}}' https://api.openai.com/v1/chat"
# ⚠️ WARNING: Output contains plaintext secrets. Piping to a shell
# exposes them to history, process listings, and logs.
# Prefer: export TOKEN=$(... --get --raw); curl -H "Authorization: Bearer $TOKEN" ...
node skills/secrets-manager/secrets-manager.js --status
SECRETS_MASTER_KEY env var)memory/secrets/.master-key (mode 0600)memory/secrets/secrets.json (mode 0600){{secret_name}} placeholders replaced with stored valuesmemory/secrets/secrets.jsonmemory/secrets/.master-key or SECRETS_MASTER_KEY env var--dir /path/to/secretsWhen handling secrets:
--store first--get (not --get --raw) for display--audit during health checks--inject0600 (owner read/write only)--get --raw) prints secrets to stdout — exposes to logs, scrollback, CI--inject) embeds plaintext secrets — exposes to shell history, ps, /proc| Approach | Encryption | Audit | Rotation | Warnings |
|---|---|---|---|---|
| Environment vars | None | None | Manual | None |
| .env files | None | None | Manual | None |
| Secrets Manager | AES-256-GCM | Auto | Auto | Built-in |
| Vault service | AES-256-GCM | Auto | Auto | Enterprise |
Secrets Manager gives you authenticated encryption + rotation + auditing with zero external dependencies.
crypto, no npm packages