Remove from list is asking for the position in the list you want to remove so its asking for a number (integer). And you are giving it the value of the previous list item (which is a string) - so that is returning back the proxy. I think what you really want is this:
clear list(%list)
add list to list(%list,$list from text("1,2,3",","),"Delete","Global")
loop($list total(%list)) {
alert("using proxy {$list item(%list,0)}")
remove from list(%list,0)
}