Repetition Is a Red Flag: How Looping Conversations Kill AI Retention
When someone has to repeat themselves in a human conversation, something broke down. The other person wasn’t listening. The explanation was confusing. Something got lost in translation. You don’t think “oh, they must be clarifying.” You think “they didn’t hear me.”
The same exact dynamic plays out in your AI product. And most teams are completely ignoring it.
Message repetition (when a user sends a semantically similar message for the second or third time in a conversation) is not a normal part of interaction. Its a signal that your AI failed. The user already asked. The AI didn’t handle it. And now they’re trying again, with different words, hoping something clicks.
What happens next almost never ends well.
We track this pattern across millions of agent conversations on Agnost, and the data is pretty unambiguous: conversations with repetition patterns resolve at dramatically lower rates, and users who experience multiple repetition events in their first week retain at significantly lower 30-day rates than users who don’t. This isnt a marginal effect. Its one of the strongest leading churn indicators we’ve found. And almost no teams are watching for it.

^ your product dashboard while users silently loop and churn
What repetition actually signals (hint: it’s not clarification)
Here’s the distinction that matters, and most teams get this wrong.
Clarification is healthy. A user sends a message, gets a response, and then adds new information that sharpens their question. “Can you help me write a cover letter?” followed by “actually make it more casual and about 150 words shorter”, that’s clarification. The second message moves the conversation forward. New information entered the exchange.
Repetition is different. Semantically, the second message says the same thing as the first. Different words, same intent. The user isn’t building on the AI’s response, they’re trying to get through to it. “How do I cancel my subscription?” followed by “I want to stop my account and not be billed again”. Same intent, rephrased. The AI didn’t resolve it the first time.
The technical test is simple: if you embed both messages and check cosine similarity, clarification messages will have low-to-moderate similarity to the original. Repetition events will cluster above 0.8. That threshold is your signal.
There are two types worth tracking separately.
Immediate repetition happens within a single session. User asks something at turn 3, AI misses it, user rephrases at turn 5. This is visible in session transcripts and happens in real time. Its the cleaner signal because the causal chain is right there: the AI’s response was inadequate enough that the user tried again immediately.
Distributed repetition is harder to catch but arguably more damaging. The user asks the same question in their Tuesday session. Gets a bad or incomplete answer. Comes back Thursday and asks it again with slightly different phrasing, hoping this time is different. This pattern is invisible if you’re only looking at individual sessions. It only shows up when you look at conversation history at the user level across sessions. And when you find it, it almost always means the AI has a structural failure on a specific intent that’s never been fixed.
The loop mechanics, step by step
Here’s how a looping conversation actually unfolds in practice, because it’s important to understand that this isn’t always obvious in a transcript.
User asks something. AI gives a technically coherent response that doesn’t quite hit the mark. User rephrases. AI gives a slightly different response, still missing the actual intent, but now with more confident language. User tries one more time. AI has enough context to generate something that sounds like a comprehensive answer but is essentially a confident hallucination layered on top of the original miss. User gives up.
The whole thing can look like a normal, productive conversation if you’re only counting turns. The session went eight turns deep. That’s “engagement,” right?
It’s not. It’s a user who tried four different ways to get something resolved, couldn’t, and left.
This pattern shows up consistently in a few specific contexts.
Customer support bots handling edge cases are probably the most common culprit. The AI is great at the top 20 intents and genuinely terrible at anything outside that set. A user with an edge case will rephrase two, three, four times before either escalating to a human or walking away. And if there’s no human escalation path, they just walk away.
AI coding assistants on complex or niche problems hit this too. The model understands common frameworks and popular libraries fine. But if you’re working with an obscure library, a very specific architecture constraint, or a gnarly edge case in a less-documented API, you’ll often get responses that technically address the question but don’t actually solve the problem. So you rephrase. And the model rephrases its answer back. And you’re in the loop.
AI companions might have the most insidious version of this. When users try to establish relationship context, “remember I’m anxious about my job situation” or “I’ve been dealing with this thing with my sister”, and the AI acknowledges it without actually retaining or acting on it, users will revisit the same emotional territory over and over. Not because they want to repeat themselves. Because the acknowledgment never translated into understanding, and they’re still trying to feel heard.

