brooooooklyn/script-jail

Backend-isolated audit of package-manager lifecycle scripts. Runs on lockfile changes; emits a human-readable .script-jail.lock.yml; fails the PR if the audit diverges from the committed lockfile.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
configPath to the script-jail config file.no.script-jail.yml
lockPath to the install-lock file to compare/regenerate.no.script-jail.lock.yml
mode`check` (default) fails on diff; `update` regenerates the lockfile in place.nocheck
spoof-platformSpoofed value for process.platform inside the VM. One of: linux | darwin | win32.nolinux
spoof-archSpoofed value for process.arch inside the VM. One of: x64 | arm64. Defaults to the runner CPU architecture.no
backendAudit executor backend. One of: auto | firecracker | docker | bare. auto tries Firecracker, then Docker, then bare.noauto
cache-firecrackerCache the Firecracker binary + kernel across runs when backend includes Firecracker.notrue
argsExtra install args, applied identically to the sandbox audit and the host install. Quote-grouped; never run through a shell. Pass args VALID FOR YOUR PACKAGE MANAGER (npm: `--omit=dev`; pnpm: `--prod`; yarn-berry install takes none) — a flag your manager rejects fails the audit. Only a fail-closed allowlist of dependency-selection flags (omit/include/prod/dev/optional/-P/-D) plus a credential-free `--registry` is forwarded; anything that could steer the install (lockfile/dir/output/scripts/global/workspace) is dropped with a warning. Registry AUTH goes in `.npmrc`/env, not here — a `--registry` URL with inline `user:pass@` credentials is dropped (the secret would otherwise be staged where the audited package can read it).no""
installDrop-in install: `true` ALSO installs deps on the runner (package-manager install with lifecycle scripts disabled, then runs lifecycle scripts on the host ONLY if the sandbox audit matches the committed lock). Requires `mode: check` and a committed lock. Default `false` (audit only).nofalse
namedescription
lockfileAbsolute path to the generated install lockfile.
diffUnified diff between the generated and committed lockfile; empty on match.