Password managers are essential security tools, but developers have additional requirements beyond basic credential storage: CLI access for terminal workflows, SSH key management, TOTP generation, and team sharing. This guide evaluates password managers from a developer perspective.
Developer Requirements
A developer-friendly password manager should offer:
1Password
1Password is the most popular password manager among developers. It offers a robust CLI and excellent developer experience.
**Developer Features:**
# 1Password CLI examples
# Sign in
op account add --address my.1password.com --email user@example.com
# Get a password
op read "op://Personal/GitHub/password"
# Get an API token for automation
op item get "GitHub" --fields "token" --reveal
# Use in scripts securely
API_TOKEN=$(op read "op://Development/API/token")
curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com/data
**SSH Agent Integration:**
# Use 1Password as your SSH agent
export SSH_AUTH_SOCK=~/.1password/agent.sock
# Load SSH keys from 1Password
ssh-add -l
**Pros**: Best developer tooling, polished UX, SSH agent, strong security track record.
**Cons**: Paid subscription ($35/year), no free tier for teams.
Bitwarden
Bitwarden is the leading open-source password manager. It offers a self-hosted option and strong CLI tools.
**Developer Features:**
# Bitwarden CLI examples
# Login
bw login user@example.com
# Get a password
bw get password github.com
# List items
bw list items --search "github"
# Export vault
bw export --format json --output vault-backup.json
**Self-Hosted Deployment:**
# Docker Compose for Vaultwarden
services:
vaultwarden:
image: vaultwarden/server:latest
ports:
- "8443:80"
volumes:
- vw-data:/data
environment:
SIGNUPS_ALLOWED: "false"
volumes:
vw-data:
**Pros**: Open source, self-hosting option, free tier, CLI support.
**Cons**: UI less polished, no built-in SSH agent, CLI can be slow.
pass (Standard Unix Password Manager)
`pass` is the standard Unix password manager, using GPG encryption and a Git repository for storage. It is minimal, scriptable, and follows the Unix philosophy.
# Initialize password store
pass init "your-gpg-key-id"
# Add a password
pass insert github.com/personal
# Generate a random password
pass generate github.com/personal 32
# Get a password (with clipboard)
pass -c github.com/personal
# Git integration
pass git push origin master
**Directory Structure:**
~/.password-store/
github.com/
personal.gpg
work.gpg
aws/
console.gpg
api-key.gpg
servers/
web01.gpg
**Browser Integration:** Via `passff` Firefox extension.
**Pros**: Simple, Unix-native, fully scriptable, Git-backed.
**Cons**: GPG dependency, no GUI, no team sharing, no TOTP built-in.
gopass
gopass is a modern rewrite of pass with additional features. It supports teams, YAML-based secrets, and multiple backends.
# Initialize
gopass setup
# Create a secret with multiple fields
gopass insert --echo webserver/login
# username: admin
# password: secret123
# url: https://internal.example.com
# Mount different storage backends
gopass mounts mount work git@github.com:company/secrets.git
# Sync all mounts
gopass sync
**Pros**: Team sharing built-in, YAML secrets, Git-backed, multi-store.
**Cons**: More complex than pass, GPG still required.
Browser-Based Options
**Dashlane** and **Keeper** focus on consumer and enterprise respectively, with limited developer-specific features. They lack CLI support and SSH integration.
Security Considerations
| Feature | 1Password | Bitwarden | pass | gopass |
|---------|-----------|-----------|------|--------|
| Encryption | AES-256-GCM + SRP | AES-256-CBC | GPG | GPG + XCrypto |
| 2FA | Built-in TOTP | Built-in TOTP | External | External |
| Audit log | Yes | Yes | Git log | Git log |
| Zero-knowledge | Yes | Yes | Yes | Yes |
| Open source | No (proprietary) | Yes | Yes | Yes |
CI/CD Integration
For DevOps workflows, password managers can supply secrets to CI/CD pipelines:
# GitHub Actions with 1Password
jobs:
deploy:
steps:
- uses: 1password/load-secrets-action@v1
with:
export-env: true
env:
DEPLOY_KEY: op://Development/AWS/deploy_key
DB_PASSWORD: op://Production/Database/password
- run: ./deploy.sh
Bitwarden equivalent via API:
# Get session token
BW_SESSION=$(bw login --apikey < api_key.txt)
bw get password "Production/Database" --session $BW_SESSION
Recommendations
Summary
Password managers are a critical part of developer security hygiene. 1Password offers the best overall developer experience with its CLI, SSH agent, and CI/CD integration. Bitwarden provides a strong open-source alternative with self-hosting capability. pass and gopass appeal to Unix purists who want maximum scriptability and Git-native workflows. Choose based on whether you prioritize polish (1Password), openness (Bitwarden), or minimalism (pass).