SOC2 Compliance Checklist — opencode_initializer v3.0
Based on: T1.5 corporate/air-gap audit (2026-08-08), v3.0 vision Target: SOC2 Type II readiness for AI-assisted development harness
CC5.2 — Control Activities
| # | Control | v3.0 Implementation | Status |
| CC5.2.1 | Provider allowlist per project | model-policy.json with allowed_providers per deployment profile | → M5.1.3 |
| CC5.2.2 | Model allowlist per project | model-policy.json with allowed_models per project override | → M5.1.3 |
| CC5.2.3 | Cost limits per session | OPENCODE_MAX_COST_PER_SESSION in model-policy | → M5.3.3 |
| CC5.2.4 | Data residency enforcement | OPENCODE_DATA_REGIONS gate in provider selection | → M5.1.3 |
| CC5.2.5 | Per-agent model assignment | 17-project.sh agent→model mapping (existing, v2.0.3) | ✅ |
CC7.2 — Monitoring of Controls
| # | Control | v3.0 Implementation | Status |
| CC7.2.1 | Audit log all tool calls | 44-audit.sh: WAL event tool_call (bash, read, write, edit, grep) | → M5.2.3 |
| CC7.2.2 | Audit log all model calls | 44-audit.sh: WAL event model_call (provider, model, tokens in/out, latency) | → M5.2.3 |
| CC7.2.3 | Audit log provider switches | 44-audit.sh: WAL event provider_switch (from→to, reason) | → M5.2.3 |
| CC7.2.4 | PII redaction logging | 44-audit.sh: WAL event pii_redacted (count, patterns matched) | → M5.2.4 |
| CC7.2.5 | Session boundary logging | WAL event session_boundary (start/end, task_id, mode) | → M5.2.3 |
| CC7.2.6 | Error/exception logging | WAL event error (tool, exit_code, message_hash) | → M5.3.1 |
| CC7.2.7 | Scheduled security scanning | Systemd timer: daily Trivy + Qodana scan with log | → M5.4.1 |
CC8.2 — System Operations
| # | Control | v3.0 Implementation | Status |
| CC8.2.1 | Immutable WAL (hash chain) | SHA-256 per-entry hash linking (prev_hash → this_hash) | → M5.2.3 |
| CC8.2.2 | WAL rotation policy | >10MB → gzip compress + archive to Qdrant | → M5.2.3 |
| CC8.2.3 | WAL access control | ~/.cache/opencode/wal.jsonl chmod 600, directory 700 | → M5.2.3 |
| CC8.2.4 | Sanitized logs (no secrets) | PII guard strips API keys, tokens, credentials before write | → M5.2.4 |
| CC8.2.5 | SBOM generation | CycloneDX SBOM via trivy sbom on every release | → M5.4.1 |
| CC8.2.6 | Dependency vulnerability scan | Trivy filesystem scan + OSV integration in CI | → M5.4.1 |
Change Management (CC8.1)
| # | Control | v3.0 Implementation | Status |
| CM.1 | Traceable spec→task→commit | SDD workflow: FR-### in spec → task_id in plan → commit message | ✅ (v3.0 SDD) |
| CM.2 | Pre-commit security hook | .pre-commit-config.yaml: Trivy CRITICAL check | → M5.4.1 |
| CM.3 | Supply-chain verification | curl|bash → download + SHA256 verify for all 6 modules | → M5.1.2 |
| CM.4 | Config backup/restore | dev backup create|list|restore (existing, v2.0.3) | ✅ |
Risk Assessment (CC3.2)
| Risk | Likelihood | Impact | Mitigation |
| API key leak via logs | Medium | Critical | PII guard (45-pii-guard.sh) + WAL sanitization |
| Unauthorized provider usage | Medium | High | Model governance (43-governance.sh) + allowlist |
| Supply chain compromise | Low | Critical | SHA256 verification (M5.1.2) |
| Air-gap circuit leak | Medium | High | ISOLATED_CIRCUIT guard on version-check + autoupdate (M5.1.1) |
| WAL tampering | Low | High | SHA-256 hash chain (M5.2.3) |
| Default password exploit | High | Medium | Auto-generated secrets (M5.1.2) |
Compliance Status Summary
| SOC2 Trust Criteria | v2.0.3 | v3.0 Target |
| CC5.2 Control Activities | 2/5 (no governance) | 4/5 |
| CC7.2 Monitoring | 1/7 (basic WAL) | 6/7 |
| CC8.2 System Operations | 1/6 (secrets.env) | 5/6 |
| CC8.1 Change Management | 2/4 (backup, trace) | 4/4 |
| CC3.2 Risk Assessment | 0/6 (no formal) | 5/6 |
| Overall | 1.4/5 | 4.0/5 |