Archive Offboard for VibeControls
Writes tombstone.json evidence at archive.offboard for SOC2/ISO retention proofs.
vibe plugin install @vibecontrols/vibe-plugin-security-archive
About this plugin
Archive / offboard provider for the archive.offboard lifecycle stage in VibeControls. Registers under provider name tombstone-retention against provider type security.archive, wrapping a pure-JS tombstone writer (tombstone-retention@1.0.0). Wave 2 scaffold — real tool integration pending (except archive which is fully implemented for tombstones).
The host security meta plugin (@vibecontrols/vibe-plugin-security) dispatches archive runs to this provider when the user picks "tombstone-retention" as their default for archive.offboard.
Install
vibe plugin install @vibecontrols/vibe-plugin-security-archive
vibe security providers set-default --stage archive.offboard --provider tombstone-retention
No external binaries — pure JS.
Behavior
At run() the provider:
- Reads the agent's local
security.sqlite(viahost.getDataDir()) and walks thesecurity_scan_runstable for the vibe. Counts past scan runs and reads the most recentconclusion. Falls back to zero counts when the sqlite file is unavailable. - Builds a tombstone summary object containing:
vibeId,workspaceId,repoUrlarchivedAt(ISO timestamp)scanRunCount,lastConclusionretentionDays(frominput.config, default 90)producedBy
- Writes
tombstone.jsontoinput.workdir. - Surfaces the artifact in
evidence[]so the host can upload it to long-term storage before clearing local rows.
Configuration
Per-vibe config (stored in RepositorySecurityConfig.pluginAssignments["archive.offboard"].config):
provider: tombstone-retention
config:
retentionDays: 90 # default; how long downstream archives should keep the tombstone
Evidence type note
The SecurityEvidenceType union in @vibecontrols/vibe-plugin-security does not yet have a "tombstone-json" member. As a placeholder, the tombstone artifact is emitted with type: "opa-decision". When the meta plugin adds "tombstone-json", this provider will switch over (see TODO in src/provider.ts).
Use it in 30 seconds
- Make sure the agent is running:
vibe start - Install the meta first:
vibe plugin install @vibecontrols/vibe-plugin-security - Install this plugin:
vibe plugin install @vibecontrols/vibe-plugin-security-archive - List installed plugins:
vibe plugin list
Other Security plugins
DAST (preview)
OWASP ZAP baseline DAST scan against alpha preview URLs at deploy.preview.
@vibecontrols/vibe-plugin-security-dast-previewDeploy alpha smoke
TLS / HSTS / CSP smoke checks for alpha environment URLs at deploy.alpha.
@vibecontrols/vibe-plugin-security-deploy-alphaDeveloper local
Local pre-commit secrets scanner (gitleaks protect) — runs on the developer machine.
@vibecontrols/vibe-plugin-security-developer-localIncident response
Targeted incident-response scanner for incident.response lifecycle stage.
@vibecontrols/vibe-plugin-security-incidentRepo onboard
Repo profile detector — picks the right policy bundle on repo.onboard.
@vibecontrols/vibe-plugin-security-onboardPackage publish
Cosign signing + SLSA provenance at package.publish.
@vibecontrols/vibe-plugin-security-package-publish