diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml
index 55b64f88c..a2d1e7b92 100644
--- a/.github/workflows/python-package.yml
+++ b/.github/workflows/python-package.yml
@@ -89,14 +89,15 @@ jobs:
           - '3.11'
           - '3.12-dev'
         constraints: ['black==22.12.0']
+        post_install: ['']
         include:
           - os: ubuntu-latest
             python-version: '3.7'
             constraints: '--constraint constraints-oldest.txt'
           - os: ubuntu-latest
             python-version: '3.11'
-            constraints: '--constraint constraints-future.txt'
-            upgrade: '--upgrade --upgrade-strategy=eager'
+            post_install: pip install -r constraints-future.txt
+                                      --upgrade --upgrade-strategy=eager
     needs:
       - build-wheel
     steps:
@@ -113,6 +114,12 @@ jobs:
       - name: Install Darker and its dependencies from the wheel build earlier
         run: pip install "${{needs.build-wheel.outputs.wheel-path}}[test]"
                          ${{ matrix.upgrade }} ${{ matrix.constraints }}
+      - name: Upgrade Black and Isort from GitHub if future constraints are used
+        # This can't be done in the same Pip invocation as installing Darker
+        # since Darker might place an upper limit on Black and/or Isort during
+        # compatibility fixing periods.
+        if: matrix.post_install
+        run: ${{ matrix.post_install }}
       - name: Downgrade target-version when running oldest supported Black
         if: matrix.constraints == '--constraint constraints-oldest.txt'
         run: |
diff --git a/CHANGES.rst b/CHANGES.rst
index 9f6621314..f55910af5 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -5,6 +5,7 @@ These features will be included in the next release:
 
 Added
 -----
+- Limit Black to versions before 24.2 until the incompatibility is resolved.
 
 Fixed
 -----
diff --git a/setup.cfg b/setup.cfg
index 26f36a46a..fddc74874 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -28,7 +28,7 @@ package_dir =
 packages = find:
 install_requires =
     # NOTE: remember to keep `constraints-oldest.txt` in sync with these
-    black>=21.5b1
+    black>=21.5b1,<24.2  # upper limit until incompatibility fixed
     toml>=0.10.0
     typing-extensions ; python_version < "3.8"
 # NOTE: remember to keep `.github/workflows/python-package.yml` in sync
@@ -55,7 +55,7 @@ color =
 test =
     # NOTE: remember to keep `constraints-oldest.txt` in sync with these
     airium>=0.2.3
-    black>=21.7b1  # to prevent Mypy error about `gen_python_files`, see issue #189
+    black>=21.7b1,<24.2  # prevent Mypy error about `gen_python_files`, see issue #189
     cryptography>=3.3.2  # through twine, fixes CVE-2020-36242
     defusedxml>=0.7.1
     flynt>=0.76,<0.78