Security Considerations
-----------------------
-Unlike some other popen functions, this implementation will never
-implicitly call a system shell. This means that all characters,
+Unlike some other popen functions, this library will not
+implicitly choose to call a system shell. This means that all characters,
including shell metacharacters, can safely be passed to child processes.
If the shell is invoked explicitly, via ``shell=True``, it is the application's
responsibility to ensure that all whitespace and metacharacters are
used to properly escape whitespace and shell metacharacters in strings
that are going to be used to construct shell commands.
+On Windows, batch files (:file:`*.bat` or :file:`*.cmd`) may be launched by the
+operating system in a system shell regardless of the arguments passed to this
+library. This could result in arguments being parsed according to shell rules,
+but without any escaping added by Python. If you are intentionally launching a
+batch file with arguments from untrusted sources, consider passing
+``shell=True`` to allow Python to escape special characters. See :gh:`114539`
+for additional discussion.
+
Popen Objects
-------------