I agree in principle, but I also to need action commands when crossing boundaries in and out of the event system (e.g. to the user, or to an external provider.) Of course I still phrase them in the past tense:
PurchaseRequested { userId = ... }
PaymentRequestSentToStripe { userId = ... }
It really helps with debugging, especially if the user gets into some failed state (and the events tell you that they accidentally requested twice)
Nothing is worse than an event driven system polluted with action commands.