I explicitly forbid Claude to make any changes to Git state in my global CLAUDE.md, but every so often if I let it perform a task in Auto mode, after it finishes it will remorsefully confess to having used git checkout to test a change. I suppose that its RLHF training has taught it that asking forgiveness later is sometimes a useful workaround for annoying restrictions.
I noticed it using git more too and it was frustrating me bc I view that as stepping too far. It does seem something has changed.
I'm glad it's not just me - the failure mode you and the parent discuss is a huge part of why I just don't use Claude anymore.
I've never had this issue with GLM or DeepSeek.