Another thing I noticed is the help for the withlist --run option says in part:
If additional arguments are given at the end of the command line, they are passed as subsequent positional arguments to the callable. For additional help, see --details.
The additional arguments are not actually passed as subsequent positional arguments to the callable. They are passed as a single positional argument which is a tuple of the additional arguments.
--details is correct in its example showing
def change(mlist, args): mlist.display_name = args[0]
but the --run description makes me think it should be
def change(mlist, name): mlist.display_name = name