PAGES
← all tools
◆ Software Supply Chain Security

LavaMoat

webpack-v3.0.0 open-source

tools for sandboxingsandboxingRunning code inside a restricted environment that limits what it can access or change. The isolation reduces the impact of mistakes or untrusted code, depending on the sandbox's controls. your dependency graph

Summary

LavaMoat is an open-source set of JavaScript tools that defends applications against software supply-chainsoftware supply-chainThe dependencies, tools and processes used to build and deliver software. Compromising one part can affect the products or organizations that rely on it. attacks, and it costs nothing to use. It works as a library and set of CLI commands you wire into install, build, and runtime steps rather than a hosted service: allow-scripts blocks unapproved dependency lifecycle scripts, while runtime protections in lavamoat-node, Browserify, and webpack restrict access to platform APIs and JavaScript primordials. It is aimed at developers and teams maintaining Node.js and browser-based JavaScript projects, particularly ones pulling from NPM, where a malicious dependency could steal secrets or compromise the app. It sits in the appsec space alongside dependency-policy and lockdown tooling rather than any named competitor. Started in 2015 and maintained by MetaMask/Consensys, it remains active, with 278 contributors and a release 57 days ago.

tools for sandboxing your dependency graph

How LavaMoat helps

Which of my dependencies will run install scripts I never reviewed?

disables lifecycle scripts like postinstall by default and only runs the ones listed in a package.json allowlist, failing the install early if that configuration is missing

Has my allowlist drifted from what is actually installed?

compares the allow-scripts configuration against the packages currently installed and warns when they no longer match, so the gap can be caught in CI before it ships

Can a compromised dependency read my secrets or reach the network at runtime?

runs the app inside a sandbox that limits each package's access to platform APIs like the window, document, or XHR according to a generated policy

Could a dependency tamper with core JavaScript behavior that every other module relies on?

prevents modification of JavaScript's primordials (Object, String, Array, and the rest) so one package cannot silently change how built-ins behave for the whole app

Is an allowlisted install script still safe after a dependency update?

pins allowed scripts to specific package versions, so an approved script running under a different version than the one it was approved for is treated as unapproved

Would a bundled build leave any modules unprotected without me noticing?

reports an explicit error when a webpack build finishes with no modules under LavaMoat's protection, surfacing that misconfiguration instead of shipping silently

all 28 features, with the evidence for each →

Languages

Not documented

Features

28 capabilities · 3 backed by code, an API document or a real run

Built from LavaMoat's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What LavaMoat offers you

  • Command-line interface4
  • CI/CD pipeline integration1
All capabilities 28 capabilities
Policy Migration Utilities shipped Provides explicit functions and warnings for migrating policy file writing logic. 16 releases · 1 other source · first seen Sep 2026

release 16 total

  • generatePolicy() no longer accepts write or writableFs options and will not write policy to disk; migrate to writePolicy imported from @lavamoat/node. lavamoat-core-v19.0.0 · Sep 2026 · source · release history
  • generatePolicy() in @lavamoat/node no longer accepts write or writableFs options and no longer writes policy to disk; use the new writePolicy import from @lavamoat/node instead. react-native-lockdown-v3.0.0 · Sep 2026 · source · release history
  • generatePolicy() no longer accepts write or writableFs options; use the new writePolicy export instead to write policies to disk. lavamoat-core-v19.0.0 · Sep 2026 · source · release history
  • generatePolicy() no longer accepts write or writableFs options node-v2.0.0 · Sep 2026 · source · release history
  • generatePolicy() no longer accepts write or writableFs options and no longer writes policy to disk; use writePolicy imported from @lavamoat/node instead. node-v2.0.0 · Sep 2026 · source · release history
  • generatePolicy() in @lavamoat/node now resolves with { policy: LavaMoatPolicy, hasWarnings: boolean } instead of a bare LavaMoatPolicy; callers must destructure policy from the result. react-native-lockdown-v3.0.0 · Sep 2026 · source · release history

