Even better than modifying xclaim would be extending xreadgroup to include an idle setting, and if there are any pending messages which have been idle for more than this period, they are atomically claimed and returned. This would massively simplify the client logic and would actually decrease server load, due to the streamlined logic and less back-and-forthing.
I'm less sure about bulk ACKing of messages. An asynchronous client should not be adversely affected by sending acks, and it reduces the window for accidentally processing messages multiple times. But if you are processing large numbers of messages at a time, I can see why you may want to avoid ACKing each one. In fact, assuming consumer names are unique, you could safely use a command to truncate your pending queue rather than needing to provide a message ID argument.