(CNN) -- The Senate on Thursday passed a giant defense bill that includes a new policy for detaining and trying suspected al Qaeda terrorists -- a policy that attracted controversy during the debate and may draw a presidential veto.
The defense authorization bill passed by a vote of 93-7.
In keeping with budget cuts across the government, the $662 billion bill shrinks Pentagon spending by $43 billion from last year. It includes funding for the wars in Iraq and Afghanistan and sets policies for the various weapons systems and personnel programs at the Defense Department.
Senate debate on the detainee matter was at times volatile and emotional.
After years of struggling with issues of who should investigate, detain and try suspected terrorists -- civilian authorities and courts or the military and its tribunal system -- Armed Services Committee Chair Carl Levin, D-Michigan, and ranking Republican John McCain of Arizona reached a long-sought compromise to codify the process.
However, critics complained the deal was weighted toward the military because it required any suspected al Qaeda terrorists, even those captured inside the U.S., to be held potentially indefinitely by the military. That concerned the White House and many lawmakers who think the responsibility belongs, in part, to law enforcement agencies and the federal courts and warned that Americans could possibly be detained indefinitely by the military.
Levin and McCain denied their bill would allow for the indefinite detention of U.S. citizens.
"This country is special because we have certain values, and due process of law is one of those values," Intelligence Committee Chairwoman Dianne Feinstein, D-California, argued on the Senate floor. "I object to holding American citizens without trial. I do not believe that makes us more safe."
"You have people on the left who hate saying 'the war on terror,'" responded Sen. Lindsey Graham, R-South Carolina. "They would never ever use the military and always insist the law enforcement be used because they don't buy into the idea that we're at war. They want to criminalize the war."
Senators ultimately reached an agreement to amend the bill to make clear it's not the bill's intent to allow for the indefinite detention of U.S. citizens and others legally residing in the country.
"It would provide the assurance that we are not adversely affecting the rights of American citizens in this language," Levin said while expressing support for the compromise.
"It supports present law," Feinstein added.
Senators from both parties also challenged the Obama administration's policies toward Iran, unanimously approving an amendment insisting on tough new sanctions against Iran's Central Bank and entities that do business with it. Senators want to punish Iran over its pursuit of a nuclear weapons programs and the recent storming of the British Embassy in Tehran.
The administration complained the Senate amendment would make it difficult for the White House to manage a delicate foreign policy matter.
Also Thursday, the Senate approved on a voice vote a Democratic amendment requiring President Barack Obama to develop a plan to expedite the troop withdrawal from Afghanistan, which is scheduled to be completed in 2014.
While it's not clear the amendment will force any actual acceleration of the withdrawal, Sen. Jeff Merkley, D-Oregon, said the Senate vote was a "message" to the president that U.S. troops have successfully performed their mission of stamping out al Qaeda and the 9-11 terrorists and "it's time to bring our men and women home."
The measure still needs to go to conference for reconciliation with the House version of the bill.