Severity
Low
Description
The .github/workflows/release-notes.yml workflow installs @anthropic-ai/sdk using npm install without a pre-committed lockfile. npm install resolves the latest satisfying version at run time, meaning different CI runs can silently pull in different (potentially malicious or buggy) transitive dependency versions.
This workflow runs with access to ANTHROPIC_API_KEY and GITHUB_TOKEN, making it a worthwhile supply-chain target.
Risk
- Non-reproducible builds — transitive dependency versions can differ between runs
- A compromised package version could be silently introduced without lockfile pinning
- No integrity check is performed against a known-good dependency tree
Remediation
- Create a small dedicated directory (e.g.,
.github/scripts/release-notes/) containing:
package.json declaring @anthropic-ai/sdk as a dependency
- A committed
package-lock.json generated by npm install locally
- Update the workflow to use
npm ci from that directory:
- name: Install dependencies
working-directory: .github/scripts/release-notes
run: npm ci
- Keep the lockfile up to date via Dependabot or Renovate.
Severity
Low
Description
The
.github/workflows/release-notes.ymlworkflow installs@anthropic-ai/sdkusingnpm installwithout a pre-committed lockfile.npm installresolves the latest satisfying version at run time, meaning different CI runs can silently pull in different (potentially malicious or buggy) transitive dependency versions.This workflow runs with access to
ANTHROPIC_API_KEYandGITHUB_TOKEN, making it a worthwhile supply-chain target.Risk
Remediation
.github/scripts/release-notes/) containing:package.jsondeclaring@anthropic-ai/sdkas a dependencypackage-lock.jsongenerated bynpm installlocallynpm cifrom that directory: