When you use TellVox, the command with the TellVox action does not complete its execution until the emulated command completes its execution.
So command 1 calls command 2. Command 1 is still executing, while waiting for command 2 to complete. Command 2, when you confirm it, calls command 3. Now command 2 is waiting for command 3, and command 1 is waiting for command 2. But only one command can be the command that needs confirmation, so an error occurs.
I am not sure if this is something I can fix in the program, but there are at least two ways to avoid the problem. Instead of using TellVox you can use SetEventTimer to call the next command. This way the first command finishes executing. Another option is to use ++ at the beginning of the command names that require confirmation. Commands that start with ++ do not wait for actions to complete before going to the next action. Avoid using ++ unless you need it because it can cause some unexpected behaviour in some cases.
Using event timers:
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.4.5-->
<commandGroup open="True" name="Test 2+ Confirms" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="126" name="Start Command 1" enabled="true" alwaysOn="False" confirm="True" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Confirm Command 1 OK</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.SetEventTimer</cmdType>
<params>
<param>1</param>
<param>cmd2</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Start Command 1</phrase>
</command>
<command id="137" name="Confirm Start Command 1" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Confirm Command 1</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>Need confirm. Say Yes or No</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<event>Confirm.Start Command 1</event>
</command>
<command id="146" name="Start Command 2" enabled="true" alwaysOn="False" confirm="True" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Confirm Command 2 OK</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.SetEventTimer</cmdType>
<params>
<param>1</param>
<param>cmd3</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<event>cmd2</event>
</command>
<command id="174" name="Confirm Start Command 2" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Confirm Command 2</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>Need confirm. Say Yes or No</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<event>Confirm.Start Command 2</event>
</command>
<command id="120" name="Start Command 3" enabled="true" alwaysOn="False" confirm="True" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Confirm Command 3 OK</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Start Command 3</phrase>
<event>cmd3</event>
</command>
<command id="186" name="Confirm Start Command 3" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Confirm Command 3</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>Need confirm. Say Yes or No</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<event>Confirm.Start Command 3</event>
</command>
</commandGroup>
I will investigate the other bug but I think you are right, it probably does not cause any problems. I think VC is trying to hide the window which was never opened. The error does not cause any problems except to cause confusion for the user.