Detect exposed secrets, API keys, credentials, and tokens in code. Use before commits, on file saves, or when security is mentioned. Prevents accidental secret exposure...
Prevent accidental secret exposure in your codebase.
// You type:
const apiKey = 'sk_live_1234567890abcdef';
// I immediately alert:
šØ CRITICAL: Exposed Stripe API key detected!
š File: config.js, Line 3
š§ Fix: Use environment variables
const apiKey = process.env.STRIPE_API_KEY;
š Add to .gitignore: .env
# You type:
aws_access_key = "AKIAIOSFODNN7EXAMPLE"
# I alert:
šØ CRITICAL: AWS access key exposed!
š File: aws_config.py, Line 1
š§ Fix: Use AWS credentials file or environment variables
aws_access_key = os.getenv("AWS_ACCESS_KEY_ID")
š Never commit AWS credentials
# You type in docker-compose.yml:
environment:
DB_PASSWORD: "mySecretPassword123"
# I alert:
šØ CRITICAL: Database password in configuration file!
š File: docker-compose.yml, Line 5
š§ Fix: Use .env file
DB_PASSWORD: ${DB_PASSWORD}
š Add .env to .gitignore
High Confidence:
Medium Confidence:
Low Confidence (Flagged for Review):
# Before commit, I scan:
git add .
git commit
# I block if secrets found:
šØ CRITICAL: Cannot commit - secrets detected!
š 3 secrets found:
- config.js:12 - API key
- .env:5 - Database password (in gitignore - OK)
- auth.js:45 - JWT secret
ā Commit blocked - remove secrets first
I check if sensitive files are in .gitignore:
ā
.env - In .gitignore (good)
ā ļø config/secrets.json - NOT in .gitignore (add it!)
ā
.aws/credentials - In .gitignore (good)
// I understand these are examples:
// Example: const apiKey = 'your_api_key_here';
// TODO: Add your API key from environment
// Test fixtures are OK (but flagged for review):
const mockApiKey = 'sk_test_1234567890abcdef'; // ā
Test key
<!-- Documentation examples are flagged but low priority -->
Set your API key: `export API_KEY=your_key_here`
secret-scanner (me): Exposed secrets and credentials security-auditor: Code vulnerability patterns
secret-scanner: Finds hardcoded API key
security-auditor: Finds how the key is used insecurely
Combined: Complete security picture
// Before:
const apiKey = 'sk_live_abc123';
// After:
const apiKey = process.env.API_KEY;
// .env file (add to .gitignore):
API_KEY=sk_live_abc123
// AWS Secrets Manager
const AWS = require('aws-sdk');
const secrets = new AWS.SecretsManager();
const secret = await secrets.getSecretValue({ SecretId: 'myApiKey' }).promise();
# docker-compose.yml
services:
app:
environment:
- API_KEY=${API_KEY} # From .env file
# .env (gitignored)
API_KEY=sk_live_abc123
Works without sandboxing: ā Yes (recommended) Works with sandboxing: ā Yes
Add company-specific secret patterns:
cp -r ~/.claude/skills/security/secret-scanner \
~/.claude/skills/security/company-secret-scanner
# Edit SKILL.md to add:
# - Internal API key formats
# - Company-specific secret patterns
# - Custom detection rules
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch config/secrets.json" \
--prune-empty --tag-name-filter cat -- --all