secure-dev-ai
v0.1.0
Published
Security by design CLI for AI-assisted development - scans projects and guards autonomous agent runs
Maintainers
Readme
secure-dev-ai
Security by design CLI for AI-assisted development. Scans projects for secrets, vulnerable dependencies, insecure code patterns, and missing authentication coverage. Generates AI-powered STRIDE threat models. Integrates with aahp-runner as a guard hook to block autonomous agent runs when critical security issues are detected.
Installation
npm install -g secure-dev-aiOr run without installing:
npx secure-dev-ai scan my-projectQuick Start
# Scan a single project
secure-dev-ai scan my-project
# Scan all projects in the workspace
secure-dev-ai scan --all
# See scores at a glance
secure-dev-ai list
# Full report for one project
secure-dev-ai report my-projectCommands
scan [project]
Scan one or all projects for security issues.
secure-dev-ai scan my-project
secure-dev-ai scan --all
secure-dev-ai scan --all --update-security-md # writes SECURITY.md to each project
secure-dev-ai scan my-project --threat-model # include AI threat model (needs API key)
secure-dev-ai scan my-project --json # JSON output for scriptinglist
List all discovered projects with their last known security score and finding counts.
secure-dev-ai listOutput:
🔒 Security Status - 12 projects
A my-clean-project C: 0 H: 0 M: 1 today
F my-api C: 2 H: 5 M: 3 2d ago
? new-project not yet scannedreport [project]
Show the full findings from the last scan of a project.
secure-dev-ai report my-project
secure-dev-ai report my-project --jsonguard
Pre/post hook for aahp-runner agent runs. Exits 1 to block the run if critical findings are detected.
secure-dev-ai guard --project my-project --pre
secure-dev-ai guard --project my-project --post
secure-dev-ai guard --project my-project --pre --block-on HIGHThe guard command:
- Exits 0 (OK) when no blocking issues are found
- Exits 1 (BLOCKED) when findings at or above the threshold exist
- Exits 0 (fail-open) when the project cannot be found, to avoid breaking CI
threat-model [project]
Generate an AI-powered STRIDE threat model for a project. Requires an Anthropic API key.
Writes the output to THREAT-MODEL.md in the project directory.
secure-dev-ai threat-model my-projectconfig
Set persistent configuration stored at ~/.secure-dev-ai.json.
secure-dev-ai config --api-key sk-ant-... # set Anthropic API key
secure-dev-ai config --workspace /path/to/dev # set workspace root
secure-dev-ai config --block-on HIGH # tighten guard threshold
secure-dev-ai config --show # display current config (key masked)Scan Modules
1. Secrets (25+ patterns)
Detects hardcoded credentials and tokens:
- Anthropic, OpenAI, GitHub (PAT, OAuth), AWS (access key + secret), Google API keys
- Stripe live and test keys, Slack tokens, SendGrid, Twilio, GitLab tokens
- NPM auth tokens, SSH/RSA private keys, JWT tokens
- Database URLs with embedded credentials
- Hardcoded passwords, API key assignments, secret assignments
- Bearer and Basic auth headers
Skips .env.example placeholders, comments, and common false-positive patterns.
2. Dependencies (npm audit)
Runs npm audit --json and maps results:
critical-> CRITICALhigh-> HIGHmoderate-> MEDIUMlow-> LOW
Includes fix availability in remediation guidance.
3. Code Patterns (13 rules)
Detects insecure coding patterns:
- SQL injection via string concatenation and template literals with user input
- XSS via
dangerouslySetInnerHTMLandinnerHTMLwith variables eval()andnew Function()usage- Path traversal (unsanitized
path.join/path.resolvewith user input) - Command injection (
exec/execSyncwith user input) - Prototype pollution via
Object.assign - ReDoS via nested quantifiers in dynamic
RegExp - Hardcoded localhost URLs in production code
console.logwith sensitive field names- Security-flagged TODO/FIXME comments
4. Authentication Coverage
Checks HTTP API projects for authentication:
- Detects whether any auth middleware is present at all
- Flags
POST,PUT,PATCH,DELETEroutes that lack auth middleware in their context window - Skips test files and non-server projects
5. Threat Model (AI, STRIDE)
Uses claude-haiku-4-5 to generate a concise STRIDE threat model:
- Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege
- 3-7 most relevant threats for the specific project
- Writes
THREAT-MODEL.mdto the project directory - Skips gracefully if no API key is configured
Security Scoring
Scores are computed from a weighted penalty system:
| Grade | Score | Criteria | |-------|-------|----------------------------------| | A | 90+ | Clean or near-clean | | B | 75+ | Minor issues, no CRITICAL/HIGH | | C | 60+ | Some medium/high issues | | D | 40+ | Multiple high-severity issues | | F | any | Any CRITICAL finding present |
Penalty weights: CRITICAL = 30, HIGH = 10, MEDIUM = 3, LOW = 1
Integrating with aahp-runner
Add guard hooks to your aahp-runner configuration to block agent runs when critical security issues are detected in the target project:
// In aahp-runner, before starting an agent run:
import { execSync } from 'child_process';
function runGuard(projectName: string, phase: 'pre' | 'post'): boolean {
try {
execSync(`secure-dev-ai guard --project ${projectName} --${phase}`, {
stdio: 'inherit',
});
return true; // OK
} catch {
return false; // BLOCKED
}
}
// Pre-run check
if (!runGuard(projectName, 'pre')) {
console.error('Agent run blocked by secure-dev-ai guard.');
process.exit(1);
}Use --block-on HIGH to also block on high-severity findings, not just critical.
Reports and Output Files
- JSON reports:
~/.secure-dev-ai/reports/<project>-<date>.json - SECURITY.md: Written to the project directory with
--update-security-md - THREAT-MODEL.md: Written to the project directory by
threat-modelcommand
Requirements
- Node.js 20 or higher
- npm (for
depsscanner) - Anthropic API key (optional, for
threat-modelonly)
License
MIT
