The values are saved with the profile and are only persisted when the profile is saved (or if the application exits and the variables have not been persisted). They might even save if you change profiles, but I'd need to either test that or code dive to confirm. Persisting a variable EVERY time it is set to a new value might cause problems (overhead of checking whether or not a variable needs to be persisted, persisting the value in an asynchronous environment and so on) so I narrowed it down to very specific points. If you need a finer level of control, you will want to build a plugin. Sorry about that!