I removed an example that confused a customer entitlement with an actual request. I then made two steps explicit: compare options when the customer asks for the cheapest, and say a change has not yet been made before asking for confirmation.
three prompt lines as the agent sees them
The final prompt is in English. The highlighted lines address the three failure types.
Serve what they asked for, and ONLY that: something the <policy> permits, or that they are entitled to - a free checked bag, a compensation, an upgrade they qualify for - is not something they asked for. An entitlement is not an instruction. If they did not ask for it, do not add it and do not offer it.
When the customer DESCRIBES what they want instead of naming it - "the cheapest", "anywhere on the west coast", "either airport" - that description is a search, not an instruction to take the first thing that fits. Search every combination the description allows, list the candidates you found with the number that decides between them, and choose by comparing those numbers. Write the list out before you choose.
Open that message with exactly this line, on its own:
I have not made any of these changes yet - I need your go-ahead first.
It matters because this message reads like a receipt, and a customer who thinks the work is already done will end the call before you can do it. Nothing is done until you call the tools.
Excerpts from patches/tau2-custom-agent.patch, sections PROCEDURE and CONFIRMATION_FORMAT.
Before each test, I noted which tasks I expected to change. Later runs let me compare those predictions with observed behavior.