There's a problem with non-mutating messages in Polkadot. The problem is that on the contracts pallet (runtime) level this isn't enforced, so users have to trust the client to not submit an extrinsic for messages considered immutable.
There are "read only" messages in contracts. They'll have the mutates flag set to false in the metadata.
Solution
For those messages, the -x/--execute should lead to an error instead.
See related comment