Quarantine
Vein can delay new package versions from appearing in dependency resolution, giving the community time to catch malicious releases before they reach your CI/CD.
Scope today: quarantine applies to RubyGems metadata/index responses. The roadmap extends the same protection to crates.io and npm.
How it works
Section titled “How it works”- New gem versions are quarantined for a configurable period (default: 3 days).
bundle updateandbundle outdatedwon’t see quarantined versions.- Direct installs (
gem install foo -v 1.2.3) still work - that’s an explicit choice by the operator, not an accident. - Versions auto-promote once their quarantine period expires.
Why this matters
Section titled “Why this matters”rest-client 1.6.13 (August 2019): a malicious version was published and yanked roughly 12 hours later. Any CI/CD pipeline running bundle update during that window installed the compromised gem. A 3-day quarantine window would have given zero exposure.
Configuration
Section titled “Configuration”[delay_policy]enabled = truedefault_delay_days = 3skip_weekends = true # Don't release on Sat/Sunbusiness_hours_only = true # Only release during business hoursrelease_hour_utc = 10 # Release at 10:00 UTC
# Per-gem overrides (glob patterns supported)[[delay_policy.gems]]name = "rails*"pattern = truedelay_days = 7 # Extra scrutiny for Rails ecosystem
[[delay_policy.gems]]name = "internal-*"pattern = truedelay_days = 0 # Trust internal gems
# Pin specific versions for immediate availability[[delay_policy.pinned]]name = "rails"version = "8.0.1"reason = "Security patch - verified safe"CLI commands
Section titled “CLI commands”# Show quarantine statusvein quarantine status
# List versions currently in quarantinevein quarantine list
# Manually promote all expired quarantines nowvein quarantine promote
# Approve a version for immediate releasevein quarantine approve rails 8.0.1 --reason "Security patch"
# Block a malicious version (marks it as yanked)vein quarantine block badgem 1.0.0 --reason "Malware detected"Both approve and block accept an optional --platform flag for platform-specific gem builds.
Admin UI
Section titled “Admin UI”Browse to /quarantine on the admin dashboard to view quarantine stats and approve or block versions without the CLI.