outscript=VALUE:SCRIPT[:FLAGS] only reads the flags when there are exactly three fields (bitcoin-tx.cpp:482). With a trailing or extra : the flags are silently dropped:
$ bitcoin-tx -create outscript=0:OP_DROP:S nversion=1
010000000001000000000000000017a91471ed53322d470bb96657deb786b94f97dd46fb158700000000 # P2SH, as requested
$ bitcoin-tx -create outscript=0:OP_DROP:S: nversion=1
0100000000010000000000000000017500000000 # bare OP_DROP output, exit code 0
So a typo gives a transaction paying to the raw script instead of the P2SH/P2WSH wrapper, with no error. outpubkey and outaddr already reject extra fields with "TX output missing or too many separators".
This rejects outscript arguments with more than three fields, and in=TXID:VOUT[:SEQUENCE_NUMBER] arguments with more than three fields (which were accepted the same way), both with a general "Invalid format, expected ..." error. bitcoin-util-test.json gets a case for each; they fail on master (exit code 0) and pass with the fix, and tool_utils.py passes.
AI tools were used to help find this issue and to prepare the patch and test.