diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for pms-infra-socket
 
+## 0.0.6.0 -- 2025-09-07
+
+* Support invalidChars configs.
+
 ## 0.0.5.0 -- 2025-08-17
 
 * Fixed proc-message.
diff --git a/pms-infra-socket.cabal b/pms-infra-socket.cabal
--- a/pms-infra-socket.cabal
+++ b/pms-infra-socket.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.0.5.0
+version:            0.0.6.0
 
 -- A short (one-line) description of the package.
 synopsis:           pms-infra-socket
diff --git a/src/PMS/Infra/Socket/DS/Core.hs b/src/PMS/Infra/Socket/DS/Core.hs
--- a/src/PMS/Infra/Socket/DS/Core.hs
+++ b/src/PMS/Infra/Socket/DS/Core.hs
@@ -322,13 +322,15 @@
       tout = DM._TIMEOUT_MICROSEC
   prompts <- view DM.promptsDomainData <$> lift ask
   resQ <- view DM.responseQueueDomainData <$> lift ask
+  invalidChars <- view DM.invalidCharsDomainData <$> lift ask
+  invalidCmds <- view DM.invalidCmdsDomainData <$> lift ask
   socketTMVar <- view socketAppData <$> ask
   lockTMVar <- view lockAppData <$> ask
   argsDat <- liftEither $ eitherDecode $ argsBS
   let args = argsDat^.argumentsSocketStringToolParams
 
   $logDebugS DM._LOGTAG $ T.pack $ "genSocketMessageTask: args. " ++ args
-  return $ socketMessageTask cmdData resQ socketTMVar lockTMVar args prompts tout
+  return $ socketMessageTask cmdData resQ socketTMVar lockTMVar args prompts tout invalidChars invalidCmds
 
 -- |
 --
@@ -339,8 +341,10 @@
                 -> String  -- arguments line
                 -> [String]  -- prompt list
                 -> Int       -- timeout microsec
+                -> [String]  -- invalidChars
+                -> [String]  -- invalidCmds
                 -> IOTask ()
-socketMessageTask cmdDat resQ socketTMVar lockTMVar args prompts tout = flip E.catchAny errHdl $ do
+socketMessageTask cmdDat resQ socketTMVar lockTMVar args prompts tout invalidChars invalidCmds = flip E.catchAny errHdl $ do
   hPutStrLn stderr $ "[INFO] PMS.Infra.Socket.DS.Core.socketMessageTask run. " ++ args
     
   STM.atomically (STM.readTMVar socketTMVar) >>= \case
@@ -361,7 +365,7 @@
     go :: Socket -> IO ()
     go sock = do
 
-      msg <- DM.validateMessage args
+      msg <- DM.validateMessage invalidChars invalidCmds args
       let cmd = TE.encodeUtf8 $ T.pack $ msg ++ DM._CRLF
 
       hPutStrLn stderr $ "[INFO] PMS.Infra.Socket.DS.Core.socketMessageTask writeSocket : " ++ BS8.unpack cmd
