Okay, the more I look at this, the more I think changing the behaviour will be an issue. Another example is, if mIRC does not save temporary variables to the variables file and a script issues /load -rv, for whatever reason, all temporary variables will cease to exist. There may be other side-effects that are difficult to foresee.

The only solution I can think of is to add a keyword to the variables file, just like "alias", "menu", and so on in remote scripts, that tells mIRC to unset a variable on a restart. So, we could use "unset %var" on a single line, which would appear in the variables list as a separate item to the %var definition. If mIRC sees this on a restart, it knows that it should unset the %var because it was a temporary variable.

This would also allow "unset -switches %var" where -switches could specify other behaviours, such as timing out only after a certain point in time, so you could exit/restart mIRC and the variable would be preserved until it is actually set to timeout.

As far as I can see, adding an "unset" keyword would be backwards compatible as older versions of mIRC would just ignore the line.