An anti-hero is a protagonist who lacks some of the conventional attributes of a traditional hero — like courage or morality. While their actions are ultimately noble, they don’t always act for the right reasons.
For instance, they might save someone from a dangerous situation because it furthers their interests, not because they actually care about helping others.