example

  • Migrate programmatic policy generation to capture warnings and separate write logic. const { generatePolicy, writePolicy } = require('@lavamoat/node'); async function main() { const { policy, hasWarnings } = await generatePolicy(); if (hasWarnings) console.warn('Policy generation had… react-native-lockdown-v3.0.0 · Sep 2026 · source
Webpack integration enhancements shipped Extends policy generation and runtime support within Webpack bundles, including built-in module attenuation and dynamic context handling. 17 releases · first seen Aug 2024

release 17 total

  • Webpack integration now captures importScripts references for use in runtime despite scuttling webpack-v2.3.0 · Sep 2026 · source · release history
  • Automatically overrides the webpack devtool setting when it is likely to break LavaMoat, preventing silent security misconfigurations. webpack-v2.1.0 · Apr 2026 · source · release history
  • Adds static shims for the webpack runtime, reducing reliance on dynamic runtime injection. webpack-v1.3.0 · Sep 2025 · source · release history
  • Adds null runtime support, enabling LavaMoat to work in webpack configurations that use no runtime chunk. webpack-v1.3.0 · Sep 2025 · source · release history
  • Adds support for globals that require more complex handling beyond a simple unwrap from lavamoat-core, improving compatibility with a wider range of webpack bundles. webpack-v1.2.0 · Aug 2025 · source · release history
  • Adds scuttling support (scuttling option) to lock down global object properties in webpack bundles at runtime. webpack-v1.0.0 · Jun 2025 · source · release history
Lavamoat policy override controls shipped Provides configuration options for controlling the strictness of Lavamoat policy overrides to improve developer experience. 13 releases · 2 other sources · first seen Oct 2023

release 13 total

  • Adds opt-in flag to overwrite policy.json with overrides, enabling automated policy regeneration workflows. webpack-v2.3.0 · Sep 2026 · source · release history
  • Adds --overwrite flag to allow policy.json to be overwritten with overrides webpack-v2.3.0 · Sep 2026 · source · release history
  • Introduces @lavamoat/node, a new LavaMoat package for applying supply-chain security policies in Node.js environments. node-v0.0.1 · Jan 2025 · source · release history
  • Supports configuring lifecycleEvents when calling loadAllPackageConfigurations, giving programmatic control over which npm lifecycle hooks are evaluated. allow-scripts-v3.3.0 · Oct 2024 · source · release history
  • Enables attenuation of Node.js built-in modules via LavaMoat policy in webpack bundles. webpack-v0.5.0-beta.0 · Aug 2024 · source · release history
  • Exports loadAllPackageConfigurations and printMissingPoliciesIfAny for programmatic access to package script policies. allow-scripts-v3.2.0 · Aug 2024 · source · release history

example

  • Access endowmentsToolkit directly from the package root instead of hunting for an internal module path. import { endowmentsToolkit } from 'lavamoat-core' lavamoat-core-v16.1.0 · Oct 2024 · source
  • Resolve canonical package names from filesystem paths when building custom policy tooling. const { loadAllPackageContents } = require('@lavamoat/allow-scripts'); const contents = await loadAllPackageContents({ rootDir: process.cwd() }); console.log(contents.canonicalNamesByPath); // {… allow-scripts-v3.2.0 · Aug 2024 · source
Install script allow-list CI check shipped Detects unapproved or newly-added install scripts and fails with a warning, keeping the allow-scripts configuration up to date in CI pipelines without modifying files. 11 releases · 4 other sources · first seen Oct 2023

Also counts toward: CI/CD pipeline integration, Command-line interface

release 11 total

  • Adds a check command that warns when the allow-scripts configuration is out of date, designed for use in CI pipelines without modifying any files. allow-scripts-v5.1.0 · Jun 2026 · source · release history
  • New check command warns when the allow-scripts configuration is out of date, enabling CI to catch unapproved lifecycle script changes before they reach production. allow-scripts-v5.1.0 · Jun 2026 · source · release history
  • Install scripts are now pinned to specific package versions, preventing allowlisted scripts from running under unintended versions. allow-scripts-v5.0.0 · Apr 2026 · source · release history
  • allow-scripts defaults to pinning versions; upgrading requires a migration action to update existing allowlist configuration. allow-scripts-v5.0.0 · Apr 2026 · source · release history
  • allow-scripts no longer matches a lower version against an allowed entry — version pinning is now exact, so existing allowlist entries that relied on lower-version matching will stop working. allow-scripts-v5.0.0 · Apr 2026 · source · release history
  • Supports global installation of allow-scripts as the recommended usage pattern, enabling consistent lifecycle script enforcement across projects without per-project setup. allow-scripts-v3.4.0 · Sep 2025 · source · release history

docs

  • Suite of cyber tools protecting JavaScript apps from software supply chain attacks via install script controls, runtime sandboxing, and per-package API access p

example

  • Catch unapproved or newly-added install scripts in CI before they can run — fails with a warning instead of silently passing. npx @lavamoat/allow-scripts check allow-scripts-v5.1.0 · Jun 2026 · source
  • Run in CI to fail fast if the allow-scripts config no longer matches installed packages. npx allow-scripts check allow-scripts-v5.1.0 · Jun 2026 · source
  • Audit CI for any packages missing an allow-scripts policy entry without running the CLI directly. const { loadAllPackageConfigurations, printMissingPoliciesIfAny } = require('@lavamoat/allow-scripts'); const config = await loadAllPackageConfigurations({ rootDir: process.cwd() });… allow-scripts-v3.2.0 · Aug 2024 · source
Policy stability and merging utilities shipped Improves the reliability of policy file management by sorting entries for stable diffs and simplifying single-policy merge operations. 10 releases · 4 other sources · first seen Dec 2024

release 10 total

  • generatePolicy() no longer accepts write or writableFs options and will not write policy to disk; migrate to writePolicy imported from @lavamoat/node. lavamoat-core-v19.0.0 · Sep 2026 · source · release history
  • generatePolicy() in @lavamoat/node no longer accepts write or writableFs options and no longer writes policy to disk; use the new writePolicy import from @lavamoat/node instead. react-native-lockdown-v3.0.0 · Sep 2026 · source · release history
  • generatePolicy() no longer accepts write or writableFs options; use the new writePolicy export instead to write policies to disk. lavamoat-core-v19.0.0 · Sep 2026 · source · release history
  • Adds informative errors when a policy merge produces invalid entries, surfacing actionable diagnostics instead of silent failures. lavamoat-tofu-v8.1.0 · Nov 2025 · source · release history
  • Adds descriptive errors when the result of a policy merge contains invalid entries, making misconfigured policy merges easier to diagnose. lavamoat-core-v17.1.0 · Nov 2025 · source · release history
  • New policy debugging capabilities for inspecting and testing generated LavaMoat policies. webpack-v1.0.0 · Jun 2025 · source · release history

example

  • Consume the updated policy object from generatePolicy in your node code. const { policy, hasWarnings } = await generatePolicy(); webpack-v3.0.0 · Sep 2026 · source
  • Generate a policy and check for warnings before writing it to disk — required migration pattern after the generatePolicy() API change. import { generatePolicy, writePolicy } from '@lavamoat/node'; const { policy, hasWarnings } = await generatePolicy({ projectRoot: '.' }); if (hasWarnings) console.warn('Policy generated with… lavamoat-core-v19.0.0 · Sep 2026 · source
  • Generate a LavaMoat policy file during CI without applying sandbox protections — lets you audit or commit the policy separately from the production build. // webpack.config.js const { LavaMoatPlugin } = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ generatePolicyOnly: true, }), ], }; webpack-v1.3.0 · Sep 2025 · source
  • Merge a single policy without a second argument now that the param is explicitly optional. import { mergePolicy } from 'lavamoat-core' const merged = mergePolicy(existingPolicy) lavamoat-core-v16.2.0 · Dec 2024 · source
Modern Node.js runtime support shipped Supports running on Node.js versions v16.20.0 and higher, including native support for Node.js 20. 13 releases · 1 other source · first seen Oct 2023

release 13 total

  • Supports Node.js ^22.5.1 for the webpack plugin. webpack-v0.5.0-beta.0 · Aug 2024 · source · release history
  • Adds support for Node.js ^22.5.1 in the node, browserify, and perf components lavamoat-browserify-v18.0.0 · Aug 2024 · source · release history
  • allow-scripts now supports Node.js v22 aa-v4.3.0 · Jul 2024 · source · release history
  • Adds nodejs 22 runtime support to lavamoat-core lavamoat-core-v15.4.0 · Jul 2024 · source · release history
  • Adds allow-scripts support for Node.js v22 laverna-v1.2.0 · Jul 2024 · source · release history
  • lavamoat-tofu-v7.3.0 extends compatibility to include Node.js 22.x lavamoat-tofu-v7.3.0 · Jul 2024 · source · release history

example

  • Ensure your project uses the LavaMoat pack compatible with modern Node.js runtimes npm install --save-dev lavamoat@lavapack-v6 lavapack-v6.0.0 · Oct 2023 · source
Global state attenuation shipped Provides fine-grained control and attenuation of shared global state across LavaMoat compartments. 9 releases · 2 other sources · first seen Oct 2023

release 9 total

  • Officially releases and documents the scuttling feature in the webpack plugin, enabling runtime lockdown of global object access for bundled code. webpack-v1.4.0 · Sep 2025 · source · release history
  • Improves resilience against network conditions and git failures when verifying safe dependencies. git-safe-dependencies-v0.3.0 · Aug 2025 · source · release history
  • Increases resilience of git-safe against adverse network conditions and git edge cases. node-v0.4.0 · Aug 2025 · source · release history
  • Adds scuttling support, enabling LavaMoat to restrict access to powerful globals on the Node.js runtime environment. node-v0.3.0 · Jun 2025 · source · release history
  • Adds "redefine" as a new global policy value in the LavaMoat policy schema, giving policy authors finer-grained control over how globals are exposed to packages. lavamoat-core-v16.4.0 · May 2025 · source · release history
  • Adds git-safe-actions GitHub Actions validator to audit GH Actions workflows for unsafe dependencies. git-safe-dependencies-v0.2.0 · Jan 2025 · source · release history

example

  • Harden a webpack bundle by enabling scuttling to prevent dependency packages from accessing or mutating privileged globals. // webpack.config.js const LavaMoatPlugin = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ scuttling: true, }), ], }; webpack-v1.0.0 · Jun 2025 · source
  • Grant a package the ability to redefine a global (e.g. fetch) rather than merely reading it, using the new "redefine" policy value. { "resources": { "some-package": { "globals": { "fetch": "redefine" } } } } lavamoat-core-v16.4.0 · May 2025 · source
CLI logging controls verified Controls the verbosity of CLI output, allowing verbose logging or complete silence. 5 releases · 2 other sources · first seen Feb 2024

Also counts toward: Command-line interface

release

  • Adds --quiet and --verbose flags for controlling output verbosity when running LavaMoat Node. node-v0.1.0 · Mar 2025 · source · release history
  • Changes how inlining of SES lockdown is configured in the webpack plugin. webpack-v0.7.0-beta.0 · Oct 2024 · source · release history
  • The way inlining lockdown is configured has changed — existing plugin configuration for lockdown inlining will need to be updated to match the new interface. webpack-v0.7.0-beta.0 · Oct 2024 · source · release history
  • Adds lockdown inlining support to the webpack integration webpack-v0.4.0-beta.0 · Jul 2024 · source · release history
  • Adds experimental policy generation, loading, and override support to the webpack integration. webpack-v0.2.0-beta.0 · Feb 2024 · source · release history

command line

CLI project configuration verified Configures the CLI's working context, including the application root directory and entrypoint resolution. 4 releases · 2 other sources · first seen Jan 2024

Also counts toward: Command-line interface

release

  • Improves UX for specifying entrypoints, making it easier to define application entry in LavaMoat Node. node-v0.1.0 · Mar 2025 · source · release history
  • Allows flags to be passed to the node entrypoint process node-v0.0.2 · Jan 2025 · source · release history
  • lavamoat-core now ships with TypeScript type definitions. lavamoat-core-v15.1.0 · Jan 2024 · source · release history
  • Provides TypeScript type definitions for the tofu module to enable static analysis and IDE support lavamoat-tofu-v7.1.0 · Jan 2024 · source · release history

command line

  • --project-root — Path to application root directory lavamoat-v11.0.0 · Mar 2026 · command-line history
  • --bin — Resolve entrypoint as a bin script [boolean] lavamoat-v11.0.0 · Mar 2026 · command-line history
Script Hardening Configuration shipped Enables granular control and hardening of package lifecycle scripts via configuration profiles. 2 releases · 3 other sources · first seen Mar 2026

release

  • Extends script configs in the harden package, expanding the configuration surface available for controlling how scripts are hardened.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ harden-v0.8.0 · Sep 2026 · source · release history
  • Adds parallel module inspection, speeding up policy generation for large dependency trees. node-v1.0.0 · Mar 2026 · source · release history

docs

  • Harden your project with @lavamoat/harden @lavamoat/harden is a CLI tool that applies opinionated, good defaults and security hardening to your project’s configuration. It writes security-focused settings into files like .npmrc , .yarnrc.yml , pnpm-workspace.yaml , and package.json , while preserving everything else. docs update · Aug 2026 · source
  • Harden the Script Execution Environment This guide covers the Script Execution Environment hardening feature of @lavamoat/harden . @lavamoat/harden can assign Node.js permission profiles to your package.json scripts so commands like build , lint , test , or release do not all run with the same level of access. docs update · Aug 2026 · source
  • Harden your project with @lavamoat/harden @lavamoat/harden is a CLI tool that applies opinionated, good defaults and security hardening to your project’s configuration. It writes security-focused settings into files like .npmrc , .yarnrc.yml , pnpm-workspace.yaml , and package.json , while preserving everything else. docs update · Aug 2026 · source
Lifecycle Script Protection shipped Enhances security for install and lifecycle scripts through exact version pinning and validation. 3 releases · 2 other sources · first seen Apr 2026

release

  • Install scripts are now pinned to specific package versions, preventing allowlisted scripts from running under unintended versions. allow-scripts-v5.0.0 · Apr 2026 · source · release history
  • allow-scripts defaults to pinning versions; upgrading requires a migration action to update existing allowlist configuration. allow-scripts-v5.0.0 · Apr 2026 · source · release history
  • allow-scripts no longer matches a lower version against an allowed entry — version pinning is now exact, so existing allowlist entries that relied on lower-version matching will stop working. allow-scripts-v5.0.0 · Apr 2026 · source · release history

docs

  • Suite of cyber tools protecting JavaScript apps from software supply chain attacks via install script controls, runtime sandboxing, and per-package API access p

example

  • Run in CI to fail fast if the allow-scripts config no longer matches installed packages. npx allow-scripts check allow-scripts-v5.1.0 · Jun 2026 · source
Custom module resolution shipped Allows overriding default module resolution logic to handle custom package paths or fallback names during policy generation. 4 releases · 1 other source · first seen Dec 2024

release

  • Adds opt-in modernized resolve behavior to lavamoat-node classic mode, enabling more accurate dependency resolution for modern package layouts. lavamoat-v11.1.0 · Apr 2026 · source · release history
  • Supports Yarn as a package manager alongside the existing npm support. laverna-v2.1.0 · Apr 2026 · source · release history
  • Exports the MODULE_REFS constant from lavamoat-core, enabling programmatic access to module reference identifiers used in policy generation. lavamoat-core-v18.0.0 · Mar 2026 · source · release history
  • Supports overriding the resolve implementation, enabling custom module resolution logic in browserify builds. lavamoat-browserify-v18.1.0 · Dec 2024 · source · release history

example

  • Import MODULE_REFS to reference canonical module identifier keys when building or inspecting LavaMoat policies programmatically. import { MODULE_REFS } from 'lavamoat-core' // Use MODULE_REFS to look up entries in a generated policy const ref = MODULE_REFS.some_key console.log(policy.resources[ref]) lavamoat-core-v18.0.0 · Mar 2026 · source
Node.js Runtime Requirement Updates shipped Enforces minimum Node.js version requirements for the cyber tooling. 5 releases · first seen Aug 2024

release

  • Node.js v18 is no longer supported; upgrade to Node.js v20 or later before upgrading this package. node-v1.0.0 · Mar 2026 · source · release history
  • Node.js v18 is no longer supported; upgrading will break installations running on Node.js v18. types-v1.0.0 · Mar 2026 · source · release history
  • Node.js v18 is no longer supported; upgrading requires Node.js v20 or later. lavamoat-core-v18.0.0 · Mar 2026 · source · release history
  • The tool no longer runs on Node.js v16; upgrades to v18.0.0 will fail or crash on that version. lavamoat-browserify-v18.0.0 · Aug 2024 · source · release history
  • Removes support for Node.js v16 from all workspace packages (core, node, browserify, perf, tofu, webpack) lavamoat-browserify-v18.0.0 · Aug 2024 · source · release history
Developer Experience Optimizations shipped Improves policy generation performance and preserves debugging artifacts during transformation. 4 releases · first seen Mar 2026

release

  • Switches @lavamoat/node to use @endo/parser-pipeline for module parsing. react-native-lockdown-v3.0.0 · Sep 2026 · source · release history
  • Switches internal parsing to use @endo/parser-pipeline. react-native-lockdown-v3.0.0 · Sep 2026 · source · release history
  • Adds sourcemap-preserving evasive transforms, keeping source maps intact after LavaMoat's security-oriented code transformations. webpack-v2.2.0 · Apr 2026 · source · release history
  • Adds parallel module inspection, speeding up policy generation for large dependency trees. node-v1.0.0 · Mar 2026 · source · release history
Webpack Plugin Scuttling shipped Applies global object locking (scuttling) to webpack builds, including hardening the webpack runtime and suppressing intrinsics to prevent supply-chain attacks abusing globals. 3 releases · 1 other source · first seen Jul 2025

release

  • Captures importScripts reference for use in the webpack runtime even when scuttling is enabled, unblocking Web Worker builds that rely on importScripts. webpack-v2.3.0 · Sep 2026 · source · release history
  • Officially releases and documents scuttling support in the LavaMoat webpack plugin. lavamoat-core-v16.7.0 · Sep 2025 · source · release history
  • Defends the webpack runtime from scuttling, preventing untrusted code from corrupting webpack's own globals at runtime. webpack-v1.1.0 · Jul 2025 · source · release history

example

  • Enable scuttling in your webpack build to lock down global object access at runtime, preventing supply-chain attacks from abusing globals. // webpack.config.js const { LavaMoatPlugin } = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ scuttling: true, }), ], }; webpack-v1.4.0 · Sep 2025 · source
ESM support shipped Supports generating policies and executing code for ECMAScript Module formats. 3 releases · 1 other source · first seen Feb 2024

release

  • Enables deep dependency analysis of ES modules, allowing tofu to traverse transitive ES module imports when generating policies. lavamoat-tofu-v8.1.0 · Nov 2025 · source · release history
  • Adds ESM support in policy generation allowing Lavamoat to create policies for ECMAScript modules lavamoat-core-v15.2.0 · Feb 2024 · source · release history
  • Add ESM support lavamoat-tofu-v7.2.0 · Feb 2024 · source · release history

example

  • Generate a security policy for an ESM-based project that previously failed or produced incomplete coverage. lavamoat generate --esm lavamoat-core-v15.2.0 · Feb 2024 · source
Granular Script Access Control shipped Allows defining specific permissions and wildcards for individual package scripts. 3 releases · first seen Sep 2026

release

  • Extends the scripts configuration block in package.json to allow per-script hardening options such as network and file-system access control. harden-v0.8.0 · Sep 2026 · source · release history
  • Adds wildcard prefix matching for scriptsConfig entries in the harden runner, allowing glob-style script name patterns. harden-v0.7.0 · Sep 2026 · source · release history
  • Enables prefix-based wildcard matching in the runner scriptsConfig configuration harden-v0.7.0 · Sep 2026 · source · release history
Entrypoint Trust Management shipped Manages policy enforcement for application entrypoints, including support for untrusted entrypoints and explicit error surfacing. 3 releases · first seen May 2025

release

  • Exposes the top-level module export as the return value of runLava, enabling callers to programmatically consume the sandboxed module's exported API. lavamoat-v10.1.0 · Jan 2026 · source · release history
  • Emits explicit error messages when a webpack compilation completes with no modules protected, surfacing misconfiguration early. webpack-v1.3.0 · Sep 2025 · source · release history
  • Supports untrusted entrypoints, allowing policy enforcement to apply even when the application entry script itself is not fully trusted. node-v0.2.0 · May 2025 · source · release history
Context Module Support shipped Allows testing and usage of dynamic require patterns with context modules without leaving them fully unguarded or unrestricted. 1 release · 2 other sources · first seen Jan 2025

release

  • Adds experimental __unsafeAllowContextModules flag to test context-module scenarios without leaving them fully unprotected. webpack-v1.0.0 · Jun 2025 · source · release history

example

  • Experiment with dynamic require / context modules under LavaMoat without leaving them fully unguarded. // webpack.config.js const LavaMoatPlugin = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ __unsafeAllowContextModules: true, }), ], }; webpack-v1.0.0 · Jun 2025 · source
  • Opt in to context-module support during development without leaving them fully unrestricted — useful when testing dynamic require() patterns. new LavaMoatPlugin({ __unsafeAllowContextModules: true }) webpack-v0.8.0-beta.0 · Jan 2025 · source
Package Manager Compatibility verified Extends support to include multiple package managers beyond the default npm. 1 release · 1 other source · first seen Apr 2026

Also counts toward: Command-line interface

release

  • Supports Yarn as a package manager alongside the existing npm support. laverna-v2.1.0 · Apr 2026 · source · release history

command line

  • --package-manager — Package manager to check against (npm, yarn, pnpm) lavamoat-v11.1.5 · Sep 2026 · command-line history
Per-Chunk Runtime Configuration shipped Enables embedding and controlling LavaMoat runtime options on a per-chunk basis to accommodate different trust boundaries. 1 release · 1 other source · first seen Sep 2025

release

  • Adds runtimeConfigurationPerChunk_experimental option to embed and control LavaMoat runtime options on a per-chunk basis. webpack-v1.3.0 · Sep 2025 · source · release history

example

  • Embed different LavaMoat runtime options per chunk — useful when entry points have different trust boundaries or performance requirements. // webpack.config.js const { LavaMoatPlugin } = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ runtimeConfigurationPerChunk_experimental: { main: { trustRoot: true… webpack-v1.3.0 · Sep 2025 · source
Selective Chunk Unloading shipped Permits specific chunks or entrypoints to be exempted from LavaMoat protection for incremental adoption or performance reasons. 1 release · 1 other source · first seen Jun 2025

release

  • New unlockedChunksUnsafe option lets teams selectively opt specific chunks out of LavaMoat protection for incremental adoption. webpack-v1.0.0 · Jun 2025 · source · release history

example

  • Opt a legacy or third-party chunk out of LavaMoat protection while the rest of the bundle stays hardened. // webpack.config.js const LavaMoatPlugin = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ unlockedChunksUnsafe: ['legacy-vendor'], }), ], }; webpack-v1.0.0 · Jun 2025 · source
Self-contained LavaMoat execution shipped Enables self-contained execution of LavaMoat by emitting necessary runtime files (e.g., lockdown.js) directly into the build distribution directory. 2 releases · first seen Nov 2023

release

  • Ships with a vendored SES build, making the lockdown self-contained without relying on an external SES package. react-native-lockdown-v0.0.1 · Jun 2025 · source · release history
  • webpack-v0.1.0-beta.0 adds emitting lockdown.js to the build dist directory, enabling self-contained LavaMoat execution without external runtime injection. webpack-v0.1.0-beta.0 · Nov 2023 · source · release history
Firefox Content Script Support shipped Enables LavaMoat to function correctly in Firefox browser extensions by handling cross-realm window prototypes. 1 release · first seen Sep 2025

release

  • Supports Firefox content-script environments by handling cross-realm window prototypes, enabling LavaMoat to run correctly in Firefox browser extensions. lavamoat-core-v16.6.0 · Sep 2025 · source · release history
Webpack Plugin TypeScript Support shipped Provides official TypeScript types for the LavaMoat webpack plugin to enable typed configuration in TypeScript projects. 1 release · first seen Jul 2025

release

  • Exposes proper TypeScript types for the LavaMoat webpack plugin, enabling typed configuration in TS projects. webpack-v1.1.0 · Jul 2025 · source · release history
LavaMoat Error Handling shipped Provides custom error types and descriptive messages for precise programmatic handling of policy and sandbox violations. 1 release · first seen Jun 2025

release

  • Adds custom error types for more precise programmatic handling of LavaMoat policy and sandbox violations. node-v0.3.0 · Jun 2025 · source · release history
Webpack Asset Emission Control shipped Controls the emission of resource assets from packages during builds to prevent unintended exposure. 1 release · first seen Jan 2025

release

  • Resource assets from packages are no longer emitted by default; builds that relied on automatic resource asset emission will need to explicitly enable it. webpack-v0.8.0-beta.0 · Jan 2025 · source · release history
Git-sourced dependency management shipped Provides validation and management capabilities for dependencies sourced directly from git repositories. 1 release · first seen Dec 2024

release

  • Introduces git-safe-dependencies, a new LavaMoat library for managing or validating git-sourced dependencies in Node.js projects. git-safe-dependencies-v0.1.0 · Dec 2024 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for LavaMoat, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail LavaMoat puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

96 entries

  1. September 202616
  2. August 20263
  3. June 20262
  4. April 20265
  5. March 20263
  6. January 20261
  7. November 20252
  8. October 20252
  9. September 20255
  10. August 20253
  11. July 20252
  12. June 20254
  13. May 20253
  14. March 20252
  15. January 20255
  16. December 20243
  17. October 20243
  18. September 20241
  19. August 20244
  20. July 20247
  21. March 20244
  22. February 20245
  23. January 20242
  24. November 20231
  25. October 20238
    Show

    96 entries

    Project health

    Issue, contributor and maintainer activity in lavamoat/lavamoat, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 7 +1 vs prior 12 months
    2. Maintainers 2 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 59% of issues opened, last 12 months
    5. Median time to close 33 days first maintainer reply 6.1 days
    6. Open backlog 159 of 258 issues ever filed
    1. Issues opened / month 1 · 0 communitymaintainers
    2. Open backlog 159
    3. Contributors / month 4
    4. Commits / month 14
    5. Stars 1,221
    Issue themes, last 12 months
    • bugs 5%
    • features 9%
    • other 86%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →