Software supply chain security for small teams

Nearly every small product team reads its own code carefully and its dependencies not at all. Yet the code the team writes is maybe ten percent of what ships: the rest arrived through npm, PyPI, Maven, Docker Hub, GitHub Actions, and a dozen vendor SDKs. Your code is fine. Your dependencies are somebody else's Monday. The industry's worst incidents of the last several years — event-stream, colors/faker, xz, the npm "protestware" waves — were all supply-chain events: the application was innocent, and it went down anyway.

The standard enterprise answer (SBOM tooling, binary transparency, sigstore ecosystems) is real but heavy. The small-team answer is a half-day of setup plus habits that fit in one checklist. This pairs with the API key rotation checklist (the CI and platform secrets that make a dependency compromise worse) and the server hardening checklist (the blast radius on the box itself).

1. Count what you actually ship

You cannot defend a supply chain you have not enumerated. One afternoon, once:

2. Shrink the chain — the highest-yield hour in this checklist

The cheapest security control in software is subtraction. Every dependency you remove is a dependency that can never be compromised:

3. Lockfiles, pinning, and the update treadmill

4. Install-then-audit: the habit that replaces the scanner you can't afford

Commercial SCA tools are great; the free floor is lower than teams think:

5. CI and Actions: the machine that holds your secrets

Every GitHub Action you run executes third-party code with whatever the workflow can reach. Treat the workflow file as production config:

6. Build and deploy path integrity

7. The response plan: when the next big one lands

There will be a next xz, a next event-stream. The teams that come out fine are the ones with the hour already planned:

8. The mistakes small teams make anyway

9. Close the loop: the quarterly supply-chain pass