Safeguard
Security Guides•

How do you audit your front-end build toolchain in one hour?

A one hour checklist for bundlers, transpilers, linters, test runners and CI: list the tools, find install time code, limit secrets and set a review rule.

Safeguard Security Team
5 min read

List every tool that runs during your build, then answer four questions for each: where does it come from, what runs when it installs, what can it reach while it runs, and who approves a change. One focused hour is enough to find the biggest gaps in a typical front-end repository.

Why the toolchain deserves its own audit

Your shipped code is produced by a chain of packages: bundler, loaders, transpiler, minifier, CSS tooling, linter, test runner, end to end tester and git hooks. Each executes as Node.js on a developer laptop or a CI runner, usually with network access and often with tokens. Reviews of runtime dependencies rarely cover them. The related posts below go deeper on each piece.

Minutes 0 to 10: build the list

Open package.json in every workspace package and the config files for each tool. Write down every tool, plugin and preset. Include things loaded by name from config, such as Babel plugins, Jest transformers and ESLint plugins, because they do not always appear as direct imports in code. A table helps:

Tool typeWhere it is configuredExample question
Bundlerwebpack, Vite or similar configWhich loaders and plugins load?
TranspilerBabel config or framework defaultWhich plugins and presets apply?
LinterESLint configWhich plugins and shared configs run?
Test runnerJest or similar configWhich transformers and setup files?
Browser test toolCypress or Playwright configWhere do binaries download from?
Git hooksHusky or similarDoes it install in CI?
CIWorkflow filesWhich third party actions run?

Minutes 10 to 25: find install time and run time code

  1. Search the lockfile and node_modules for packages with install scripts or a binding.gyp file. See why npm runs node-gyp when a package has a binding.gyp.
  2. Read your own scripts for prebuild, postbuild, pretest and similar. See npm run build also runs prebuild and postbuild.
  3. Note downloaded binaries that are not in the lockfile, as in Cypress and Playwright binaries.
  4. Check hooks run only where needed, see Husky in CI and Docker.

Minutes 25 to 40: limit what the tools can reach

  1. Look at which secrets the build job holds. Move deploy and publish credentials to a separate job, as in split front-end build and deploy.
  2. Cut the GITHUB_TOKEN to read only for build jobs. See GitHub Actions token permissions.
  3. Check that CI installs with npm ci from a committed lockfile.
  4. Check the final Docker image does not include build tools, per do build tools end up in your production image.

Minutes 40 to 55: check versions and age

  1. Run a dependency scan across the whole tree, including dev tools. Read the findings for the bundler, transpiler and test runner first.
  2. Check for deprecated tools, such as old compilers. See Node Sass is deprecated.
  3. Check dev servers are on patched versions, see can a malicious website steal source code from your dev server.
  4. Decide your pinning rule, see pin build tools to exact versions or ranges.

Minutes 55 to 60: set the rule

Write one paragraph in your contributing guide: new build tools, plugins and presets need a reviewer, a stated reason and a look at their install scripts and dependencies. Add a pull request check that flags changes to the lockfile, and review those diffs with the steps in how to review a lockfile diff after upgrading a build tool.

What to expect

Most teams find a few forgotten plugins, one job with more secrets than it needs, and at least one tool that has not had an update in a long time. Fixing those three removes most of the practical risk. The list also becomes a baseline, so the next audit only needs to look at what changed.

Safeguard's SBOM and dependency scanning cover build tooling in the same inventory as runtime packages, and its policies and gates can enforce your review rule at the pull request. You can run a free scan at gold.safeguard.sh/scan.

Try it yourself

Click through it at your own pace, or open it full screen. Look at how findings are prioritised after a scan.

Quick check

Should dev tools be audited as carefully as runtime packages?

They need a different lens. They may not ship, but they run on machines that hold credentials.

How often should I repeat this audit?

Run the full hour yearly and a short version, new tools and lockfile changes only, whenever the toolchain changes.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.