I'm sort of at a loss as to how to deal with this. When my 8-year-old does something "wrong" (including things that happen accidentally, like breaking something or knocking something over) he immediately punishes himself physically by doing things like bang his head against the wall or pinch his own arm hard. He will also destroy something he has made or likes, like a Lego set or some craft project, if it's nearby. He will fly into a rage if I try to prevent him from doing this.
He once, for instance, pulled a wagon over the foot of the little sister of a friend accidentally, and to punish himself he started running the wheel over his own foot. (She was fine.)
We have a pretty mellow household, I think, and he's usually a very easy kid. We have never done physical punishment. However, he gets very passionate about things he cares about (to the point that he can have a really hard time with people who don't share his feelings) and he is definitely a perfectionist. He has also in the past actually pushed or kicked kids who did things like be cruel to bugs while he was watching, and he has also gotten physical with friends over other issues for brief periods of time, but this seems to be tempering a bit with age; he has been making himself go to his room or elsewhere to be alone when he is upset instead. (He has had maybe 5 time outs in his entire life from me.)
He still gets REALLY angry, though, when he feels slighted or misunderstood, and I can tell it's taking everything he has to prevent himself from punching someone. (I admit that I feel like this myself sometimes, and it's typically over political or ethical subjects... ...he has heard me speak very passionately about various things)
I feel like he is wrestling with very big thoughts about Right and Wrong and hasn't quite found a way to cope with the feelings being "right" or "wrong" brings out. But what can I do about the self-punishing?? I'm actually a little worried sometimes that he will hurt himself banging his head against the wall. And I really don't want this to escalate and have him do something that ends up being really serious. Ideas??