support agent loop: keeps asking for info the user already provided
A guide to breaking support-agent loops that re-ask for provided info, in the business-apis-integrations category: context extraction, collected-field memory, and stall breaking. Use when an agent asks for information the user already gave, or when conversations stall on repeated questions. Not for building the agent, prompt engineering basics, or conversation design.
TL;DR
An agent that re-asks for provided info is not reading its own conversation: extraction failed, or the collected data was not stored where the next turn looks. Extract structured fields from every user message into a persistent slot store, check the store before asking anything, and break the loop after two repeats by summarizing what is known and asking only for what is missing. Never ask for the same field three times.
The query
support agent loop: keeps asking for info the user already providedUse this when
- The agent re-asks for given information
- Conversations stall on repeated questions
- Users complain "I already told you"
- You are operating a support agent
Not for
- Building the agent from scratch
- General prompt engineering
- Designing conversation flows
- Intent classification
Steps
1. Extract fields into a persistent slot store every turn
After each user message, run extraction for the fields the task needs and write them to a store that survives across turns. The store is the agent's memory; without it, every turn starts blank.
Expected output: slots persisted and visible across turns.
2. Check the store before asking anything
Before the agent asks a question, it must look up whether the answer is already in the store. This single rule eliminates most re-ask loops. Make it structural, not advisory.
Expected output: no question asked for a filled slot.
3. Confirm rather than re-ask on uncertainty
If extraction is unsure ("is 90210 the zip or the order number?"), confirm: "Just to confirm, 90210 is the zip?" Confirmation beats re-asking the open question, and it shows the user their info was heard.
Expected output: uncertain extractions confirmed, not re-asked.
4. Break the loop after two repeats
If the same field is asked twice, stop: summarize everything collected so far, name exactly what is still missing, and offer alternatives (a human, a different way to provide it). Two repeats is the cap.
Expected output: stall broken with a summary and alternatives.
5. Log re-asks as extraction failures
Every re-ask is a labeled example: the user message plus the field the extractor missed. Collect them and improve extraction patterns. Re-ask rate is the extraction quality metric.
Expected output: a re-ask log feeding extraction improvements.
Template: the checklist
Re-ask loop:
[ ] Slot store persisted across turns, extracted every message
[ ] Store checked before any question is asked
[ ] Uncertain extractions confirmed, not re-asked
[ ] Two-repeat cap with summary and alternatives
[ ] Re-asks logged as extraction training dataVariant phrasings
chatbot keeps asking same question
Steps 1 and 2. Store the answer, check before asking.
agent ignoring user provided info
Steps 1 and 3. Extract better, confirm when unsure.
i already told you support bot
Steps 2 and 4. The check plus the loop breaker.
Why it happens
Agents process one turn at a time, and extraction is lossy: the model reads the message, answers, and moves on without filing what it learned. The next turn re-derives from a summary that dropped the detail. The slot store fixes the architecture: extraction writes to durable memory, and questions read from it.
Edge cases
- The user corrects earlier info: updates must overwrite the slot, and the agent should acknowledge the change.
- Conflicting info across turns: flag the conflict explicitly rather than silently keeping the first or last.
- Multi-field messages: extract all fields present, not just the one the current question asked about.
- The user answers a different question: extract what they gave, then re-ask only what is still missing.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_KO4pZZCWcnUlivHtLlQGSA