Security & Compliance
How Velocity defends against insider exfiltration, enforces approvals, and produces evidence auditors actually accept.
Threat model in one paragraph
Velocity's primary adversary is the trusted insider — a developer, contractor, or compromised account with legitimate session access. External attackers matter, but every enterprise already spends on perimeter defense; almost none spend on the person already inside. We assume the attacker has valid credentials, a working laptop, and time. Our job is to make code exfiltration require physical screen capture: no clone, no scp, no copy-paste to a personal repo, no screenshare leak. Network egress is constrained, source bytes never touch local disk, and every keystroke is observable. If they want the code, they have to point a phone at the monitor.
Code never on disk
The in-RAM storage container is the load-bearing primitive. Every source byte the client touches lives in an AES-256-GCM encrypted buffer in process memory. The session key is wrapped in a libsodium
SecureBuffer with mlock set so the OS can never page it out to swap. Decryption happens just-in-time for the Code OSS webview and the buffer is zeroized on session end, sign-out, crash, or power loss.- AES-256-GCM with a fresh 96-bit nonce per chunk; tag verified on every read.
- Per-session key derived from the org KEK via HKDF, never written to disk.
- LRU eviction caps RAM use; evicted chunks are re-fetched from encrypted cloud storage.
- No
writes, no swap exposure, no file content in logs or crash dumps./tmp
Approval-chain enforcement
Code only reaches production via Developer → Reviewer → Admin. The chain is enforced at the backend, not the UI — bypassing the client cannot bypass the rule. Developers write inside sessions and submit builds. Reviewers approve or send back with comments. Admins perform the final merge to the protected branch. The Manager role owns billing and org state but cannot edit code or approve builds. There is no "emergency override" switch.
Audit trail
The audit table is append-only and enforced by Postgres triggers — the application role has no
UPDATE or DELETE grant on it. Rows are partitioned by org and month for cheap retention scans. Retention is configurable per org from 30 days to forever, and a legal-hold flag pins a time range as undeletable regardless of policy changes downstream.- Every session join, keystroke window, build, approval, role change, and policy edit.
- Cryptographic hash chain across rows for tamper-evidence at export time.
- SIEM-ready streaming via webhook or syslog drain — Splunk, Datadog, Elastic supported.
Compliance scan packs
Velocity ships pre-built scan packs for SOC 2, HIPAA, PCI-DSS, GDPR, and ISO 27001. Each pack is a YAML manifest wrapping the open-source scanners we trust — Semgrep for static analysis, Trivy for dependency and container CVEs, Gitleaks for secrets, License Finder for license posture — plus Velocity-authored custom rules for things like "no PHI fields touched outside the
phi module" or "no card-data logging in this directory."Packs run on every build submission. Reviewers see a single pass/fail summary with drill-downs and can't approve a failing build unless an Admin explicitly waives a finding — and the waiver is itself audited with a required justification string.
BYOC isolation
Bring-your-own-cloud uses the Velocity Stamp pattern. We create exactly one bucket, one KMS key, and one workspace prefix inside your account, all tagged
velocity:managed=true. We never list, read, or write outside that footprint. Our IAM policy is scoped to those resources by ARN — there is no s3:ListAllMyBuckets, no wildcard, no cross-account assume-role into anything else.Uninstall is a single script that deletes only what carries our tag. The rest of your account is untouched. Operators can audit the exact policy before pasting; the JSON lives in each provider's BYOC setup page.
License + binary integrity
Self-hosted licenses are Ed25519-signed blobs containing org ID, seat count, expiry, and feature flags. The backend verifies the signature on boot and on every hourly heartbeat. A tampered or expired key refuses to start the service and surfaces a clear operator error.
On the desktop client, the bundled Code OSS distribution and every bundled extension is SHA-256-pinned in a signed manifest checked at launch. If a hash doesn't match, the client refuses to open the workspace and reports a tamper event to the audit log. There is no Marketplace fetch path that could swap a verified extension at runtime.
Crash reporting privacy
Sentry is wired into all three projects but configured to redact by construction, not by best effort. The PII scrubber runs before the event leaves the process: file contents, prompt and response text from CLI tabs, file paths normalized to project-relative, real user names replaced with stable opaque IDs, and any string matching common secret patterns dropped entirely.
Question we didn't cover?
Email sales@aethernaut.ai — we keep docs honest and respond inside one business day.