I'll bet the actual colorizing has nothing to do with the problem here, but rather the fact that the script performs a "haltdef" to stop the default output, thereby also stopping the event before it reaches the agent.
If you try the following events (in a new remote file):
on *:TEXT:*:?:echo -a $nick said $1- in private
and then change it to:
on ^*:TEXT:*:?:echo -a $nick said $1- in private | haltdef
You'll notice that the first will trigger the agent and the second will not.
I have not tested this in versions prior to 6.3, perhaps this is the behaviour that changed? I'm not sure if this was intentional, but I can see the reasoning for it... If so, you can add the command
/speak $1- to your script to make the agent work as it used to:
on ^*:TEXT:*:?:<the original script is here> | speak $nick said: $1- in private.
You'll have to find this original event in your script, or you can add the following into a new file without having to edit your original script:
on *:TEXT:*:?:speak $nick said: $1- in private.
Of course, this is a little awkward. Perhaps mIRC should use pre 6.3 behaviour for this.