I've seen something similar. It's hard to get Claude to stop committing by itself after granting it the permission to do so once.

Yep, I've discovered the same. Approve once in a session, and from then on you're rolling the dice if it will self-approve a change and commit/push (or whatever you originally asked it to do) for as long as it stays in context.