home / skills / bizshuk / llm_plugin / security-scanner
This skill helps you identify and remediate hardcoded credentials and tokens by scanning your workspace for exposed secrets and sensitive data.
npx playbooks add skill bizshuk/llm_plugin --skill security-scannerReview the files below or copy the command above to add this skill to your agents.
---
name: Security Scanner
description: Scan workspace for potential security risks including exposed passwords, API keys, tokens, and other sensitive data
---
# Security Scanner
This skill helps you identify potential security vulnerabilities in your workspace by scanning for hardcoded credentials, API keys, tokens, and other sensitive information that should not be committed to version control.
## What It Scans For
The security scanner looks for common patterns of sensitive data:
### Credentials & Authentication
- Passwords (hardcoded, plaintext)
- Usernames in authentication contexts
- Private keys (RSA, SSH, PGP)
- Authentication tokens
- Session IDs
- PIN codes
### API Keys & Tokens
- AWS Access Keys (AKIA...)
- GitHub Personal Access Tokens (ghp*, gho*, ghu\_)
- Slack Tokens (xox[baprs]-)
- Google API Keys
- Stripe API Keys (sk*live*, pk*live*)
- JWT tokens
- OAuth tokens
- Bearer tokens
### Database & Service Credentials
- Database connection strings
- MongoDB URIs
- PostgreSQL connection strings
- MySQL credentials
- Redis URLs with passwords
### Cloud Provider Secrets
- AWS Secret Access Keys
- Azure Storage Keys
- Google Cloud Service Account Keys
- Heroku API Keys
- DigitalOcean Access Tokens
### Generic Patterns
- Base64 encoded secrets (suspicious patterns)
- Hexadecimal keys (32+ chars)
- Environment variable assignments with sensitive keys
- Configuration files with credentials
## How to Use
### Basic Scan
Scan the entire workspace for all security risks:
```bash
# The assistant will:
# 1. Search for common secret patterns
# 2. Check for hardcoded credentials
# 3. Identify suspicious files (e.g., .env not in .gitignore)
# 4. Report findings with file locations and line numbers
```
Simply ask: **"Run a security scan"** or **"Check for exposed secrets"**
### Targeted Scans
You can also request specific scans:
- **"Scan for API keys"** - Focus on API key patterns
- **"Check for passwords"** - Look for password patterns
- **"Find AWS credentials"** - Search for AWS-specific secrets
- **"Scan database connection strings"** - Find DB credentials
### Custom Pattern Scan
Request a scan for specific patterns:
- **"Search for tokens matching pattern X"**
- **"Find all base64 encoded strings longer than 40 characters"**
## Scan Process
When you invoke this skill, the assistant will:
1. **Identify Scan Scope**
- Determine workspace boundaries
- Exclude common directories (node_modules, .git, vendor, dist, build)
- Respect .gitignore patterns
2. **Pattern Matching**
- Use regex patterns to find sensitive data
- Check file contents using grep/ripgrep
- Flag suspicious variable names and comments
3. **Contextual Analysis**
- Examine surrounding code for context
- Identify if secrets are in test files (lower risk)
- Check if files are tracked in git
4. **Report Generation**
- List all findings with severity levels
- Provide file paths and line numbers
- Suggest remediation steps
## Example Patterns Detected
### High Severity
```python
# ❌ Hardcoded AWS credentials
AWS_ACCESS_KEY_ID = "example"
AWS_SECRET_ACCESS_KEY = "example"
# ❌ Database password in connection string
DATABASE_URL = "postgresql://user:MyP@ssw0rd@localhost:5432/db"
# ❌ Private API key
STRIPE_SECRET_KEY = "example"
```
### Medium Severity
```javascript
// ⚠️ Suspicious base64 string
const token = "example";
// ⚠️ Hardcoded password variable
let password = "example";
```
### Lower Risk (But Still Flagged)
```bash
# ℹ️ In test files or examples
export TEST_API_KEY="test_abc123"
# ℹ️ Placeholder patterns
password = "YOUR_PASSWORD_HERE"
```
## Remediation Recommendations
For each finding, the assistant will suggest:
1. **Move to Environment Variables**
```bash
# Instead of hardcoding:
API_KEY = "abc123"
# Use:
API_KEY = os.getenv("API_KEY")
```
2. **Use Secret Management**
- HashiCorp Vault
- AWS Secrets Manager
- Azure Key Vault
- Google Secret Manager
3. **Update .gitignore**
- Ensure .env files are ignored
- Add patterns for credential files
4. **Rotate Compromised Secrets**
- If secrets are in git history, rotate them immediately
- Use tools like `git-secrets` or `truffleHog` for history scanning
5. **Use Git Hooks**
- Install pre-commit hooks to prevent secret commits
- Tools: `pre-commit`, `detect-secrets`, `git-secrets`
## Files and Directories
This skill uses a scanning script located at:
- `scripts/scan_secrets.sh` - Main scanning logic
## Exclusions
The scanner automatically excludes:
- `node_modules/`, `vendor/`, `.git/`
- `dist/`, `build/`, `target/`
- Binary files and large data files
- Test fixtures with placeholder credentials
- Documentation with example credentials (marked as such)
## Best Practices
1. **Regular Scans**: Run security scans regularly, especially before commits
2. **CI/CD Integration**: Add secret scanning to your CI/CD pipeline
3. **Developer Education**: Ensure team knows not to commit secrets
4. **Secret Rotation**: Regularly rotate credentials and API keys
5. **Least Privilege**: Use minimal permissions for API keys and tokens
## Limitations
- **False Positives**: May flag test data or examples - use judgment
- **Encoded Secrets**: May not catch all obfuscated or encrypted secrets
- **Custom Patterns**: Very custom secret formats may not be detected
- **Performance**: Large codebases may take time to scan
## Security Note
⚠️ **This skill scans local files only and does not transmit secrets anywhere.** However, findings are shown in the assistant's output, so be cautious when sharing scan results.
## Getting Started
To run your first security scan, simply say:
> **"Scan my workspace for security risks"**
The assistant will scan your workspace and provide a detailed report of any potential security issues found.
This skill scans your workspace for exposed secrets and other security risks such as hardcoded passwords, API keys, tokens, and private keys. It reports findings with file paths, line numbers, and suggested remediation steps so you can quickly secure or rotate compromised credentials. The scanner runs locally and respects .gitignore and common exclusions to reduce noise.
The scanner searches project files using regex patterns for common secret formats (AWS keys, GitHub tokens, JWTs, connection strings, private keys, base64-like blobs) and inspects surrounding context to assess severity. It excludes large binaries and typical vendor directories, checks whether files are tracked by git, and classifies findings as high, medium, or low risk. The output includes a concise report with remediation recommendations like moving secrets to environment variables, using secret managers, and rotating compromised keys.
Does the scanner send my secrets anywhere?
No. The scanner runs locally and does not transmit files or secrets; however, be careful when sharing the scan report since it contains sensitive locations and snippets.
How do I reduce false positives?
Tune custom regex patterns, exclude known test fixtures or example files, and mark placeholders in docs. Use contextual analysis: findings in test files are lower risk than in production code.