^ users on their third rephrase trying to get a support bot to understand a perfectly normal request
What the data actually shows
Across the products we track at Agnost, the pattern is consistent enough that we’ve started treating repetition rate as a first-order health metric alongside things like intent resolution rate and session depth.
Conversations with two or more repetition events resolve successfully at less than half the rate of conversations without any repetition. That’s not surprising if you think about it. If the user had to rephrase twice, the AI clearly had trouble with the intent. But the magnitude matters. It’s not slightly worse. It’s dramatically worse.
Users who experience three or more repetition events in their first week retain at meaningfully lower 30-day rates. That’s the number that should get a PM’s attention. A bad first-week experience is hard to recover from in any product. In conversational AI, where the trust model depends on the AI demonstrating that it understands you, a first week full of talking-to-a-wall moments is almost impossible to recover from. The user updates their mental model to “this doesn’t get me” and they don’t come back.
In companion products specifically, the “circular depth” pattern (returning to the same emotional topic repeatedly without any sense of resolution or deeper understanding) is one of the most reliable churn predictors we see. Character.AI’s memory problems have been widely documented by users who describe exactly this experience: investing in a relationship context, having it forgotten or ignored, reinvesting, same result. Memory failure and repetition patterns are the same phenomenon viewed from different angles.
Three specific patterns to watch
Not all repetition is identical. After looking at this across a lot of conversation data, three patterns are worth calling out by name because they have different root causes and different fixes.
The Triple Rephrase. Same intent, three different phrasings, all within a single session. This one almost always ends in abandonment or escalation. By the third rephrase, the user has already decided the AI doesn’t understand them. They’re just confirming it. When you see this pattern in your session traces, the issue is almost always intent recognition. The model isnt classifying the user’s intent correctly, and no amount of rephrasing by the user is going to fix that. It needs to be fixed on your end.
The Weekly Groundhog Day. User comes back week after week and asks some variation of the same thing because it was never properly resolved. This is the distributed repetition pattern described earlier. You won’t see it by looking at individual sessions. You’ll see it when you look at user-level conversation history and track what intents each user has engaged with across sessions. If the same user is hitting the same intent category three sessions in a row without apparent resolution, that’s a failure that keeps compounding. And you’d never know without that cross-session view.
The Context Reset. User has to re-explain their situation, preferences, or background repeatedly because the AI doesn’t retain it. “I mentioned I’m a junior dev who just started with React”, turn 2 of session one. Same explanation again, slightly different wording, turn 3 of session four. This is especially damaging in companions, tutors, and any product where personalization is part of the value proposition. If users have to keep re-establishing who they are, you haven’t built a relationship product. You’ve built a sophisticated stranger who keeps forgetting their name.
How to actually measure and fix this
Detection is more approachable than most teams assume.
The technical approach: for every conversation, compute cosine similarity between the embeddings of each user-turn and every previous user-turn in the session. Flag any turn where similarity to a prior turn exceeds 0.85 and the user sent it after receiving an AI response. That’s your repetition event. You can run this offline on your conversation logs to start without any real-time infrastructure.
A few practical notes on the threshold. 0.85 is a good starting point but you’ll want to calibrate it against your specific product. For products where users naturally use very similar language (a legal AI where users always phrase things formally, for example), you might need to bump the threshold to 0.88 or 0.9 to avoid false positives. For products with very casual, varied language, 0.82 might catch more real repetition. Spot check a sample of flagged conversations before you treat the metric as gospel.
For distributed repetition, the detection is essentially the same but cross-session. Pull all conversations per user, bucket user messages by session, and run the same similarity check across session boundaries. Any intent that a user has hit across three or more distinct sessions without apparent resolution is a distributed repetition event.
Once you have the data, the fix pathway depends on the type of failure you’re looking at.
If your repetitions cluster around specific intent categories (which they almost always do), that’s an intent recognition problem. Either your model isn’t classifying those intents well, your response quality for those intents is low, or both. The fix is targeted: retrain or reprompt specifically for those categories, validate against your repetition rate for that intent cluster, ship if it moves.
If the repetitions look like context failures, users re-explaining setup, preferences, or background, that’s a memory or context persistence problem. The fix is architectural. You need better context retention across turns (check your context window handling and what gets dropped when conversations get long) and ideally some form of persistent user memory that carries across sessions.
If you’re seeing the companion-specific circular depth pattern, users returning to the same emotional themes without deepening, the fix is usually about response quality on emotionally nuanced topics combined with proactive memory. The AI needs to not just acknowledge context but actually use it to advance the conversation.

^ teams when they first pull their per-user repetition rate and see how many Groundhog Day patterns exist in their data
Why most teams dont catch this
Honest answer: because it’s invisible in the metrics most teams actually look at.
Session turn count doesn’t tell you why turns happened. CSAT captures maybe 10% of users, and the ones who fill it out skew toward strong reactions, not the quiet frustration of someone who just gave up after three rephrases. Latency and token cost metrics have nothing to do with semantic intent. Even standard conversation analytics tools (and there are a lot of them) tend to surface aggregate patterns rather than per-conversation failure signals.
The teams who catch this early are the ones doing actual qualitative review of their worst sessions. But qualitative review doesnt scale. When you’re running thousands of conversations a day, you cant read the transcripts. You need the signal to surface automatically.
This is one of the core things we built Agnost to do. Semantic similarity scoring across conversation turns, cross-session repetition detection, and automatic surfacing of the intent categories where your users are looping most often. All of it without you having to build and maintain a custom pipeline on top of your conversation logs. The teams using it consistently find intent failure clusters they had no idea existed, because the failures were distributed across thousands of sessions in ways that never showed up in aggregate metrics.
Wrapping it up
Here’s what I’d leave you with.
In every other medium, repetition is a breakdown signal. When you have to say the same thing twice in a meeting, something failed. When a customer has to call back about the same issue, you failed them. When a student asks the same question session after session without progress, the tutoring isnt working.
Conversational AI is not exempt from this. If users are repeating themselves in your product, the AI didn’t understand or didn’t resolve. And it’s costing you users you might not even know you’re losing.
The fix starts with measurement. Pull your repetition rate. Segment it by intent category. Find your Triple Rephrase conversations and read a few of them. Look at your most active users and check whether any of them are running Groundhog Day patterns across sessions.
What you find will be uncomfortable and useful in equal measure. Both of those things are good signs.

^ you, after building your first repetition rate dashboard and finally knowing exactly which intents are failing your users
If you’re tired of finding out about looping conversations from churn data instead of catching them while you can still do something about it, Agnost gives you semantic repetition detection built natively into your conversation analytics. No custom pipelines. No log spelunking. Just the signal, surfaced where you can act on it.
TL;DR: Message repetition is the clearest in-session signal that your AI failed. Users who experience it churn at dramatically higher rates. Detect it with cosine similarity on turn embeddings, segment by intent category, and treat it as a first-order product health metric. Not a footnote in your eval docs.
Reading Time: ~9 min