diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 28ed93d8e7..70984e56e5 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -4,7 +4,7 @@ default_language_version:
   python: python3
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v3.4.0
+    rev: v4.4.0
     hooks:
       - id: trailing-whitespace
       - id: mixed-line-ending
@@ -17,13 +17,18 @@ repos:
       - id: check-yaml
         files: .*\.(yaml|yml)$
         args: ['--unsafe']
+  - repo: https://github.com/PyCQA/bandit
+    rev: 1.7.5
+    hooks:
+      - id: bandit
+        args: ['-x', 'tests', '-s', 'B105,B106,B107,B401,B404,B603,B606,B607,B110,B605,B101']
   - repo: local
     hooks:
       - id: flake8
         name: flake8
         additional_dependencies:
-          - hacking>=2.0.0
-          - flake8-import-order>=0.13
+          - hacking>=6.0.1,<6.1.0
+          - flake8-import-order>=0.18.2,<0.19.0
         language: python
         entry: flake8
         files: '^.*\.py$'
diff --git a/tools/fast8.sh b/tools/fast8.sh
deleted file mode 100755
index 2b3e22abda..0000000000
--- a/tools/fast8.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-cd $(dirname "$0")/..
-CHANGED=$(git diff --name-only HEAD~1 | tr '\n' ' ')
-
-# Skip files that don't exist
-# (have been git rm'd)
-CHECK=""
-for FILE in $CHANGED; do
-    if [ -f "$FILE" ]; then
-        CHECK="$CHECK $FILE"
-    fi
-done
-
-diff -u --from-file /dev/null $CHECK | flake8 --diff
diff --git a/tox.ini b/tox.ini
index 3de7dd3804..9dad40f6e7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -21,22 +21,11 @@ deps =
 commands = stestr run {posargs}
 allowlist_externals = stestr
 
-[testenv:fast8]
-# Use same environment directory as pep8 env to save space and install time
-setenv =
-  VIRTUAL_ENV={envdir}
-envdir = {toxworkdir}/pep8
-commands =
-  {toxinidir}/tools/fast8.sh
-
 [testenv:pep8]
 deps =
-  hacking>=2.0.0
-  bandit!=1.6.0,>=1.1.0
-  flake8-import-order>=0.13 # LGPLv3
+  pre-commit
 commands =
-  flake8
-  bandit -r openstackclient -x tests -s B105,B106,B107,B401,B404,B603,B606,B607,B110,B605,B101
+  pre-commit run --all-files --show-diff-on-failure
 
 [testenv:bandit]
 # This command runs the bandit security linter against the openstackclient
@@ -76,9 +65,9 @@ commands =
 allowlist_externals = stestr
 
 [testenv:functional]
-setenv = 
+setenv =
     OS_TEST_PATH=./openstackclient/tests/functional
-passenv = 
+passenv =
     OS_*
 commands =
     stestr run {posargs}