Managing Secrets
DaemonHound's secret store provides named, versioned secrets with automatic file rewriting when values change.
Storing a secret
Shell
dhd secret set openai-key
# Enter secret value: ••••••••
# ✓ Secret storedMapping secrets to files
One secret, different env var names per project:
Shell
cd ~/projects/my-api
dhd secret ref openai-key .env.local OPENAI_API_KEY
cd ~/projects/portfolio
dhd secret ref openai-key .env.local OPENAI_KEY
cd ~/projects/cli-tool
dhd secret ref openai-key .env AI_TOKENAuto-rewrite on rotation
Shell
dhd secret set openai-key NEW_VALUE
# → Updated .env.local in github.com/you/my-api (OPENAI_API_KEY)
# → Updated .env.local in github.com/you/portfolio (OPENAI_KEY)
# → Updated .env in github.com/you/cli-tool (AI_TOKEN)
# → 3 files marked dirty — run dhd sync to pushManaging secrets
Shell
dhd secret get openai-key # Retrieve value
dhd secret list # List all secrets
dhd secret list openai-key # Show mappings
dhd secret rename old-key new # Rename, keep mappings
dhd secret rotate openai-key # Change value
dhd secret delete openai-key # Delete + all mappingsVersion history
Shell
dhd secret history openai-key
# v3 2026-07-28T14:22:00Z rotated
# v2 2026-07-15T09:11:00Z initial
dhd secret diff openai-key # Compare versions
dhd secret rollback openai-key # Restore previousWeb UI
Run dhd ui for the browser-based Secrets Manager: version viewer, diff comparison, rotation control, full history.
Storage format
Each secret is an encrypted TOML file:
TOML (encrypted)
name = "openai-key"
created_at = "2026-07-15T09:11:00Z"
updated_at = "2026-07-28T14:22:00Z"
[[versions]]
value = "sk-..."
created_at = "2026-07-28T14:22:00Z"
reason = "rotated"
[[versions]]
value = "sk-..."
created_at = "2026-07-15T09:11:00Z"
reason = "initial"