Skip to content

ci: stop weekly security-audit failures from unmaintained transitive deps#16

Merged
wdecoster merged 1 commit into
mainfrom
chore/security-audit-cargo-deny
Jun 15, 2026
Merged

ci: stop weekly security-audit failures from unmaintained transitive deps#16
wdecoster merged 1 commit into
mainfrom
chore/security-audit-cargo-deny

Conversation

@wdecoster

Copy link
Copy Markdown
Owner

Problem

The weekly Security Audit has failed continuously because cargo deny check flags new unmaintained advisories on deep transitive build dependencies (proc-macro-error2, paste, fxhash, custom_derive via getset → bio). These have no safe upgrade and pose no real risk for a CLI, so every new advisory meant adding another RUSTSEC-… id to the ignore list.

Change

  • deny.toml: set advisories.unmaintained = "workspace" so unmaintained status is only checked for direct dependencies, not deep transitive build crates. Drops the per-id ignore churn. Vulnerabilities and unsound advisories still fail the check.
  • security.yml: schedule + manual dispatch only (removed push/pull_request, so an unmaintained advisory can no longer block a merge); replaced the overlapping cargo audit step and the slow non-failing cargo-outdated step with a single cargo deny check.

Verification

Local cargo-deny 0.19.7 (matches CI pin): advisories ok, bans ok, licenses ok, sources ok.

🤖 Generated with Claude Code

…deps

The Security Audit workflow failed every week because cargo-deny flagged
new "unmaintained" advisories on deep transitive build dependencies
(proc-macro-error2, paste, fxhash, custom_derive via getset -> bio) that
have no safe upgrade and pose no real risk for a CLI. Each new advisory
required adding another RUSTSEC id to the ignore list.

Fix the class instead of individual ids:
- deny.toml: set advisories.unmaintained = "workspace" so only direct
  dependencies are checked for unmaintained status; drop the per-id ignore
  list. Vulnerabilities and unsound advisories still fail the check.
- security.yml: run on schedule + manual dispatch only (no longer on every
  push/PR, so an unmaintained advisory can't block a merge), and use a
  single `cargo deny check` instead of the overlapping cargo-audit step
  plus the slow, non-failing cargo-outdated step.

Verified locally with cargo-deny 0.19.7: advisories ok, bans ok,
licenses ok, sources ok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@wdecoster wdecoster merged commit f852e5d into main Jun 15, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant