| Version | Supported |
|---|---|
| 2.0.x | ✅ Actively supported |
| 1.x.x | |
| < 1.0 | ❌ No longer supported |
If you discover a security vulnerability in RAMP-Kit, please report it responsibly:
- DO NOT create a public GitHub issue
- Email: synthai@synthai.biz
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
We aim to respond within 48 hours and will work with you to address the issue.
RAMP-Kit is designed with privacy as a core principle:
- No external data transmission — All processing is local
- No telemetry — We don't collect usage data
- No cloud dependency — Works fully offline
- Local storage only — Decisions stored in
~/.ramp/
All user input is validated before processing:
| Input Type | Validations |
|---|---|
| Decision ID | UUID v4 format required |
| Decision text | Length limits, character validation |
| File paths | Path traversal prevention |
| PHASE mode | Enum validation |
| RAMP level | L1-L5 range check |
All output is sanitized before display or export:
- Terminal output — Control characters removed
- Markdown export — Special characters escaped
- JSON export — Schema validated
- RAMP cards — Content sanitized
| Data Type | Handling |
|---|---|
| Decision text | Stored locally only, never transmitted |
| RAMP scores | Local calculation, no external APIs |
| History | Local JSON files in ~/.ramp/decisions/ |
| Config | Local file in ~/.ramp/config.json |
The CLI checks config file permissions:
# Recommended: 600 (owner read/write only)
chmod 600 ~/.ramp/config.jsonIf permissions are too open, a warning is displayed.
~/.ramp/
├── config.json # Settings
├── decisions/ # Decision history
└── cards/ # Custom RAMP cards
When using RAMP in CI/CD pipelines:
- Don't log sensitive decisions — Use
--quietfor security-sensitive checks - Validate exit codes — Use
--strictfor enforcement - Audit trail — JSON output can be stored securely
- No secrets in decisions — Never include credentials in decision text
- name: RAMP Gate Check
run: |
ramp gate "${{ github.event.pull_request.title }}" \
--strict --json > ramp-result.json
env:
# No secrets needed - RAMP is local-onlyWe use:
npm auditfor vulnerability scanning- Dependabot for automated updates
- Minimal runtime dependencies
To audit your installation:
cd /path/to/ramp-kit
npm audit-
Protect your config directory
chmod 700 ~/.ramp chmod 600 ~/.ramp/config.json
-
Don't include secrets in decision text
- Bad: "Deploy API key sk-12345 rotation"
- Good: "Deploy API key rotation"
-
Review exported decisions before sharing
- Validate all CLI input — Use validation module
- Sanitize all output — Use sanitization module
- No external calls — RAMP is local-only by design
- Test security — Run
npm run test:security
The test suite includes security-specific tests:
npm run test:securityTests cover:
- Input validation
- Output sanitization
- File path security
- Config permission checks
- Decision ID validation
- Local-first architecture (no external transmission)
- Input validation for all CLI arguments
- Output sanitization for exports
- Config permission warnings
- CI/CD security guidelines
🔒 Security is a feature, not an afterthought.