Separate approval from execution
My first rule: the agent prepares the order, a human approves the payment. It sounds cumbersome, and in practice it's ten seconds of approval in chat. What you gain is that there's no scenario where one morning you discover a charge nobody asked for.
Example: the agent sends "Found the cable for 89 shekels including shipping, approve?". The answer "yes" is the approval. No "yes", no charge.
A monetary cap, not a feeling of safety
A solution that works is a dedicated card or a separate allowance with a small monthly cap. If the agent gets it wrong, the maximum damage is the cap. On our team the same principle applies to paid dev tools: every new integration starts with a limited budget, and expands only after a month of clean usage.
A number worth keeping in mind: a monthly cap of 500 shekels costs less than one hour of a team member's work, and it turns the agent's most expensive mistake into something you can sign off calmly.
A log that actually gets read
Every charge the agent makes goes into one list: what was bought, how much, when, and which request stood behind it. Once a week, five minutes of reading. Just like I found out my meeting recordings had stopped only after a whole week, small charges can pile up unnoticed. The weekly digest catches that.
What not to do
Don't give the agent the business's main card. Don't rely on "it promised to ask". And don't connect a payment method without checking how to cancel: before the first connection, verify you can freeze the card or close the allowance in one click.