Skip to content

Replace the archived audit action with cargo-deny advisories - #157

Merged
Eliah Kagan (EliahKagan) merged 2 commits into
GitoxideLabs:mainfrom
EliahKagan:codex/run-ci/cargo-deny-advisories
Oct 29, 2026
Merged

Eliah Kagan (EliahKagan) merged 2 commits into
GitoxideLabs:mainfrom
EliahKagan:codex/run-ci/cargo-deny-advisories

Conversation

@EliahKagan

@EliahKagan EliahKagan commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Note

AI disclosure: This PR description was written by GPT-6.1 Sol in Codex, at Eliah Kagan's direction. The LLM also prepared the changes and commit messages and performed the reported validation and reviews.

The advisory audit now uses the existing pinned EmbarkStudios/cargo-deny-action in a separate job, replacing the archived actions-rs/audit-check action. Unsound and unmaintained advisories are checked throughout the dependency graph, including transitive dependencies. Advisory failures fail the Security audit workflow, and it runs on every PR regardless of changed paths.

Both cargo-deny jobs use --workspace --all-features --locked, preserving committed dependency versions and covering the whole workspace. This removes cargo-audit installation, the Cargo wrapper that suppressed lockfile regeneration, and unnecessary checks/issues write permissions. The bans/licenses/sources job is also simplified by removing its single-entry matrix.

Removing the archived action resolves the finding behind zizmor code-scanning alert #149. This follows the replacement anticipated in #48 and #99.

Validation:

  • Actionlint passes for the changed audit workflow, and git diff --check passes for the complete branch diff.
  • Locally, cargo-deny 0.20.2 (the version bundled by the pinned action) passes advisories, bans, licenses, and sources with --workspace --all-features --locked --offline. The temporary configuration matches this PR's deny.toml except for pointing db-path at a copied advisory cache. The BSL-1.0 license-not-encountered warning occurs with both the baseline and updated configurations.
  • A synthetic cargo-metadata fixture changes transitive tokio to 1.53.1 without changing the repository's lockfile. Its advisory check passes with cargo-deny's default unsound = "workspace" and fails with unsound = "all", reporting RUSTSEC-2026-0386. This compares cargo-deny scopes; it is not a test of the former cargo-audit action.
  • Authenticated pedantic zizmor reports archived-uses on the baseline audit workflow and no findings on the updated audit workflow.
  • Manual code and security review of the workflow and configuration diff found no actionable issues.
  • All PR checks passed for commit 19a4824: Security audit, including both cargo_deny_advisories and cargo_deny; CI, including Linux, macOS, and Windows tests; CodeQL; and zizmor. These are successful pull_request runs in the upstream repository, including execution of the pinned Docker action.

The PR remains a draft. The advisory job has now passed on CI for this pull request.

Run advisories in a separate job using the existing pinned cargo-deny
action. Scan the whole workspace with all features and --locked, and
report unsound and unmaintained dependencies throughout the graph.
Advisory failures now fail the Security audit workflow as well as its
job check.

Remove cargo-audit installation, the cargo generate-lockfile wrapper,
and unnecessary checks/issues write permissions. Simplify the existing
bans/licenses/sources job and use the same dependency scope there.
Trigger the workflow on PR changes to deny.toml as well.

Removing actions-rs/audit-check resolves zizmor's archived-uses finding:
https://github.com/GitoxideLabs/cargo-smart-release/security/code-scanning/149

Validated with actionlint, all four cargo-deny checks, a synthetic
transitive tokio unsound-advisory fixture, and authenticated zizmor
before/after scans (archived-uses before; no findings after).

Co-authored-by: Codex <codex@openai.com>
Remove the pull-request path filter, matching gitoxide's CI coverage.
New advisories can affect existing dependencies even when a PR changes
no manifests or lockfiles, so every PR should run the checks.

Co-authored-by: Codex <codex@openai.com>

@EliahKagan EliahKagan left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've carefully read the code changes and commit messages, and the scan works. I'm fixing things up in the PR description (or having Codex do so) and I'll reread everything and merge once other CI passes.

@EliahKagan
Eliah Kagan (EliahKagan) marked this pull request as ready for review October 29, 2026 19:44
@EliahKagan
Eliah Kagan (EliahKagan) merged commit dd85343 into GitoxideLabs:main Oct 29, 2026
16 checks passed
@EliahKagan
Eliah Kagan (EliahKagan) deleted the codex/run-ci/cargo-deny-advisories branch October 29, 2026 19:45
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