SIP: Five Immediate Software Supply Chain Controls A developer introduced SIP, a set of five immediate software supply chain controls for technical leaders, covering AI agent isolation, dependency freezing, hardened container builds, SBOM generation, and vulnerability scanning. The framework includes a portable Agent Skill and a sample repository implementing the controls in a GitHub Actions workflow. I talk about software supply chain security in different capacities, and I often get the same question: "If we can only do a few things, what should we do first?" This is why I compiled a list of five immediate controls that a technical leader can implement rather quickly, perhaps in a few hours: i. Isolate local AI agents. ii. Freeze unvetted dependencies and disable lifecycle scripts. iii. Use a hardened multi-stage container build. iv. Generate an SBOM and maximum-level provenance for the container image. v. Scan the SBOM attached to the exact image digest and block fixable Critical CVEs. That's it. Five controls. And because I thought people would give it to their AI coding agents, I have also created a portable SIP Agent Skill https://github.com/ContainerSecurity-dev/sip-skill . Tell your agent to use it: Install the SIP skill: https://github.com/ContainerSecurity-dev/sip-skill SIP follows the software supply chain in order: AI agent → dependencies → container build → attestations → vulnerability gate Here are the five controls, with more detail on each one, and how to implement them in a CI/CD workflow: i. Isolate Local AI Agents . sbx run . sbx policy init deny-all and store tokens in sbx secret storage.ii. Freeze Unvetted Dependencies . npm ci --ignore-scripts and add min-release-age=5 to your npm configuration.iii. Harden Container Builds . dhi.io/node:26 , with minimal attack surface and a non-root user by default.iv. Generate SBOM and Provenance Attestations . v. Scan the Attested SBOM for Vulnerabilities . You can find a working implementation of this framework in the SIP sample repository https://github.com/ContainerSecurity-dev/sip , which implements the five controls in a GitHub Actions workflow and with a sample Node.js application. Install the SIP skill in your agentic client, then give the agent this prompt inside the repository you want to secure: $sip SIP it up Implement controls ii through v. The skill is portable across clients that support Agent Skills. The exact installation and invocation mechanism differs between clients, but the security plan does not. If you, like me, prefer to do things yourself, you can follow the instructions here to get an idea of how to implement SIP in your own machine and CI/CD workflow. This is the only control that is not implemented in CI/CD and protects your own machine. As we are using AI coding agents increasingly, they are being targeted by attackers more and more. If you have a coding agent installed, you should treat it like a hacker's agent. Agents can be easily tricked into exfiltrating secrets or executing malicious code. The safest way to run an agent is inside a sandboxed microVM, such as Docker Sandboxes sbx . Let's set up the sandbox with a deny-by-default network policy: bash $ sbx policy init deny-all Then allow only the network destinations the agent actually needs: bash $ sbx policy allow network "api.openai.com,github.com, .npmjs.org" Store credentials using sbx rather than exposing the raw token inside the sandbox: bash $ sbx secret set openai $ sbx secret set github For Codex, OAuth can also remain entirely host-side: bash $ sbx secret set openai --oauth $ sbx run codex . Other coding agents and their clients are similar. Docker Sandboxes runs the agent inside an isolated environment, supports deny-by-default network policies, and stores secrets in the host's credential store. Credentials are automatically injected through the host-side proxy without making their raw values readable to the agent. Many supply chain attacks start with a dependency that is either malicious or compromised. In most cases, a compromised dependency is detected within the first few days after publication. A five-day cooldown period allows time for the community to discover and report malicious packages. Also, many supply chain attacks rely on lifecycle scripts that execute automatically during installation. Disabling lifecycle scripts prevents automatic execution of scripts that could compromise the build or leak secrets. For npm projects, add the following policies directly to the repository in .npmrc : min-release-age=5 ignore-scripts=true min-release-age=5 tells npm not to resolve package versions published within the previous five days. ignore-scripts=true prevents dependency lifecycle scripts from automatically executing during installation.In addition, you should also commit your lockfile package-lock.json to the repository. This ensures that the exact versions of dependencies are installed in CI, rather than allowing npm to resolve new versions: bash $ npm ci --ignore-scripts One subtlety matters: npm ci trusts versions already recorded in the lockfile, so resolution-time cooldown settings do not re-check them. CI must therefore validate the publication age of locked packages before installing them and fail closed when registry metadata cannot be verified. In GitHub Actions: - name: Set up Node uses: actions/setup-node@