The FX2 allowed you to reprogram the device even when a user firmware was on it, using the same vendor request used to program it in the first place.
It appears that the FX3 gives all control over EP0 to the firmware, so once a user firmware is loaded (either by I2C or by USB), replacing that firmware becomes impossible without changing the contents of I2C (for I2C boot) or cold resetting (for USB boot).
Is there some way to give control of EP0 (or even all of the FX3) back to the built-in firmware so that new firmware can be installed without having to repeatedly disconnect and reconnect?
FX3 does not handle A0 vendor request similar to FX2LP in this case. If on the fly update is needed then we should be able to implement a custom way to achieve it. Please create a tech support case (MyAccount->MyCases) so that this can be discussed further.