| Version | Supported |
|---|---|
| 1.0.x | Yes |
| < 1.0 | No |
If you discover a security vulnerability in Ansib-eL, please report it responsibly.
Do not open a public GitHub issue for security vulnerabilities.
Instead, email security@ansibel.dev with:
- A description of the vulnerability
- Steps to reproduce
- Potential impact assessment
- Suggested fix (if any)
We will acknowledge receipt within 48 hours and provide a detailed response within 7 days, including next steps and an expected timeline for a fix.
Ansib-eL implements several layers of defense:
All branch names and ref inputs are validated against a strict regex pattern. Path traversal sequences (.., ~) and shell metacharacters are rejected before any Git operation executes. See GitWrapper._validate_git_ref() in src/ansibel/git_wrapper.py.
Metadata and configuration writes use a tempfile-then-rename pattern (tempfile.NamedTemporaryFile + os.replace) to prevent partial writes and data corruption.
Git commands execute via subprocess.run with shell=False and explicit argument lists. Agent contexts provide isolated environment variables through AgentContext.get_subprocess_env(), preventing cross-agent environment leakage.
The orchestrator enforces configurable protection levels on branches:
| Level | Behavior |
|---|---|
NONE |
Direct merge allowed |
REVIEW_REQUIRED |
At least one review before merge |
HUMAN_APPROVAL |
Explicit human approval required (default for main) |
LOCKED |
No merges permitted |
Auto-approval decisions combine agent trust tier with change complexity:
| Trust Tier | Max Auto-Approve Complexity |
|---|---|
| UNTRUSTED | None (always requires review) |
| LOW | Trivial changes only (< 10 lines) |
| MEDIUM | Minor changes (< 50 lines) |
| HIGH | Moderate changes (< 200 lines) |
| VERIFIED | Major changes (< 500 lines) |
- Frozen dataclasses for immutable records (
DecisionRecord,ReasoningRecord,TrustScore) - SHA-256 prompt hashing for tamper-evident agent provenance
- SQLite with WAL mode for concurrent-safe trust and lineage storage
This security policy covers:
- The core Ansib-eL Python package (
src/ansibel/) - The
ai-gitCLI - The
.ai-git/metadata storage format
Out of scope:
- Security of AI models used by agents (model providers are responsible for their own security)
- Third-party dependencies (report upstream)
- Deployment infrastructure