Bush said the legislation that would have required the first US combat troops to be withdrawn from Iraq by October 1 with a goal of a complete pullout six months later, would have imposed impossible conditions on American generals in Iraq.
The bill "substitutes the opinions of politicians for the judgment of our military commanders", he said.
The president said setting a date for withdrawal would give al-Qaeda a haven in Iraq much like it had in Afghanistan before the September 11, 2001 attacks in the US, adding that fighters in Iraq were part of the network that wanted to attack the US again.
He vetoed the bill immediately on his return to the White House on Tuesday from a visit to MacDill Air Force Base in Florida, headquarters of the US Central Command, which oversees military operations in Iraq and the rest of the Middle East.
Harry Reid, the senate majority leader, said before Bush's veto that the president had "put our troops in the middle of a civil war".
"Reality on the ground proves what we all know: a change of course is needed."
Not giving up
Democratic leaders in the House of Representatives planned to hold a veto override vote on Wednesday, and while they do not have the votes to override his veto, they vow to keep fighting for a change in course.
|The veto comes on the fourth anniversary of |
Bush's "Mission Accomplished" speech [AP]
Nancy Pelosi, the house speaker, said: "The president wants a blank check. The congress is not going to give it to him."
Bush invited congressional leaders to the White House to reconcile differences.
Pelosi promised to work with Bush to find common ground, but said "there is a great distance between us right now".
Reid said after the veto: "If the president thinks that by vetoing this bill, he will stop us from working to change the direction of this war, he is mistaken."