Conversation
…k (LAB-3433) v6.0.0's dist/codecov.sh fetches the CLI signing key from keybase.io/codecovsecurity, an account Codecov deleted on 2026-06-07 (codecov/codecov-action#1956, HTTP 404). Key import fails, gpg --verify fails with "No public key", and because fail_ci_if_error was false the wrapper printed "CLI integrity verified" and executed the unverified binary anyway, on every green run since June. v7.0.0 (fb8b3582; v6.0.2 is the same commit) fetches keybase.io/codecovsecops, fingerprint 2703 4E7F DB85 0E0B BC2C 62FF 806B B28A ED77 9869. fail_ci_if_error is also the wrapper's signature-enforcement switch, so it must be true for the step to abort before exec. Step-level continue-on-error keeps the upload from reddening CI, which is all the old false was doing.
|
Warning Review limit reachedNext included review available in 15 minutes. View limit detailsLimit details: You’ve used all 2 included reviews currently available. Your 80 included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour. Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (1)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour. WalkthroughThe coverage job upgrades the Codecov action from v6.0.0 to v7.0.0. It now fails the upload step when verification or wrapper errors occur. ChangesCodecov CI configuration
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~5 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The Codecov upload verification issue is addressed without introducing merge-blocking CI risk. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This comment has been minimized.
This comment has been minimized.
Panel findings: the key was not deleted, its keybase hosting account moved; the 'all false ever did' clause contradicted the sentence before it; and a reader seeing the step orange on every run (the pre-existing tokenless rejection) needs to know how to tell the guard firing from a lost upload before reaching for the flag.
b7b46a9
Kody Review CompleteGreat news! 🎉 Keep up the excellent work! 🚀 Kody Guide: Usage and ConfigurationInteracting with Kody
Current Kody ConfigurationReview OptionsThe following review options are enabled or disabled:
|
|
Signature verification proof on head
After verification the step exits 1 because the upload itself is rejected: Expert panel on this diff (bug-hunter, security, craftsman, pragmatism; high stakes): security and pragmatism returned no findings; the craftsman's wording corrections and the shared observability point (orange step must be readable from the log) landed in |
Summary
This PR hardens the CI coverage upload step against a known security issue in the Codecov GitHub Action.
Changes
codecov-actionto v7.0.0 (from v6.0.0), updating the commit SHA accordingly.fail_ci_if_error: true(previouslyfalse) to enforce the CLI's signature-verification check.continue-on-error: trueto the step so a failed upload does not cause the overall CI run to fail.Why
In the Codecov action, the
fail_ci_if_errorflag doubles as the switch that enforces GPG signature verification of the CLI'sSHA256SUM. When set tofalse, a failedgpg --verifywas only logged and the unverified binary still executed — which is what v6.0.0 did on every run after Codecov deleted its Keybase signing key (see codecov/codecov-action#1956, 2026-06-07).By keeping
fail_ci_if_error: true, the step now aborts before executing an unverified binary. The addedcontinue-on-error: truepreserves the previous behavior of not turning CI red on a failed upload — which is allfalsewas actually accomplishing before.Pin codecov-action to v7.0.0 and enforce CLI signature verification
Summary
This PR updates the CI workflow to pin the
codecov-actionto v7.0.0 and clarifies the signature enforcement behavior for coverage uploads.Changes
codecov/codecov-actionto v7.0.0 (commitfb8b3582c8e4def4969c97caa2f19720cb33a72f), upgrading from the previous version.fail_ci_if_errorsetting to explain its role as a signature-enforcement switch.Context & Rationale
The
fail_ci_if_errorflag doubles as the wrapper's signature-enforcement switch. When set tofalse, a failedgpg --verifyof the CLI's SHA256SUM is only logged, and the unverified binary still executes — the vulnerable behavior that v6.0.0 exhibited after Codecov moved its public key off the keybase account that v6.0.0 fetched it from (see codecov/codecov-action#1956).By keeping
fail_ci_if_error: true, the step aborts before executing an unverified binary, whilecontinue-on-error: trueensures upload failures don't fail the CI pipeline.The updated comments also provide guidance for interpreting an orange (warning) step status:
"Could not verify signature"message means the signature guard is working as intended and should never be silenced.Reference