When you use winCVs you are all ready logged into the cvs server that is why the command works. When you use the cvs tags in ant you are not logged into cvs Here is a line from one of my build files and it works just fine. under ant 1.5
<cvs command="checkout -r${cvs.tag}" package="xxx" dest="${checkout.dir}" cvsroot="${cvs.root}"
passfile="${cvs.passfile}/.cvspass" />
cvs.tag the tag number you want to get
checkout.dir the root location location you want to put it Ie. c:\work
cvs.root the root of the cvs server Ie.
server:${cvs.username}@cvsserver:/var/cvsrepos"
cvs.passfile is the location of the .cvspass file fore the user you are going to use. Ie C:\
cvs.username the user you want to use.
you need to generate a .cvspass file from cvs for the cvs user you want to use with the build.