I actually had an idea a while ago for handling character flaws in a role-playing game. And since I don't know if I'm likely to ever go about implementing it, here it is:
I envision the protagonist having a major character flaw: say, lust for power, or a tendency to knuckle under to authority, or sadism. The character has opportunities to exercise that flaw- to go with the examples, say, to steal a powerful magic item from an ally who probably needs it more than the protagonist, or obey a questionable order from a superior, or belittle someone in front of an audience they want to respect them. The player can forgo the option to give in to their flaw, but only to a point. There's a meter- possibly hidden- for the pressure the character is under, and that pressure rises each time they don't give in. Eventually, they will give in, possibly at the worst possible time, without it being in the player's control.
However, the longer the player lets the character go without giving in, the more "space" in the meter when it returns to "zero", so the longer they can go without involuntarily breaking in the future (and possibly conversely, if the player "gives in" every chance they get, the meter gets shorter until the flaw becomes an out-and-out addiction.) Eventually, the character might be able to escape their flaw altogether.