diff --git a/.cirrus.yml b/.cirrus.yml
index ed3c1f4..b3091ef 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,6 +1,6 @@
 env:
   CIRRUS_CLONE_DEPTH: 1
-  GO_VERSION: go1.22.5
+  GO_VERSION: go1.23.0
 
 freebsd_13_task:
   freebsd_instance:
diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml
index 926a8b6..db8ba12 100644
--- a/.github/workflows/static-analysis.yml
+++ b/.github/workflows/static-analysis.yml
@@ -16,7 +16,7 @@ jobs:
     - name: Install Go
       uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32
       with:
-        go-version: '1.22'
+        go-version: '1.23'
 
     - name: Check out code
       uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index dcfa651..64880b7 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -13,7 +13,7 @@ jobs:
     strategy:
       matrix:
         # Oldest supported version is 1.18, plus the latest two releases.
-        go-version: ['1.18', '1.21', '1.22']
+        go-version: ['1.18', '1.22', '1.23']
         os: [ubuntu-20.04, ubuntu-22.04, macos-12, macos-13, macos-14, windows-2019, windows-2022]
     runs-on: ${{ matrix.os }}
 
@@ -27,11 +27,11 @@ jobs:
       uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
 
     - name: Check formatting
-      if: ${{ matrix.go-version == '1.22' && matrix.os == 'ubuntu-22.04' }}
+      if: ${{ matrix.go-version == '1.23' && matrix.os == 'ubuntu-22.04' }}
       run: diff -u <(echo -n) <(gofmt -d .)
 
     - name: Check Go modules
-      if: ${{ matrix.go-version == '1.22' && matrix.os == 'ubuntu-22.04' }}
+      if: ${{ matrix.go-version == '1.23' && matrix.os == 'ubuntu-22.04' }}
       run: |
         go mod tidy
         git diff --exit-code