Right now the only option on disconnect is re-connect, then initialize. The initialize procedure is not perfectly reproducible, so you can easily end up with your zero moving a small but noticeable amount.
CM should determine if a program was running at the time of the disconnect, and then be a bit smarter about initialization.
On connection - Was CM running a program?
Y - Ask the user, was this an emergency stop or an unexpected disconnect?
E-Stop - re-initialize.
unexpected - Accept current position as accurate.