Hi,
I think that garbage collection can not do its job because this action instance that assigned itself to that delegate is therefore in use and can not be destroyed and released from memory, therefore the ghost bug of an action that seems not there anymore.
I think you are approching the wrong way, you can't expect a behavior to carry on having an effect if it's not "active" any more, hence if your character keep changing color and you want to overide this, you have a problem, it has to be ALWAYS overriding. So you need one fsm on each character each responsible for overriding its own color, and your random system would simply send a global event to the character to tell it its color, that's all,
bye,
Jean