Lots of great advice here, I'll add my two cents...
One thing that sticks out a bit, for me, is the teaching of 'how' he 'should' be acting and feeling. I don't want this to sound like an attack- I was this mother! I didn't realize that my teaching was actually invalidating the personhood of my daughter. She's 16 now and we've had a rough few years. She was finally able to state her feelings on the matter and I'm so glad she did.
At 6, your son is learning how to navigate this big world... he's going to test to see what works for him. He's going to say things and watch reactions. He's experimenting! And sometimes "out of the mouthes of babes" is a great get-away statement, lol.
Every situation is different, and every child is different- but one thing my daughter taught me is that my telling her who she 'should' be is a recipe for disaster.
Start differentiating his feelings from his actions. How he feels is always acceptable- acknowledge that. How he acts is another matter- and that's what gets him in trouble.
Sometimes silence can work wonders. If he's rude to you or your partner, maybe try this? Leave the room (or leave his presence) when he acts like this- and don't feed into the negative attention. I tend to talk- a lot-and my kids eye's start to glaze over and I sound like a Charlie Brown parent, I'm sure! But when I become silent or leave the room, my emotions don't add to the cycle my kids were used to knowing.
I love that you give to homeless and the less fortunate- but do it for yourself and not to teach your child a good life-lesson. At 6, he's most likely not making a connection about giving to others. The smallest gestures of giving to others that we know can be great teaching moments- especially if we don't call them out as big life-lesson maneuvers.