diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for pms-domain-model
 
+## 0.1.0.0 -- 2025-09-07
+
+* Support invalidChars configs.
+
 ## 0.0.9.0 -- 2025-08-17
 
 * Fixed proc-message.
diff --git a/pms-domain-model.cabal b/pms-domain-model.cabal
--- a/pms-domain-model.cabal
+++ b/pms-domain-model.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.0.9.0
+version:            0.1.0.0
 
 -- A short (one-line) description of the package.
 synopsis:           pms-domain-model
diff --git a/src/PMS/Domain/Model/DM/Type.hs b/src/PMS/Domain/Model/DM/Type.hs
--- a/src/PMS/Domain/Model/DM/Type.hs
+++ b/src/PMS/Domain/Model/DM/Type.hs
@@ -1464,6 +1464,8 @@
   , _socketQueueDomainData       :: TQueue SocketCommand
   , _serialQueueDomainData       :: TQueue SerialCommand
   , _promptsDomainData           :: [String]
+  , _invalidCharsDomainData      :: [String]
+  , _invalidCmdsDomainData       :: [String]
   }
 
 makeLenses ''DomainData
@@ -1504,6 +1506,8 @@
          , _socketQueueDomainData       = socketQ
          , _serialQueueDomainData       = serialQ
          , _promptsDomainData           = def
+         , _invalidCharsDomainData      = def
+         , _invalidCmdsDomainData       = def
          }
 
 -- |
diff --git a/src/PMS/Domain/Model/DS/Utility.hs b/src/PMS/Domain/Model/DS/Utility.hs
--- a/src/PMS/Domain/Model/DS/Utility.hs
+++ b/src/PMS/Domain/Model/DS/Utility.hs
@@ -79,38 +79,38 @@
 -- |
 --  [ ";", "&&", "|", "$", "`", "<", ">", "\\", "\"", "..", "/"]
 --
-invalidChars :: [T.Text]
-invalidChars = [ "&&", "||", "|", "..", "reboot", "shutdown", "restart", "kill"]
+-- invalidChars :: [String]
+-- invalidChars = [ "&&", "||", "..", "reboot", "shutdown", "restart", "kill"]
 
 -- |
 --
-invalidCmds :: [String]
-invalidCmds = [
-    "del", "erase", "rd", "rmdir", "format"
-  , "shutdown", "restart", "taskkill"
-  , "rm", "mv", "dd", "chmod", "chown"
-  , "reboot", "kill", "nc", "sudo", "su"
-  ]
+-- invalidCmds :: [String]
+-- invalidCmds = [
+--     "del", "erase", "rd", "rmdir", "format"
+--   , "shutdown", "restart", "taskkill"
+--   , "rm", "mv", "dd", "chmod", "chown"
+--   , "reboot", "kill", "nc", "sudo", "su"
+--   ]
 
 -- |
 --
-validateMessage :: String -> IO String
-validateMessage cmd = case words cmd of
+validateMessage :: [String] ->  [String] -> String -> IO String
+validateMessage invalidChars invalidCmds cmd = case words cmd of
   [] -> return cmd
   (c : args) -> do
-    _ <- validateCommand c
-    _ <- validateArgs args
+    _ <- validateCommand invalidChars invalidCmds c
+    _ <- validateArgs invalidChars args
     return cmd
 
 -- |
 --
-validateCommand :: String -> IO String
-validateCommand cmd = do
+validateCommand :: [String] -> [String] -> String -> IO String
+validateCommand invalidChars invalidCmds cmd = do
   let tcmd = T.pack cmd
 
   mapM_ (\seqStr ->
-          when (seqStr `T.isInfixOf` tcmd) $
-            E.throwString $ "Command contains forbidden sequence: " ++ T.unpack seqStr
+          when (T.pack seqStr `T.isInfixOf` tcmd) $
+            E.throwString $ "Command contains forbidden sequence: " ++ seqStr
         ) invalidChars
 
   when (cmd `elem` invalidCmds) $
@@ -127,15 +127,15 @@
 
 -- |
 --
-validateArgs :: [String] -> IO [String]
-validateArgs = mapM validateArg
+validateArgs :: [String] -> [String] -> IO [String]
+validateArgs invalidChars = mapM (validateArg invalidChars)
 
 -- |
 --
-validateArg :: String -> IO String
-validateArg arg = do
+validateArg :: [String] -> String -> IO String
+validateArg invalidChars arg = do
   let tArg = T.pack arg
-  when (any (`T.isInfixOf` tArg) invalidChars) $
+  when (any (\s -> T.pack s `T.isInfixOf` tArg) invalidChars) $
     E.throwString $ "Argument contains forbidden sequences: " ++ arg
   return arg
 
