diff --git a/.github/workflows/build-container-image.yml b/.github/workflows/build-container-image.yml
index a1aeddf201b04d15161f5fe23cdf850af2b89aa8..532921b1ff2357dc1540a3b64b01cbc9dbb077ef 100644
--- a/.github/workflows/build-container-image.yml
+++ b/.github/workflows/build-container-image.yml
@@ -24,7 +24,7 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - uses: docker/setup-qemu-action@v2
         if: contains(inputs.platforms, 'linux/arm64') && !inputs.use_native_arm64_builder
diff --git a/.github/workflows/build-push-pr.yml b/.github/workflows/build-push-pr.yml
index b95e3c14e0aa95c1b4a360b00685a565d94915e3..1f647e2a1418f1e6ae804118bb5fe19a75b0ac46 100644
--- a/.github/workflows/build-push-pr.yml
+++ b/.github/workflows/build-push-pr.yml
@@ -18,7 +18,7 @@ jobs:
     steps:
       # Repository needs to be cloned so `git rev-parse` below works
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - id: version_vars
         run: |
           echo mastodon_version_metadata=pr-${{ github.event.pull_request.number }}-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT
diff --git a/.github/workflows/bundler-audit.yml b/.github/workflows/bundler-audit.yml
index 6c4869f12d43778d987fea7383c461eaf0f335e2..bfb93a36cd052c2101e8bba69e9fa591a71fb648 100644
--- a/.github/workflows/bundler-audit.yml
+++ b/.github/workflows/bundler-audit.yml
@@ -25,7 +25,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Install native Ruby dependencies
         run: sudo apt-get install -y libicu-dev libidn11-dev
diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml
index b67c503e9524b5ccf0ef6b897f3b65bfa6f4462e..39cf32ddc43a66c43289a325122405b67cceb7f0 100644
--- a/.github/workflows/check-i18n.yml
+++ b/.github/workflows/check-i18n.yml
@@ -17,7 +17,7 @@ jobs:
     runs-on: ubuntu-22.04
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install system dependencies
         run: |
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 8534501d4ef9b5c27a73e92349e80016218be75a..3b40c3fd07be907f8e40d4b0b31147f027b71f86 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -27,7 +27,7 @@ jobs:
 
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       # Initializes the CodeQL tools for scanning.
       - name: Initialize CodeQL
diff --git a/.github/workflows/crowdin-download.yml b/.github/workflows/crowdin-download.yml
index f6b2579ce8275924d8b5864a825ee727714d3b04..e5385808defd2a26a317c7f64a4f34f8d0dc9bad 100644
--- a/.github/workflows/crowdin-download.yml
+++ b/.github/workflows/crowdin-download.yml
@@ -14,7 +14,7 @@ jobs:
 
     steps:
       - name: Checkout
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Increase Git http.postBuffer
         # This is needed due to a bug in Ubuntu's cURL version?
diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml
index 8bc9f5193426898fbab5a1883e32f549f6944530..705af12c025044501a08442eccb3512db9d627f4 100644
--- a/.github/workflows/crowdin-upload.yml
+++ b/.github/workflows/crowdin-upload.yml
@@ -20,7 +20,7 @@ jobs:
 
     steps:
       - name: Checkout
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: crowdin action
         uses: crowdin/github-action@v1
diff --git a/.github/workflows/lint-css.yml b/.github/workflows/lint-css.yml
index 4d3c2ce5affd5ea541f808b91189008f4e355f41..bd775dba2061b51e91939af364f7609fc2ef79aa 100644
--- a/.github/workflows/lint-css.yml
+++ b/.github/workflows/lint-css.yml
@@ -33,7 +33,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
diff --git a/.github/workflows/lint-haml.yml b/.github/workflows/lint-haml.yml
index 56d817123a6bfaab7c16f61e75a07fcf96a30bda..ca9bd66a4ae1b1a5b0775cdd90130ff9441be6ea 100644
--- a/.github/workflows/lint-haml.yml
+++ b/.github/workflows/lint-haml.yml
@@ -28,7 +28,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Install native Ruby dependencies
         run: |
diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml
index 1f0cfd1e708f2ac76e8565a3eb76310e35d3698f..67d28589cb09caacac5b0d3780b2bdac7b7cee7e 100644
--- a/.github/workflows/lint-js.yml
+++ b/.github/workflows/lint-js.yml
@@ -37,7 +37,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
diff --git a/.github/workflows/lint-json.yml b/.github/workflows/lint-json.yml
index 8712d8bd801f0b2c06de929c4f452c56e24e96ae..1d98c52673f7f340d7b2701bf1a7f8a1210ccff3 100644
--- a/.github/workflows/lint-json.yml
+++ b/.github/workflows/lint-json.yml
@@ -29,7 +29,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
diff --git a/.github/workflows/lint-md.yml b/.github/workflows/lint-md.yml
index d19a0470dba4daa33dc09093a9b419ca3708eb9d..1b3f92c972730ce616105ec4c1ba5e1ea0502677 100644
--- a/.github/workflows/lint-md.yml
+++ b/.github/workflows/lint-md.yml
@@ -29,7 +29,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
diff --git a/.github/workflows/lint-ruby.yml b/.github/workflows/lint-ruby.yml
index c898b26325363a6cfcfdc7f1aed251c8a760b7b0..92882a084d126ee4a57cf010ef69dff0c5cc3183 100644
--- a/.github/workflows/lint-ruby.yml
+++ b/.github/workflows/lint-ruby.yml
@@ -29,7 +29,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Install native Ruby dependencies
         run: sudo apt-get install -y libicu-dev libidn11-dev
diff --git a/.github/workflows/lint-yml.yml b/.github/workflows/lint-yml.yml
index 295e9610b3aad7eb5e4954295aaf4b329e01cfed..e77cc988919279bc1b867ce6da1868ba3d324e0e 100644
--- a/.github/workflows/lint-yml.yml
+++ b/.github/workflows/lint-yml.yml
@@ -31,7 +31,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml
index 3306105f9ed9ea5d763fd69782a75f2a138f577d..0ef1d9b7c8279720be5e180b0b55cc18f7d4bed0 100644
--- a/.github/workflows/test-js.yml
+++ b/.github/workflows/test-js.yml
@@ -33,7 +33,7 @@ jobs:
 
     steps:
       - name: Clone repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
diff --git a/.github/workflows/test-migrations-one-step.yml b/.github/workflows/test-migrations-one-step.yml
index a91fd819a2a9443085b0e2edc74e7dfb007e45b4..59287e88cf255351597d027c8ed231b39a9b4b4d 100644
--- a/.github/workflows/test-migrations-one-step.yml
+++ b/.github/workflows/test-migrations-one-step.yml
@@ -70,7 +70,7 @@ jobs:
       BUNDLE_RETRY: 3
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install native Ruby dependencies
         run: |
diff --git a/.github/workflows/test-migrations-two-step.yml b/.github/workflows/test-migrations-two-step.yml
index 50266fb8a0a0717240dc8f61af45d10e7539b6c8..8f3c84d8f36884ed78e86eee4ecdd4e81696feed 100644
--- a/.github/workflows/test-migrations-two-step.yml
+++ b/.github/workflows/test-migrations-two-step.yml
@@ -69,7 +69,7 @@ jobs:
       BUNDLE_RETRY: 3
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install native Ruby dependencies
         run: |
diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml
index 9439e003e4345408293f068d1ea8239bb3742405..343dc36ca16d101f1f2271061e03d14fb1fd96ff 100644
--- a/.github/workflows/test-ruby.yml
+++ b/.github/workflows/test-ruby.yml
@@ -32,7 +32,7 @@ jobs:
       SECRET_KEY_BASE: precompile_placeholder
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Set up Node.js
         uses: actions/setup-node@v3
@@ -127,7 +127,7 @@ jobs:
           - 3
           - 4
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - uses: actions/download-artifact@v3
         with:
@@ -202,7 +202,7 @@ jobs:
           - '.ruby-version'
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - uses: actions/download-artifact@v3
         with:
@@ -315,7 +315,7 @@ jobs:
           - '.ruby-version'
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - uses: actions/download-artifact@v3
         with: