It seems that 'factor_out' can not return the result correctly for the factors which only one term has. By the way, 'factor_in' works fine.
st:= A G B C D +E ;
factor_out(_, $ A $ );
Well spotted, I recently rewrote a lot of factor_out and didn't quite finish the part that dealt with the trivial cases... It's fixed now in github, please try again.