Skip to content

build(deps): consolidate dependency updates - #3420

Merged
tac0turtle merged 1 commit into
mainfrom
marko/deps_new
Aug 3, 2026
Merged

build(deps): consolidate dependency updates#3420
tac0turtle merged 1 commit into
mainfrom
marko/deps_new

Conversation

@tac0turtle

@tac0turtle tac0turtle commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Consolidates Dependabot dependency updates from #3411, #3412, and #3414 through #3417.

Includes the libp2p DHT API compatibility update and temporary local replacements for the app modules until a compatible ev-node release is available.

Validation: just tidy-all, just build-all, just test, go vet, golangci-lint, and yamllint.

Summary by CodeRabbit

  • Chores

    • Updated checkout tooling across benchmark, build, test, lint, documentation, and release automation.
    • Refreshed Go dependencies across core modules, applications, execution components, and end-to-end tests, including networking, observability, cloud, and blockchain libraries.
    • Removed obsolete indirect dependencies and added required module references.
  • Bug Fixes

    • Improved peer-to-peer discovery setup compatibility while preserving bootstrap behavior.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The pull request updates actions/checkout to v7.0.1 across GitHub workflows, refreshes dependencies in the root and nested Go modules, and removes the context argument from dht.New while retaining context use for DHT bootstrapping.

Changes

Dependency and workflow refresh

