diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index e4a6419418a..ce9d4f9c131 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -508,10 +508,12 @@ jobs:
       - name: Upload coverage
         # any except canceled or skipped
         if: always() && (steps.test_report.outcome == 'success')
-        uses: codecov/codecov-action@v3
+        uses: codecov/codecov-action@v4
         with:
+          fail_ci_if_error: true
           files: ./build/coverage.xml
           flags: ${{ runner.os }}
+          token: ${{ secrets.CODECOV_TOKEN }}
 
       - name: Create/Update GitHub Release
         if: ${{ needs.setup_release.outputs.create_release == 'true' }}
@@ -831,10 +833,12 @@ jobs:
       - name: Upload coverage
         # any except canceled or skipped
         if: always() && (steps.test_report.outcome == 'success')
-        uses: codecov/codecov-action@v3
+        uses: codecov/codecov-action@v4
         with:
+          fail_ci_if_error: true
           files: ./build/coverage.xml
           flags: ${{ runner.os }}-${{ matrix.os_version }}
+          token: ${{ secrets.CODECOV_TOKEN }}
 
       - name: Create/Update GitHub Release
         if: ${{ needs.setup_release.outputs.create_release == 'true' && matrix.release }}
@@ -1067,10 +1071,12 @@ jobs:
       - name: Upload coverage
         # any except canceled or skipped
         if: always() && (steps.test_report.outcome == 'success')
-        uses: codecov/codecov-action@v3
+        uses: codecov/codecov-action@v4
         with:
+          fail_ci_if_error: true
           files: ./build/coverage.xml
           flags: ${{ runner.os }}
+          token: ${{ secrets.CODECOV_TOKEN }}
 
       - name: Package Windows Debug Info
         working-directory: build