loading…
Search for a command to run...
loading…
A secure secrets management server that enables LLMs to execute CLI commands using injected credentials while protecting sensitive data through output redaction
A secure secrets management server that enables LLMs to execute CLI commands using injected credentials while protecting sensitive data through output redaction and user-approved session permissions. It features an encrypted vault, secret capture from command outputs, and a macOS menu bar app for native notifications and dialogs.
A secure secrets management plugin for Claude Code and MCP clients. Enables AI assistants to safely handle credentials with user approval, automatic redaction, and secret capture from command output.
{{SECRET_NAME}} placeholders in commands to inject secretscurl -sSL https://raw.githubusercontent.com/henghonglee/claude-secrets/main/install.sh | bash
This automatically:
pipx install git+https://github.com/henghonglee/claude-secrets.git
ccs init
git clone https://github.com/henghonglee/claude-secrets.git
cd claude-secrets
pip install -e .
ccs init
# Initialize vault + start menubar + enable auto-start on login
ccs init
# Add a secret with description (helps LLMs understand what it's for)
ccs add AWS_ACCESS_KEY
# Check status
ccs status
The init command automatically:
claude plugin marketplace add henghonglee/claude-secrets
claude plugin install claude-secrets@henghonglee-claude-secrets
When installed as a plugin:
| Command | Description |
|---|---|
/claude-secrets:list |
List all available secrets |
/claude-secrets:add [NAME] |
Add a new secret |
/claude-secrets:run <command> |
Run a command with secret injection |
For Claude Desktop or other MCP clients, add to your configuration:
{
"mcpServers": {
"secrets": {
"command": "ccs",
"args": ["serve"]
}
}
}
run_commandExecute a CLI command with secret injection and output redaction.
{
"command": "aws s3 ls --profile {{AWS_PROFILE}}",
"timeout": 60,
"capture": [
{
"path": "$.Credentials.SecretAccessKey",
"name": "AWS_SESSION_SECRET",
"description": "Temporary AWS secret key from STS. Use with AWS_SESSION_KEY_ID and AWS_SESSION_TOKEN.",
"expires_at": "2024-01-24T12:00:00Z"
}
]
}
Parameters:
command - Command with {{SECRET_NAME}} placeholderstimeout - Timeout in seconds (default: 60)capture - Extract secrets from JSON output:path - JSONPath expression (e.g., $.Credentials.SecretAccessKey)name - Name for the captured secretdescription - LLM-friendly descriptionexpires_at - ISO 8601 expiration timestampredact_patterns - Additional regex patterns to redactskip_builtin_patterns - Skip built-in redaction patternslist_secretsList available secrets with their descriptions.
{
"tag": "aws"
}
Returns:
{
"secrets": [
{
"name": "AWS_ACCESS_KEY",
"description": "AWS access key for production account",
"expires_at": null
}
]
}
request_secretRequest the user to add a missing secret via the menu bar app.
{
"name": "GITHUB_TOKEN",
"description": "Personal access token for GitHub API. Needs repo and workflow scopes."
}
The menu bar app will show a native macOS dialog prompting the user to enter the secret value.
get_permissionsGet current session permission status for secrets.
list_secrets to discover available secrets{{SECRET_NAME}} placeholdersThe menu bar app provides:
Start with:
claude-secrets-menubar
~/.claude-secrets/audit.logcurl -sSL https://raw.githubusercontent.com/henghonglee/claude-secrets/main/uninstall.sh | bash
ccs uninstall # Stops menubar, removes plugin, keeps secrets
pipx uninstall claude-secrets
ccs uninstall --delete-vault
pipx uninstall claude-secrets
Your secrets are preserved by default in ~/.claude-secrets/ so you can reinstall later without losing them.
claude-secrets/
├── .claude-plugin/
│ ├── plugin.json # Plugin manifest
│ └── marketplace.json # Marketplace manifest (for plugin distribution)
├── .mcp.json # MCP server configuration
├── skills/
│ └── secrets/
│ └── SKILL.md # Teaches Claude when/how to use secrets
├── commands/
│ ├── list.md # /claude-secrets:list command
│ ├── add.md # /claude-secrets:add command
│ └── run.md # /claude-secrets:run command
└── src/
└── claude_secrets/ # Python package
Configuration stored at ~/.claude-secrets/config.json:
{
"session_timeout": 3600
}
Set values with:
ccs config set session_timeout 7200
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=claude_secrets
# Test plugin locally
claude --plugin-dir ./
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"mcp-secrets": {
"command": "npx",
"args": []
}
}
}