| Version | Supported |
|---|---|
| 0.2.x | ✅ |
| 0.1.x | ❌ |
We take security vulnerabilities in git-adr seriously. If you discover a security issue, please report it responsibly.
- Do NOT create a public GitHub issue for security vulnerabilities
- Email the maintainers directly at: security@example.com (or use GitHub Security Advisories)
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Any suggested fixes (optional)
- Acknowledgment: Within 48 hours
- Initial Assessment: Within 1 week
- Fix Timeline: Depends on severity (critical: days, high: 1-2 weeks, medium/low: next release)
We follow coordinated disclosure:
- We will work with you to understand and address the issue
- We will credit researchers who report valid vulnerabilities (unless you prefer anonymity)
- We request a 90-day disclosure window for fixes
git-adr is designed as a local git tool that:
- Runs with user-level filesystem permissions
- Delegates authentication to git/gh CLI tools
- Stores data in git notes (public metadata, not encrypted)
- Does not run as a network service
| Threat | Mitigation |
|---|---|
| Command injection | All subprocess calls use list arguments (no shell=True) |
| Path traversal | Output paths resolved/canonicalized; user controls CLI args |
| File access | Follows user's filesystem permissions (CLI tool, not service) |
| XSS in exports | All user content HTML-escaped in HTML exports |
| YAML/JSON deserialization | Uses safe parsers (frontmatter.loads, yaml.safe_load) |
- No encryption at rest: ADRs are stored in git notes without encryption
- AI content exposure: Content sent to configured LLM providers
- Wiki sync: Uses git credentials; ensure proper access controls
- Read operations: Import/attach allow reading from any user-accessible path
The following security rules are intentionally suppressed with justification:
| Rule | Justification |
|---|---|
| B404 (subprocess) | This is a git wrapper tool; subprocess is required |
| B603 (subprocess call) | Git commands require subprocess; list args used |
| B607 (partial path) | git should be in PATH; validated at startup |
| S101 (assert) | Tests use assertions |
| S110 (try-except-pass) | Graceful error handling in specific cases |
- Dependencies are version-ranged (
>=) to receive security patches pip-auditis included in dev dependencies for vulnerability scanning- Run
uv run pip-auditto check for known CVEs
When contributing:
- Never use
shell=Truein subprocess calls - Always validate output paths against cwd for write operations
- Escape user content in HTML/template outputs
- Use frontmatter/yaml.safe_load for YAML parsing
- Document any security-relevant exceptions in code comments
We thank the security researchers who have helped improve git-adr:
- (Your name could be here)