Layer / File(s) Summary
Workflow checkout action updates
.github/workflows/*
All changed workflows now use actions/checkout v7.0.1.
Root and application dependency refresh
go.mod, apps/*/go.mod, execution/evm*/go.mod
Direct and indirect Go dependencies are updated across AWS, Celestia, Ethereum, IPFS, libp2p, Prometheus, OpenTelemetry, Pion, Google APIs, and Go tooling modules.
Integration test dependency refresh
test/*/go.mod
Docker E2E and E2E module dependencies are updated across the same dependency families. Local replacements remain unchanged.
DHT API compatibility update
pkg/p2p/client.go
setupDHT calls dht.New without a context. The bootstrap call continues to receive the context.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: chatton

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: consolidating dependency updates.
Description check ✅ Passed The description explains the update scope, compatibility change, local replacements, and validation performed.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch marko/deps_new

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

The latest Buf updates on your PR. Results from workflow CI / buf-check (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed⏩ skipped✅ passed⏩ skippedAug 3, 2026, 12:29 PM

@codecov

codecov Bot commented Aug 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 62.38%. Comparing base (036b8d4) to head (87e868a).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3420      +/-   ##
==========================================
- Coverage   62.42%   62.38%   -0.05%     
==========================================
  Files         121      121              
  Lines       13467    13467              
==========================================
- Hits         8407     8401       -6     
- Misses       4121     4125       +4     
- Partials      939      941       +2     
Flag Coverage Δ
combined 62.38% <100.00%> (-0.05%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tac0turtle
tac0turtle marked this pull request as ready for review August 3, 2026 12:36

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (3)
.github/workflows/update-onboarding-skill.yml (1)

17-18: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Use an immutable checkout revision.

actions/checkout@v7.0.1 is a mutable tag. Use the immutable v7.0.1 commit SHA already used in .github/workflows/benchmark.yml.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/update-onboarding-skill.yml around lines 17 - 18, Update
the checkout step’s actions/checkout reference to the immutable v7.0.1 commit
SHA already used in the benchmark workflow, replacing the mutable v7.0.1 tag
while preserving the existing checkout configuration.
.github/workflows/benchmark.yml (1)

26-26: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Remove persisted checkout credentials from jobs that do not need remote Git access.

actions/checkout stores GITHUB_TOKEN in .git/config by default. These jobs build, test, lint, publish packages, or upload artifacts. Add persist-credentials: false unless a later step requires authenticated Git access. Verify local actions and the benchmark action before applying the setting.

  • .github/workflows/benchmark.yml#L26-L26: disable persistence for the EVM benchmark checkout.
  • .github/workflows/benchmark.yml#L58-L58: disable persistence for the Spamoor benchmark checkout.
  • .github/workflows/benchmark.yml#L86-L86: disable persistence for the ERC20 benchmark checkout.
  • .github/workflows/benchmark.yml#L108-L108: disable persistence for the DeFi benchmark checkout.
  • .github/workflows/benchmark.yml#L131-L131: disable persistence for the state-pressure benchmark checkout.
  • .github/workflows/benchmark.yml#L158-L158: disable persistence for the publishing checkout; keep the benchmark action's explicit github-token.
  • .github/workflows/ci.yml#L21-L21: disable persistence after verifying dorny/paths-filter authentication requirements.
  • .github/workflows/docker-build-push.yml#L31-L31: disable persistence before sending the repository to Docker.
  • .github/workflows/rust-lint.yml#L22-L22: disable persistence for the Rustfmt checkout.
  • .github/workflows/rust-lint.yml#L39-L39: disable persistence for the Clippy checkout.
  • .github/workflows/rust-lint.yml#L73-L73: disable persistence for the audit checkout.
  • .github/workflows/rust-lint.yml#L85-L85: disable persistence for the documentation checkout.
  • .github/workflows/rust-publish.yml#L21-L21: disable persistence after verifying rust-setup does not need Git authentication.
  • .github/workflows/rust-test.yml#L36-L36: disable persistence for the Rust test checkout.
  • .github/workflows/rust-test.yml#L65-L65: disable persistence for the coverage checkout.
  • .github/workflows/test.yml#L15-L15: disable persistence for the build checkout.
  • .github/workflows/test.yml#L30-L30: disable persistence for the module tidy checkout.
  • .github/workflows/test.yml#L47-L47: disable persistence for the unit-test checkout.
  • .github/workflows/test.yml#L67-L67: disable persistence for the integration-test checkout.
  • .github/workflows/test.yml#L91-L91: disable persistence for the E2E checkout.
  • .github/workflows/test.yml#L118-L118: disable persistence for the EVM-test checkout.
  • .github/workflows/test.yml#L136-L136: disable persistence for the coverage-combination checkout.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/benchmark.yml at line 26, Disable checkout credential
persistence by adding persist-credentials: false to the listed checkout steps in
.github/workflows/benchmark.yml lines 26, 58, 86, 108, 131, and 158;
.github/workflows/ci.yml line 21; .github/workflows/docker-build-push.yml line
31; .github/workflows/rust-lint.yml lines 22, 39, 73, and 85;
.github/workflows/rust-publish.yml line 21; .github/workflows/rust-test.yml
lines 36 and 65; and .github/workflows/test.yml lines 15, 30, 47, 67, 91, 118,
and 136. Verify dorny/paths-filter, rust-setup, local actions, and the benchmark
action do not require persisted Git credentials, while preserving the benchmark
action’s explicit github-token.

Source: Linters/SAST tools

.github/workflows/ci.yml (1)

21-21: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Pin every changed checkout to an immutable commit.

These workflows use the mutable actions/checkout@v7.0.1 tag. Replace each reference with the immutable v7.0.1 commit SHA already used in .github/workflows/benchmark.yml. This prevents a tag move from changing workflow code without a review.

  • .github/workflows/ci.yml#L21-L21: replace the mutable tag with the v7.0.1 commit SHA.
  • .github/workflows/dependabot-auto-fix.yml#L17-L19: replace the mutable tag and preserve explicit authentication for the later git push.
  • .github/workflows/docker-build-push.yml#L31-L31: replace the mutable tag with the v7.0.1 commit SHA.
  • .github/workflows/rust-lint.yml#L22-L22: replace the Rustfmt checkout tag.
  • .github/workflows/rust-lint.yml#L39-L39: replace the Clippy checkout tag.
  • .github/workflows/rust-lint.yml#L73-L73: replace the audit checkout tag.
  • .github/workflows/rust-lint.yml#L85-L85: replace the documentation checkout tag.
  • .github/workflows/rust-publish.yml#L21-L21: replace the publishing checkout tag.
  • .github/workflows/rust-test.yml#L36-L36: replace the Rust test checkout tag.
  • .github/workflows/rust-test.yml#L65-L65: replace the coverage checkout tag.
  • .github/workflows/test.yml#L15-L15: replace the build checkout tag.
  • .github/workflows/test.yml#L30-L30: replace the module tidy checkout tag.
  • .github/workflows/test.yml#L47-L47: replace the unit-test checkout tag.
  • .github/workflows/test.yml#L67-L67: replace the integration-test checkout tag.
  • .github/workflows/test.yml#L91-L91: replace the E2E checkout tag.
  • .github/workflows/test.yml#L118-L118: replace the EVM-test checkout tag.
  • .github/workflows/test.yml#L136-L136: replace the coverage-combination checkout tag.
  • .github/workflows/update-onboarding-skill.yml#L18-L20: replace the onboarding checkout tag.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 21, Replace every mutable
actions/checkout@v7.0.1 reference with the immutable v7.0.1 commit SHA already
used in .github/workflows/benchmark.yml. Apply this to
.github/workflows/ci.yml:21-21; .github/workflows/dependabot-auto-fix.yml:17-19,
preserving explicit authentication for the later git push;
.github/workflows/docker-build-push.yml:31-31;
.github/workflows/rust-lint.yml:22-22, 39-39, 73-73, and 85-85;
.github/workflows/rust-publish.yml:21-21; .github/workflows/rust-test.yml:36-36
and 65-65; .github/workflows/test.yml:15-15, 30-30, 47-47, 67-67, 91-91,
118-118, and 136-136; and .github/workflows/update-onboarding-skill.yml:18-20.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/docker-tests.yml:
- Line 25: Pin every actions/checkout reference to the immutable commit
3d3c42e5aac5ba805825da76410c181273ba90b1 instead of the mutable v7.0.1 tag at
.github/workflows/docker-tests.yml lines 25-25, 45-45, and 65-65;
.github/workflows/docs_build.yml line 19-19; .github/workflows/docs_deploy.yml
line 31-31; .github/workflows/docs_preview.yml line 24-24;
.github/workflows/lint.yml lines 15-15, 40-40, 49-49, 63-63, and 78-78;
.github/workflows/proto.yml line 14-14; .github/workflows/release-apps.yml lines
27-27 and 78-78; and .github/workflows/release-github.yml line 35-35.
- Line 25: Disable checkout credential persistence by adding
persist-credentials: false to each actions/checkout step at
.github/workflows/docker-tests.yml:25-25, 45-45, and 65-65;
.github/workflows/docs_build.yml:19-19; .github/workflows/docs_deploy.yml:31-33
within its existing with block; .github/workflows/lint.yml:15-15, 40-40, 49-51,
63-65, and 78-80; .github/workflows/proto.yml:14-14;
.github/workflows/release-apps.yml:27-27 and 78-78; and
.github/workflows/release-github.yml:35-37. Preserve any existing checkout
options and do not change steps that require authenticated git commands.

In @.github/workflows/update-onboarding-skill.yml:
- Around line 17-20: Update the checkout action configuration in the repository
onboarding workflow to set persist-credentials to false. Preserve the existing
full-history checkout, and ensure authentication is provided explicitly and only
for the later git push or gh commands rather than persisted for the Claude step.

---

Nitpick comments:
In @.github/workflows/benchmark.yml:
- Line 26: Disable checkout credential persistence by adding
persist-credentials: false to the listed checkout steps in
.github/workflows/benchmark.yml lines 26, 58, 86, 108, 131, and 158;
.github/workflows/ci.yml line 21; .github/workflows/docker-build-push.yml line
31; .github/workflows/rust-lint.yml lines 22, 39, 73, and 85;
.github/workflows/rust-publish.yml line 21; .github/workflows/rust-test.yml
lines 36 and 65; and .github/workflows/test.yml lines 15, 30, 47, 67, 91, 118,
and 136. Verify dorny/paths-filter, rust-setup, local actions, and the benchmark
action do not require persisted Git credentials, while preserving the benchmark
action’s explicit github-token.

In @.github/workflows/ci.yml:
- Line 21: Replace every mutable actions/checkout@v7.0.1 reference with the
immutable v7.0.1 commit SHA already used in .github/workflows/benchmark.yml.
Apply this to .github/workflows/ci.yml:21-21;
.github/workflows/dependabot-auto-fix.yml:17-19, preserving explicit
authentication for the later git push;
.github/workflows/docker-build-push.yml:31-31;
.github/workflows/rust-lint.yml:22-22, 39-39, 73-73, and 85-85;
.github/workflows/rust-publish.yml:21-21; .github/workflows/rust-test.yml:36-36
and 65-65; .github/workflows/test.yml:15-15, 30-30, 47-47, 67-67, 91-91,
118-118, and 136-136; and .github/workflows/update-onboarding-skill.yml:18-20.

In @.github/workflows/update-onboarding-skill.yml:
- Around line 17-18: Update the checkout step’s actions/checkout reference to
the immutable v7.0.1 commit SHA already used in the benchmark workflow,
replacing the mutable v7.0.1 tag while preserving the existing checkout
configuration.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 49b15aa0-327d-4e7f-acfc-bc233d8ea22a

📥 Commits

Reviewing files that changed from the base of the PR and between 036b8d4 and 87e868a.

⛔ Files ignored due to path filters (8)
  • apps/evm/go.sum is excluded by !**/*.sum
  • apps/loadgen/go.sum is excluded by !**/*.sum
  • apps/testapp/go.sum is excluded by !**/*.sum
  • execution/evm/go.sum is excluded by !**/*.sum
  • execution/evm/test/go.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • test/docker-e2e/go.sum is excluded by !**/*.sum
  • test/e2e/go.sum is excluded by !**/*.sum
📒 Files selected for processing (26)
  • .github/workflows/benchmark.yml
  • .github/workflows/ci.yml
  • .github/workflows/dependabot-auto-fix.yml
  • .github/workflows/docker-build-push.yml
  • .github/workflows/docker-tests.yml
  • .github/workflows/docs_build.yml
  • .github/workflows/docs_deploy.yml
  • .github/workflows/docs_preview.yml
  • .github/workflows/lint.yml
  • .github/workflows/proto.yml
  • .github/workflows/release-apps.yml
  • .github/workflows/release-github.yml
  • .github/workflows/rust-lint.yml
  • .github/workflows/rust-publish.yml
  • .github/workflows/rust-test.yml
  • .github/workflows/test.yml
  • .github/workflows/update-onboarding-skill.yml
  • apps/evm/go.mod
  • apps/loadgen/go.mod
  • apps/testapp/go.mod
  • execution/evm/go.mod
  • execution/evm/test/go.mod
  • go.mod
  • pkg/p2p/client.go
  • test/docker-e2e/go.mod
  • test/e2e/go.mod

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.0
- uses: actions/checkout@v7.0.1

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

github web search actions/checkout v7.0.1 commit 3d3c42e5aac5ba805825da76410c181273ba90b1

💡 Result:

The Git commit hash 3d3c42e5aac5ba805825da76410c181273ba90b1 corresponds to the release of actions/checkout version v7.0.1 [1][2]. This commit, titled "prep v7.0.1 release (#2531)," was authored on July 17, 2026, and the v7.0.1 release was officially published on July 20, 2026 [1][2]. This release included several updates and fixes, such as: * Skipping the unsafe pull request check if the input is set to the default [2]. * Trimming only ASCII whitespace for branch inputs [2]. * Escaping values passed to --unset [2]. * Various dependency updates [2]. You can view the specific commit details and the full changelog on the official GitHub repository for actions/checkout [1][2].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Repository occurrences:\n'
rg -n 'actions/checkout@v7\.0\.1|actions/checkout@[0-9a-fA-F]{40}' .github/workflows || true

printf '\nGit status/stash relevant:\n'
git status --short
git diff --stat || true

printf '\nTry GitHub API tag ref:\n'
curl -fsSL --max-time 20 https://api.github.com/repos/actions/checkout/git/refs/tags/v7.0.1 | jq '{ref, object_type: .object.type, object_sha: .object.sha, tag: (if .object.type=="tag" then .tag else null end)}' 2>/dev/null || true

printf '\nTry GitHub API tag object then commit if annotated:\n'
TAG_OBJ="$(curl -fsSL --max-time 20 'https://api.github.com/repos/actions/checkout/git/refs/tags/v7.0.1' | jq -r '.object.sha // empty' 2>/dev/null || true)" || true
echo "tag_object_sha=$TAG_OBJ"
if [ -n "$TAG_OBJ" ]; then
  curl -fsSL --max-time 20 "https://api.github.com/repos/actions/checkout/git/tags/$TAG_OBJ" \
    | jq '{sha, type, object_sha: .object.sha, tag: .tag}' 2>/dev/null || true
fi

printf '\nTry suggested commit via commits endpoint:\n'
curl -fsSL --max-time 20 https://api.github.com/repos/actions/checkout/commits/3d3c42e5aac5ba805825da764310c181273ba90b1 \ | jq '{sha, html_url}' 2>/dev/null || true

Repository: evstack/ev-node

Length of output: 3648


🌐 Web query:

site:github.com/actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 "prep v7.0.1 release"

💡 Result:

The commit 3d3c42e5aac5ba805825da76410c181273ba90b1 in the actions/checkout GitHub repository represents the preparation for the v7.0.1 release [1]. This commit, titled "prep v7.0.1 release" and associated with pull request #2531, was authored on July 17, 2026 [2][1]. The commit performed the following actions to prepare for the release: - Updated the version from 7.0.0 to 7.0.1 in package.json [2]. - Synchronized the package version fields in package-lock.json to 7.0.1 [2]. - Added a section for v7.0.1 to CHANGELOG.md [2].

Citations:


Pin actions/checkout to the immutable v7.0.1 commit.

Replace actions/checkout@v7.0.1 with the pinned commit 3d3c42e5aac5ba805825da76410c181273ba90b1 in the workflows still using the mutable tag.

🧰 Tools
🪛 zizmor (1.28.0)

[warning] 25-25: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

📍 Affects 8 files
  • .github/workflows/docker-tests.yml#L25-L25 (this comment)
  • .github/workflows/docker-tests.yml#L45-L45
  • .github/workflows/docker-tests.yml#L65-L65
  • .github/workflows/docs_build.yml#L19-L19
  • .github/workflows/docs_deploy.yml#L31-L31
  • .github/workflows/docs_preview.yml#L24-L24
  • .github/workflows/lint.yml#L15-L15
  • .github/workflows/lint.yml#L40-L40
  • .github/workflows/lint.yml#L49-L49
  • .github/workflows/lint.yml#L63-L63
  • .github/workflows/lint.yml#L78-L78
  • .github/workflows/proto.yml#L14-L14
  • .github/workflows/release-apps.yml#L27-L27
  • .github/workflows/release-apps.yml#L78-L78
  • .github/workflows/release-github.yml#L35-L35
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/docker-tests.yml at line 25, Pin every actions/checkout
reference to the immutable commit 3d3c42e5aac5ba805825da76410c181273ba90b1
instead of the mutable v7.0.1 tag at .github/workflows/docker-tests.yml lines
25-25, 45-45, and 65-65; .github/workflows/docs_build.yml line 19-19;
.github/workflows/docs_deploy.yml line 31-31; .github/workflows/docs_preview.yml
line 24-24; .github/workflows/lint.yml lines 15-15, 40-40, 49-49, 63-63, and
78-78; .github/workflows/proto.yml line 14-14;
.github/workflows/release-apps.yml lines 27-27 and 78-78; and
.github/workflows/release-github.yml line 35-35.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow files present =="
git ls-files .github/workflows | sort

echo "== checkout usages =="
rg -n "actions/checkout@|persist-credentials|fetch-depth|git archive|tar/zip|upload-artifact|download-artifact" .github/workflows

echo "== file snippets around affected checkout usages =="
for f in .github/workflows/docker-tests.yml .github/workflows/docs_build.yml .github/workflows/docs_deploy.yml .github/workflows/lint.yml .github/workflows/proto.yml .github/workflows/release-apps.yml .github/workflows/release-github.yml; do
  if [ -f "$f" ]; then
    echo "--- $f ($(wc -l < "$f") lines) ---"
    nl -ba "$f" | sed -n '1,120p'
  fi
done

Repository: evstack/ev-node

Length of output: 5373


🌐 Web query:

actions/checkout persist-credentials default true README

💡 Result:

In the actions/checkout GitHub Action, the persist-credentials input determines whether the authentication token or SSH key used for the checkout is configured with the local git configuration [1][2]. Key details regarding this setting include: Default Value: The default value for persist-credentials is true [1][2]. Purpose: When set to true (the default), the action persists the credentials in the local git configuration of the checked-out repository [1][3]. This allows subsequent git commands (such as git fetch, git push, or git pull) executed later in your workflow to run with authenticated access automatically [4][5]. Security Enhancement: In recent versions (v6.0.0 and later), the implementation of credential persistence was updated to store these credentials in a separate file under the $RUNNER_TEMP directory instead of directly modifying the.git/config file, which improves security [3][6]. The credentials are removed automatically during the post-job cleanup phase [1][3]. Opt-Out: If you do not want your credentials persisted, you can explicitly set persist-credentials to false in your workflow step [1][5]. This is often done to increase security if the workflow does not require further authenticated git operations [4].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow snippets around affected checkout usages =="
for f in .github/workflows/docker-tests.yml .github/workflows/docs_build.yml .github/workflows/docs_deploy.yml .github/workflows/lint.yml .github/workflows/proto.yml .github/workflows/release-apps.yml .github/workflows/release-github.yml; do
  if [ -f "$f" ]; then
    echo "--- $f ($(wc -l < "$f") lines) ---"
    awk '{printf "%6d\t%s\n", NR, $0}' "$f" | sed -n '1,120p'
  fi
done

echo "== artifact/archive/download usages in relevant workflows =="
rg -n "upload-artifact|download-artifact|tar|zip|git archive|ghc|archive" .github/workflows/docker-tests.yml .github/workflows/docs_build.yml .github/workflows/docs_deploy.yml .github/workflows/lint.yml .github/workflows/proto.yml .github/workflows/release-apps.yml .github/workflows/release-github.yml || true

echo "== other checkout sites without persist-credentials =="
python3 - <<'PY'
import glob, re
for path in sorted(glob.glob('.github/workflows/*.yml')):
    text = open(path).read()
    for m in re.finditer(r'uses:\s*actions/checkout@([^\s#]+)(?:\s*#\s*(?:v[^\s]+|.*))?|persist-credentials:\s*([^\s#]+)', text):
        # simple pass: print checkout refs and persist settings in same file; not perfect for same line, but enough
        pass
PY

Repository: evstack/ev-node

Length of output: 21083


🌐 Web query:

actions/checkout persist-credentials true local git config /tmp runner credentials GitHub Actions

💡 Result:

In GitHub Actions, the persist-credentials input for the actions/checkout action controls whether the repository's authentication token (or SSH key) is configured in the local Git environment to allow subsequent Git commands in the workflow to run authenticated [1][2][3]. Evolution of Implementation: Historically, actions/checkout configured the Git authentication token directly within the local .git/config file [1][4]. However, starting with actions/checkout v6.0.0, the implementation was updated to improve security [4][5]. Instead of writing the credentials directly into the local repository configuration, the action now stores them in a separate file located under $RUNNER_TEMP and uses Git's includeIf conditional configuration to reference them [4][5]. This change prevents the sensitive credentials from residing directly within the .git/config file, which was previously a potential risk for accidental exposure [4][5]. Key Considerations: - Default Behavior: By default, persist-credentials is set to true [1][2]. - Functionality: When true, it enables your workflow scripts to run authenticated Git commands (e.g., git push or git pull) without requiring additional authentication steps [1][4][3]. - Cleanup: The authentication token is automatically removed by a post-job cleanup step once the job finishes [1][4]. - Security: While persist-credentials: true is the default, some users prefer setting it to false as a security best practice to minimize exposure if unnecessary [6][7]. If set to false, your workflow scripts will not have access to the repository's credentials via the Git configuration [1][3]. For scenarios involving Docker container actions, using persist-credentials (v6+) requires a minimum Actions Runner version of v2.329.0 to correctly access the credentials stored in $RUNNER_TEMP [4][5].

Citations:


🌐 Web query:

actions/checkout persist-credentials false workflow authenticated git operations

💡 Result:

In GitHub Actions, the persist-credentials input for the actions/checkout action controls whether the repository's authentication token (typically the GITHUB_TOKEN) is stored in the local Git configuration [1][2]. When persist-credentials is set to the default value of true, the action configures the runner's local Git environment with the necessary credentials to perform authenticated Git operations, such as git fetch or git push, throughout the remainder of the workflow job [1][2]. While convenient, this approach has historically been identified as a security risk because it leaves the credentials accessible to any subsequent step or third-party action in that same job [3][4]. If you set persist-credentials: false, the action will not store the authentication token in the Git configuration [1][3]. If your workflow requires performing authenticated Git operations later (such as a git push), you must manually authenticate Git within that specific step [4][5]. To perform authenticated Git operations when persist-credentials is false, you can explicitly configure the remote URL with the token in the step where the operation is needed [4][5]. An example of this pattern is: git remote set-url origin "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" git push This approach ensures that credentials are only present and active during the exact step that requires them, rather than being persisted for the entire duration of the job [4][5]. Recent versions of actions/checkout have also improved security by storing these credentials in a more restricted location (under $RUNNER_TEMP) rather than directly in.git/config, though explicitly setting persist-credentials to false remains a recommended practice for hardening workflow security [2][3][6].

Citations:


Disable checkout credential persistence unless the job needs authenticated Git access.

actions/checkout persists the repo token by default. Add persist-credentials: false to these checkout steps unless a later step needs authenticated git commands:

  • .github/workflows/docker-tests.yml lines 25, 45, 65
  • .github/workflows/docs_build.yml line 19
  • .github/workflows/docs_deploy.yml lines 31-33 (add to the existing with block)
  • .github/workflows/lint.yml lines 15, 40, 49-51, 63-65, 78-80
  • .github/workflows/proto.yml line 14
  • .github/workflows/release-apps.yml lines 27, 78
  • .github/workflows/release-github.yml lines 35-37
🧰 Tools
🪛 zizmor (1.28.0)

[warning] 25-25: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

📍 Affects 7 files
  • .github/workflows/docker-tests.yml#L25-L25 (this comment)
  • .github/workflows/docker-tests.yml#L45-L45
  • .github/workflows/docker-tests.yml#L65-L65
  • .github/workflows/docs_build.yml#L19-L19
  • .github/workflows/docs_deploy.yml#L31-L33
  • .github/workflows/lint.yml#L15-L15
  • .github/workflows/lint.yml#L40-L40
  • .github/workflows/lint.yml#L49-L51
  • .github/workflows/lint.yml#L63-L65
  • .github/workflows/lint.yml#L78-L80
  • .github/workflows/proto.yml#L14-L14
  • .github/workflows/release-apps.yml#L27-L27
  • .github/workflows/release-apps.yml#L78-L78
  • .github/workflows/release-github.yml#L35-L37
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/docker-tests.yml at line 25, Disable checkout credential
persistence by adding persist-credentials: false to each actions/checkout step
at .github/workflows/docker-tests.yml:25-25, 45-45, and 65-65;
.github/workflows/docs_build.yml:19-19; .github/workflows/docs_deploy.yml:31-33
within its existing with block; .github/workflows/lint.yml:15-15, 40-40, 49-51,
63-65, and 78-80; .github/workflows/proto.yml:14-14;
.github/workflows/release-apps.yml:27-27 and 78-78; and
.github/workflows/release-github.yml:35-37. Preserve any existing checkout
options and do not change steps that require authenticated git commands.

Source: Linters/SAST tools

Comment on lines 17 to 20
- name: Checkout repository
uses: actions/checkout@v7.0.0
uses: actions/checkout@v7.0.1
with:
fetch-depth: 0 # Full history for commit analysis

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | rg '(^|/)\.github/workflows/update-onboarding-skill\.yml$|\.github/workflows/update-onboarding-skill\.yml' || true

echo "== target workflow =="
cat -n .github/workflows/update-onboarding-skill.yml | sed -n '1,220p'

echo "== search for action permissions/run behavior mentions =="
rg -n "permissions:|anthropics/claude-code-action|actions/checkout|persist-credentials|GITHUB_TOKEN|git push|gh " .github/workflows/update-onboarding-skill.yml .github/workflows || true

echo "== workflow syntax parse-ish line count =="
wc -l .github/workflows/update-onboarding-skill.yml

Repository: evstack/ev-node

Length of output: 12956


🌐 Web query:

anthropics claude-code-action v1 Bash(git:*) local git config credentials token

💡 Result:

The anthropics/claude-code-action@v1 action handles Git authentication internally to allow Claude to perform Git operations (such as committing changes) without permanently embedding tokens in the repository configuration [1][2]. How it manages Git credentials: 1. Credential Helper Approach: The action typically configures a custom Git credential helper to manage authentication [1][2]. It creates a temporary helper script (e.g., named.git-credential-gh-token) alongside the action source [1][2]. This script is configured via git config credential.helper to read the token from an environment variable (often GH_TOKEN) at the time of authentication, rather than hardcoding the token into the Git remote URL or local configuration [1][2]. 2. Remote URL Alternative: In certain configurations or fallback scenarios, the action may update the remote URL directly to include the token (e.g., https://x-access-token:${githubToken}`@github.com/`...) [1][2]. 3. Interaction with actions/checkout: Users have reported that the action may overwrite existing Git credentials, potentially causing issues for subsequent steps (e.g., git push) if the environment is not restored [3][4]. As a result, if you encounter authentication errors in steps following the action, you may need to explicitly handle credential cleanup or re-authentication, such as using an.extraheader configuration if you are relying on a persistent token from a previous checkout step [4]. Key Configuration Notes: - The github_token input is optional and generally only required if you are connecting a custom GitHub App of your own [5]. - If you use actions/checkout with persist-credentials: false, ensure you provide the necessary tokens directly to the claude-code-action or handle the credential setup to avoid fetch failures, as the action's internal setup might not automatically inherit the credentials from the checkout step [3]. For the most up-to-date and specific guidance on your repository's security requirements, refer to the official documentation at https://code.claude.com/docs/en/github-actions [6][7].

Citations:


🌐 Web query:

actions/checkout v7.0.1 persist-credentials default true

💡 Result:

In the actions/checkout action, including version v7.0.1, the default value for the persist-credentials input is true [1][2][3][4]. This parameter determines whether the action configures the Git credential helper with the provided token or SSH key [1][2][4]. When set to true (the default), the credentials are added to the local Git configuration, allowing subsequent steps in the workflow to perform authenticated Git commands [1][3][5]. The action automatically cleans up these credentials during the post-job phase [1][3]. If you wish to opt out of this behavior, you must explicitly set persist-credentials: false in your workflow configuration [1][3][5].

Citations:


Disable persisted checkout credentials before running Claude.

The checkout step persists the write-capable GITHUB_TOKEN in .git/config, and the Claude step can run Bash(git:*). Set persist-credentials: false on checkout, and configure scoped GITHUB_TOKEN authentication only on the later git push / gh commands.

🧰 Tools
🪛 zizmor (1.28.0)

[warning] 17-20: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/update-onboarding-skill.yml around lines 17 - 20, Update
the checkout action configuration in the repository onboarding workflow to set
persist-credentials to false. Preserve the existing full-history checkout, and
ensure authentication is provided explicitly and only for the later git push or
gh commands rather than persisted for the Claude step.

Source: Linters/SAST tools

@tac0turtle
tac0turtle merged commit c27a9fd into main Aug 3, 2026
45 of 49 checks passed
@tac0turtle
tac0turtle deleted the marko/deps_new branch August 3, 2026 12:53
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