diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5200dcf..b0a6ea4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -88,10 +88,14 @@ jobs:
         with:
           toolchain: ${{ matrix.rust }}
       - name: Install tarpaulin
-        run: cargo install cargo-tarpaulin -f
+        uses: taiki-e/cache-cargo-install-action@v2
+        with:
+          tool: cargo-tarpaulin
       - name: Generate code coverage
         run: cargo tarpaulin --verbose --all-features --workspace --timeout 120 --out Xml
       - name: Upload to codecov.io
-        uses: codecov/codecov-action@v1
+        uses: codecov/codecov-action@v4
+        env:
+          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
         with:
           fail_ci_if_error: true