diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3c910e2c2f6fabcb2905095ec6e13f0c21972261..6962295af4e0e6e080dc41b027cf22a732ab6bd4 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -16,6 +16,12 @@ Please See the [releases tab](https://github.com/openedx/xblock-lti-consumer/rel
 Unreleased
 ~~~~~~~~~~
 
+8.0.0 - 2023-01-31
+------------------
+* Update to work with bleachk>=6.0.0 and make that an explicit requirement in
+  ``install_requires`` since the changes are incompatible with the older
+  versions of bleach.
+
 7.3.0 - 2023-01-30
 ------------------
 * Rename edx-platform import of ``get_module_for_descriptor_internal``.
diff --git a/lti_consumer/__init__.py b/lti_consumer/__init__.py
index 0c989b3093078a6fe66296e89964ec6528099424..2ac31ca97338b4f41a3816e1fd4974378d1492c8 100644
--- a/lti_consumer/__init__.py
+++ b/lti_consumer/__init__.py
@@ -4,4 +4,4 @@ Runtime will load the XBlock class from here.
 from .apps import LTIConsumerApp
 from .lti_xblock import LtiConsumerXBlock
 
-__version__ = '7.3.0'
+__version__ = '8.0.0'
diff --git a/lti_consumer/lti_xblock.py b/lti_consumer/lti_xblock.py
index aae2678df3d7151f31fc485d0aeaa0f35f135846..3fe04ff78a1305b576f4e1a1328ce0b8b317eb16 100644
--- a/lti_consumer/lti_xblock.py
+++ b/lti_consumer/lti_xblock.py
@@ -1585,7 +1585,7 @@ class LtiConsumerXBlock(StudioEditableXBlockMixin, XBlock):
         # For more context on ALLOWED_TAGS and ALLOWED_ATTRIBUTES
         # Look into this documentation URL see https://bleach.readthedocs.io/en/latest/clean.html#allowed-tags-tags
         # This lets all plaintext through.
-        allowed_tags = bleach.sanitizer.ALLOWED_TAGS + ['img']
+        allowed_tags = bleach.sanitizer.ALLOWED_TAGS | {'img'}
         allowed_attributes = dict(bleach.sanitizer.ALLOWED_ATTRIBUTES, **{'img': ['src', 'alt']})
         sanitized_comment = bleach.clean(self.score_comment, tags=allowed_tags, attributes=allowed_attributes)
 
diff --git a/lti_consumer/templatetags/lti_sanitize.py b/lti_consumer/templatetags/lti_sanitize.py
index 35caaebfa737811d5ff9857b47595e72e24ce24f..bbb73f170a4524acf7ee09d3f5dd9f5c084e1e75 100644
--- a/lti_consumer/templatetags/lti_sanitize.py
+++ b/lti_consumer/templatetags/lti_sanitize.py
@@ -13,7 +13,7 @@ def lti_sanitize(html):
     """
     Sanitize a html fragment with bleach.
     """
-    allowed_tags = bleach.sanitizer.ALLOWED_TAGS + ['img']
+    allowed_tags = bleach.sanitizer.ALLOWED_TAGS | {'img'}
     allowed_attributes = dict(bleach.sanitizer.ALLOWED_ATTRIBUTES, **{'img': ['src', 'alt']})
     sanitized_html = bleach.clean(html, tags=allowed_tags, attributes=allowed_attributes)
     return mark_safe(sanitized_html)
diff --git a/requirements/base.in b/requirements/base.in
index f946ff4b31361dc3c6a7209b26e7b51c1e0841ed..0be363005162bd7b840d48b14fb4659d14e3e4e3 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -3,7 +3,7 @@
 
 attrs
 lxml
-bleach
+bleach>=6.0.0
 django
 oauthlib
 mako
diff --git a/requirements/base.txt b/requirements/base.txt
index 127b0629baa5047ca50b33bd50d36b5d7e9154d1..84101d44a2c4047d6eacdc79073f49ef07cdaa09 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -10,7 +10,7 @@ asgiref==3.6.0
     # via django
 attrs==22.2.0
     # via -r requirements/base.in
-bleach==5.0.1
+bleach==6.0.0
     # via -r requirements/base.in
 certifi==2022.12.7
     # via requests
@@ -63,7 +63,7 @@ mako==1.2.4
     # via
     #   -r requirements/base.in
     #   xblock-utils
-markupsafe==2.1.1
+markupsafe==2.1.2
     # via
     #   mako
     #   xblock
@@ -71,7 +71,7 @@ newrelic==8.5.0
     # via edx-django-utils
 oauthlib==3.2.2
     # via -r requirements/base.in
-openedx-filters==0.8.0
+openedx-filters==1.0.0
     # via -r requirements/base.in
 pbr==5.11.1
     # via stevedore
@@ -79,7 +79,7 @@ psutil==5.9.4
     # via edx-django-utils
 pycparser==2.21
     # via cffi
-pycryptodomex==3.16.0
+pycryptodomex==3.17
     # via
     #   -r requirements/base.in
     #   pyjwkest
@@ -124,7 +124,7 @@ webencodings==0.5.1
     # via bleach
 webob==1.8.7
     # via xblock
-xblock==1.6.1
+xblock==1.6.2
     # via
     #   -r requirements/base.in
     #   xblock-utils
diff --git a/requirements/ci.txt b/requirements/ci.txt
index de17b8714e08d5c0d1a444969c61f16c6ac8dbfd..a5d6a4da8f175097dbe2af164f848f015b12aaeb 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -16,7 +16,7 @@ asgiref==3.6.0
     # via
     #   -r requirements/test.txt
     #   django
-astroid==2.13.2
+astroid==2.13.3
     # via
     #   -r requirements/test.txt
     #   pylint
@@ -27,7 +27,7 @@ binaryornot==0.4.4
     # via
     #   -r requirements/test.txt
     #   cookiecutter
-bleach==5.0.1
+bleach==6.0.0
     # via
     #   -r requirements/test.txt
     #   readme-renderer
@@ -35,11 +35,11 @@ boto==2.49.0
     # via
     #   -r requirements/test.txt
     #   xblock-sdk
-boto3==1.26.50
+boto3==1.26.59
     # via
     #   -r requirements/test.txt
     #   fs-s3fs
-botocore==1.29.50
+botocore==1.29.59
     # via
     #   -r requirements/test.txt
     #   boto3
@@ -77,10 +77,6 @@ code-annotations==1.3.0
     # via
     #   -r requirements/test.txt
     #   edx-lint
-commonmark==0.9.1
-    # via
-    #   -r requirements/test.txt
-    #   rich
 cookiecutter==2.1.1
     # via
     #   -r requirements/test.txt
@@ -116,6 +112,7 @@ django==3.2.16
     #   djangorestframework
     #   edx-django-utils
     #   jsonfield
+    #   openedx-django-pyfs
     #   openedx-filters
     #   xblock-sdk
 django-config-models==2.3.0
@@ -127,9 +124,7 @@ django-crum==0.7.9
 django-filter==22.1
     # via -r requirements/test.txt
 django-pyfs==3.2.0
-    # via
-    #   -r requirements/test.txt
-    #   xblock-sdk
+    # via -r requirements/test.txt
 django-waffle==3.0.0
     # via
     #   -r requirements/test.txt
@@ -164,11 +159,13 @@ fs==2.4.16
     #   -r requirements/test.txt
     #   django-pyfs
     #   fs-s3fs
+    #   openedx-django-pyfs
     #   xblock
 fs-s3fs==1.1.1
     # via
     #   -r requirements/test.txt
     #   django-pyfs
+    #   openedx-django-pyfs
     #   xblock-sdk
 future==0.18.3
     # via
@@ -187,7 +184,7 @@ importlib-resources==5.10.2
     # via
     #   -r requirements/test.txt
     #   keyring
-isort==5.11.4
+isort==5.12.0
     # via
     #   -r requirements/test.txt
     #   pylint
@@ -224,7 +221,7 @@ keyring==23.13.1
 lazy==1.5
     # via
     #   -r requirements/test.txt
-    #   xblock-sdk
+    #   xblock
 lazy-object-proxy==1.9.0
     # via
     #   -r requirements/test.txt
@@ -238,7 +235,11 @@ mako==1.2.4
     # via
     #   -r requirements/test.txt
     #   xblock-utils
-markupsafe==2.1.1
+markdown-it-py==2.1.0
+    # via
+    #   -r requirements/test.txt
+    #   rich
+markupsafe==2.1.2
     # via
     #   -r requirements/test.txt
     #   jinja2
@@ -248,6 +249,10 @@ mccabe==0.7.0
     # via
     #   -r requirements/test.txt
     #   pylint
+mdurl==0.1.2
+    # via
+    #   -r requirements/test.txt
+    #   markdown-it-py
 mock==5.0.1
     # via -r requirements/test.txt
 more-itertools==9.0.0
@@ -260,7 +265,11 @@ newrelic==8.5.0
     #   edx-django-utils
 oauthlib==3.2.2
     # via -r requirements/test.txt
-openedx-filters==0.8.0
+openedx-django-pyfs==3.2.1
+    # via
+    #   -r requirements/test.txt
+    #   xblock
+openedx-filters==1.0.0
     # via -r requirements/test.txt
 packaging==23.0
     # via
@@ -298,7 +307,7 @@ pycparser==2.21
     # via
     #   -r requirements/test.txt
     #   cffi
-pycryptodomex==3.16.0
+pycryptodomex==3.17
     # via
     #   -r requirements/test.txt
     #   pyjwkest
@@ -347,7 +356,7 @@ python-dateutil==2.8.2
     #   arrow
     #   botocore
     #   xblock
-python-slugify==7.0.0
+python-slugify==8.0.0
     # via
     #   -r requirements/test.txt
     #   code-annotations
@@ -385,7 +394,7 @@ rfc3986==2.0.0
     # via
     #   -r requirements/test.txt
     #   twine
-rich==13.1.0
+rich==13.3.1
     # via
     #   -r requirements/test.txt
     #   twine
@@ -478,16 +487,16 @@ wrapt==1.14.1
     # via
     #   -r requirements/test.txt
     #   astroid
-xblock==1.6.1
+xblock[django]==1.6.2
     # via
     #   -r requirements/test.txt
     #   xblock-sdk
     #   xblock-utils
-xblock-sdk==0.5.1
+xblock-sdk==0.5.4
     # via -r requirements/test.txt
 xblock-utils==3.0.0
     # via -r requirements/test.txt
-zipp==3.11.0
+zipp==3.12.0
     # via
     #   -r requirements/test.txt
     #   importlib-metadata
diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt
index b5f17153092fb6f873bbe788b4585fa29958097b..7e39123ff0454af3263ee2387b97c5e3f1769cc5 100644
--- a/requirements/common_constraints.txt
+++ b/requirements/common_constraints.txt
@@ -19,10 +19,6 @@ Django<4.0
 # elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html
 elasticsearch<7.14.0
 
-# setuptools==60.0 had breaking changes and busted several service's pipeline.
-# Details can be found here: https://github.com/pypa/setuptools/issues/2940
-setuptools<60
-
 # django-simple-history>3.0.0 adds indexing and causes a lot of migrations to be affected
 django-simple-history==3.0.0
 
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 926a781aff9ca93308f7fc93a8bc1c5ae5fe879d..2357f189171504198d23af0b5cb4947868908c59 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -14,7 +14,7 @@ asgiref==3.6.0
     #   django
 attrs==22.2.0
     # via -r requirements/base.txt
-bleach==5.0.1
+bleach==6.0.0
     # via -r requirements/base.txt
 certifi==2022.12.7
     # via
@@ -91,7 +91,7 @@ mako==1.2.4
     # via
     #   -r requirements/base.txt
     #   xblock-utils
-markupsafe==2.1.1
+markupsafe==2.1.2
     # via
     #   -r requirements/base.txt
     #   mako
@@ -102,7 +102,7 @@ newrelic==8.5.0
     #   edx-django-utils
 oauthlib==3.2.2
     # via -r requirements/base.txt
-openedx-filters==0.8.0
+openedx-filters==1.0.0
     # via -r requirements/base.txt
 path==16.6.0
     # via edx-i18n-tools
@@ -120,7 +120,7 @@ pycparser==2.21
     # via
     #   -r requirements/base.txt
     #   cffi
-pycryptodomex==3.16.0
+pycryptodomex==3.17
     # via
     #   -r requirements/base.txt
     #   pyjwkest
@@ -190,7 +190,7 @@ webob==1.8.7
     # via
     #   -r requirements/base.txt
     #   xblock
-xblock==1.6.1
+xblock==1.6.2
     # via
     #   -r requirements/base.txt
     #   xblock-utils
diff --git a/requirements/pip.txt b/requirements/pip.txt
index 2602215f734990238c8de66ff385e8bfea56124a..090e71cc5d5769dd6a6dab8ffe74016c495bd221 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -6,9 +6,7 @@
 #
 pip==22.3.1
     # via -r requirements/pip.in
-setuptools==59.8.0
-    # via
-    #   -c requirements/common_constraints.txt
-    #   -r requirements/pip.in
+setuptools==67.0.0
+    # via -r requirements/pip.in
 wheel==0.38.4
     # via -r requirements/pip.in
diff --git a/requirements/quality.txt b/requirements/quality.txt
index 0cfcbc8509a103f197ed92e97241c6d63b03db28..e2ad5503f86d90baad53754d76469aec8a476341 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -14,7 +14,7 @@ asgiref==3.6.0
     # via
     #   -r requirements/base.txt
     #   django
-astroid==2.13.2
+astroid==2.13.3
     # via
     #   pylint
     #   pylint-celery
@@ -22,13 +22,13 @@ attrs==22.2.0
     # via -r requirements/base.txt
 binaryornot==0.4.4
     # via cookiecutter
-bleach==5.0.1
+bleach==6.0.0
     # via -r requirements/base.txt
 boto==2.49.0
     # via xblock-sdk
-boto3==1.26.50
+boto3==1.26.59
     # via fs-s3fs
-botocore==1.29.50
+botocore==1.29.59
     # via
     #   boto3
     #   s3transfer
@@ -71,10 +71,10 @@ django==3.2.16
     #   django-config-models
     #   django-crum
     #   django-filter
-    #   django-pyfs
     #   djangorestframework
     #   edx-django-utils
     #   jsonfield
+    #   openedx-django-pyfs
     #   openedx-filters
     #   xblock-sdk
 django-config-models==2.3.0
@@ -85,8 +85,6 @@ django-crum==0.7.9
     #   edx-django-utils
 django-filter==22.1
     # via -r requirements/base.txt
-django-pyfs==3.2.0
-    # via xblock-sdk
 django-waffle==3.0.0
     # via
     #   -r requirements/base.txt
@@ -106,12 +104,12 @@ edx-opaque-keys[django]==2.3.0
 fs==2.4.16
     # via
     #   -r requirements/base.txt
-    #   django-pyfs
     #   fs-s3fs
+    #   openedx-django-pyfs
     #   xblock
 fs-s3fs==1.1.1
     # via
-    #   django-pyfs
+    #   openedx-django-pyfs
     #   xblock-sdk
 future==0.18.3
     # via
@@ -121,7 +119,7 @@ idna==3.4
     # via
     #   -r requirements/base.txt
     #   requests
-isort==5.11.4
+isort==5.12.0
     # via pylint
 jinja2==3.1.2
     # via
@@ -139,7 +137,7 @@ jsonfield==3.1.0
 lazy==1.5
     # via
     #   -r requirements/base.txt
-    #   xblock-sdk
+    #   xblock
 lazy-object-proxy==1.9.0
     # via astroid
 lxml==4.9.2
@@ -151,7 +149,7 @@ mako==1.2.4
     # via
     #   -r requirements/base.txt
     #   xblock-utils
-markupsafe==2.1.1
+markupsafe==2.1.2
     # via
     #   -r requirements/base.txt
     #   jinja2
@@ -165,7 +163,9 @@ newrelic==8.5.0
     #   edx-django-utils
 oauthlib==3.2.2
     # via -r requirements/base.txt
-openedx-filters==0.8.0
+openedx-django-pyfs==3.2.1
+    # via xblock
+openedx-filters==1.0.0
     # via -r requirements/base.txt
 pbr==5.11.1
     # via
@@ -183,7 +183,7 @@ pycparser==2.21
     # via
     #   -r requirements/base.txt
     #   cffi
-pycryptodomex==3.16.0
+pycryptodomex==3.17
     # via
     #   -r requirements/base.txt
     #   pyjwkest
@@ -220,7 +220,7 @@ python-dateutil==2.8.2
     #   arrow
     #   botocore
     #   xblock
-python-slugify==7.0.0
+python-slugify==8.0.0
     # via
     #   code-annotations
     #   cookiecutter
@@ -300,12 +300,12 @@ webob==1.8.7
     #   xblock-sdk
 wrapt==1.14.1
     # via astroid
-xblock==1.6.1
+xblock[django]==1.6.2
     # via
     #   -r requirements/base.txt
     #   xblock-sdk
     #   xblock-utils
-xblock-sdk==0.5.1
+xblock-sdk==0.5.4
     # via -r requirements/quality.in
 xblock-utils==3.0.0
     # via -r requirements/base.txt
diff --git a/requirements/test.txt b/requirements/test.txt
index bd8733a6725d6feb65e3a13f93ec944c426c80ff..a81b9f83371cea105108cac382eab5421cbf75dc 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -14,7 +14,7 @@ asgiref==3.6.0
     # via
     #   -r requirements/base.txt
     #   django
-astroid==2.13.2
+astroid==2.13.3
     # via
     #   pylint
     #   pylint-celery
@@ -22,15 +22,15 @@ attrs==22.2.0
     # via -r requirements/base.txt
 binaryornot==0.4.4
     # via cookiecutter
-bleach==5.0.1
+bleach==6.0.0
     # via
     #   -r requirements/base.txt
     #   readme-renderer
 boto==2.49.0
     # via xblock-sdk
-boto3==1.26.50
+boto3==1.26.59
     # via fs-s3fs
-botocore==1.29.50
+botocore==1.29.59
     # via
     #   boto3
     #   s3transfer
@@ -61,8 +61,6 @@ click-log==0.4.0
     # via edx-lint
 code-annotations==1.3.0
     # via edx-lint
-commonmark==0.9.1
-    # via rich
 cookiecutter==2.1.1
     # via xblock-sdk
 coverage==6.5.0
@@ -85,6 +83,7 @@ dill==0.3.6
     #   djangorestframework
     #   edx-django-utils
     #   jsonfield
+    #   openedx-django-pyfs
     #   openedx-filters
     #   xblock-sdk
 django-config-models==2.3.0
@@ -96,9 +95,7 @@ django-crum==0.7.9
 django-filter==22.1
     # via -r requirements/base.txt
 django-pyfs==3.2.0
-    # via
-    #   -r requirements/test.in
-    #   xblock-sdk
+    # via -r requirements/test.in
 django-waffle==3.0.0
     # via
     #   -r requirements/base.txt
@@ -125,10 +122,12 @@ fs==2.4.16
     #   -r requirements/base.txt
     #   django-pyfs
     #   fs-s3fs
+    #   openedx-django-pyfs
     #   xblock
 fs-s3fs==1.1.1
     # via
     #   django-pyfs
+    #   openedx-django-pyfs
     #   xblock-sdk
 future==0.18.3
     # via
@@ -144,7 +143,7 @@ importlib-metadata==6.0.0
     #   twine
 importlib-resources==5.10.2
     # via keyring
-isort==5.11.4
+isort==5.12.0
     # via pylint
 jaraco-classes==3.2.3
     # via keyring
@@ -170,7 +169,7 @@ keyring==23.13.1
 lazy==1.5
     # via
     #   -r requirements/base.txt
-    #   xblock-sdk
+    #   xblock
 lazy-object-proxy==1.9.0
     # via astroid
 lxml==4.9.2
@@ -182,7 +181,9 @@ mako==1.2.4
     # via
     #   -r requirements/base.txt
     #   xblock-utils
-markupsafe==2.1.1
+markdown-it-py==2.1.0
+    # via rich
+markupsafe==2.1.2
     # via
     #   -r requirements/base.txt
     #   jinja2
@@ -190,6 +191,8 @@ markupsafe==2.1.1
     #   xblock
 mccabe==0.7.0
     # via pylint
+mdurl==0.1.2
+    # via markdown-it-py
 mock==5.0.1
     # via -r requirements/test.in
 more-itertools==9.0.0
@@ -200,7 +203,9 @@ newrelic==8.5.0
     #   edx-django-utils
 oauthlib==3.2.2
     # via -r requirements/base.txt
-openedx-filters==0.8.0
+openedx-django-pyfs==3.2.1
+    # via xblock
+openedx-filters==1.0.0
     # via -r requirements/base.txt
 pbr==5.11.1
     # via
@@ -220,7 +225,7 @@ pycparser==2.21
     # via
     #   -r requirements/base.txt
     #   cffi
-pycryptodomex==3.16.0
+pycryptodomex==3.17
     # via
     #   -r requirements/base.txt
     #   pyjwkest
@@ -260,7 +265,7 @@ python-dateutil==2.8.2
     #   arrow
     #   botocore
     #   xblock
-python-slugify==7.0.0
+python-slugify==8.0.0
     # via
     #   code-annotations
     #   cookiecutter
@@ -293,7 +298,7 @@ requests-toolbelt==0.10.1
     # via twine
 rfc3986==2.0.0
     # via twine
-rich==13.1.0
+rich==13.3.1
     # via twine
 s3transfer==0.6.0
     # via boto3
@@ -359,16 +364,16 @@ webob==1.8.7
     #   xblock-sdk
 wrapt==1.14.1
     # via astroid
-xblock==1.6.1
+xblock[django]==1.6.2
     # via
     #   -r requirements/base.txt
     #   xblock-sdk
     #   xblock-utils
-xblock-sdk==0.5.1
+xblock-sdk==0.5.4
     # via -r requirements/test.in
 xblock-utils==3.0.0
     # via -r requirements/base.txt
-zipp==3.11.0
+zipp==3.12.0
     # via
     #   importlib-metadata
     #   importlib-resources