My son (4 years and 3 months) is generally well-behaved. There is no trouble in kindergarten, no trouble at grandma's place and not even much trouble at home with his dad. He knows the rules and follows them - as long as I (his mom) are not around.
I am the most important person to him by far. He likes kindergarten, he likes grandma and dad, but he still would rather stay with me all the time if he was allowed to (he told me that directly). When I am not around, he calls for me every now and then, e.g. when he stayed overnight at grandma's place for the first time and it was time to sleep (although he had a great day and she did all she could to make him comfortable), or when he is alone at home with dad and bumps his head during play.
We often have the following scenario: He is in some situation (e.g. kindergarten, home with dad), immersed in some activity or doing what the adults tell him to (like washing hands after eating). Then I show up. The he notices me. Then tears build up in his eyes, he cries, he stops doing what he was doing or about to do. Then he complains about me showing up too early (or sometimes too late, but it is never right). And from this moment on, he does not listen anymore. It does not matter if I gently ask him why he cries, or if he is sad to see me, or happy to see me, or tell him that he can cry and it is ok, or if I tell him there is no need to cry, or say nothing at all. If I ask, he does not answer. If I try to touch him, he runs away. Only if I threaten him with punishment or removal of something nice (like: "no ice cream for crying children"), he even attempts to stop crying*. Every command I give him is either ignored, answered with "no"/"I don't want to", more crying, debating or lying about it ("in kindergarten we can play after lunch, we don't have to go sleep" - although I know it is not true). It does not help to go through the course of the day together before I go - even if we do that and he agrees that he will do X when Y, he just refuses to do X after Y when I am there.
*When I threaten him with punishment or removal of something nice, he not only attempts to behave but often succeeds quickly: He stops crying in less than a minute and is even responsive as he was with the other adults before me showing up. So I learned: Being nice does not help at all (seems to make it worse!), being strict often makes him snap out of it. But if it does not succeed, I'd say this is around 30% of the time, he goes on misbehaving with the added "bonus" of screaming annoyingly (this is no sad crying, this is angry screaming).
I feel that we have gotten ourselves in a vicious cycle: The only way (that I found) to get him back to behaving at least a bit is to threaten him with some punishment, or to give him a timeout (alone in his room). But this is hard on him psychologically, I assume this gives him rejection feelings and cements his misbehaviour.
What can I do to get out of that vicious cycle?
And why does he behave that way?
Note that I do not have much time at the kindergarten - I pick him up shortly before kindergarten closes (no, I can't come earlier, I have to earn money to pay the bills), so I NEED him to behave then. Picking him up from grandma or coming back home when he is already there is a different story; here I can take time.