ElevenLabs · Call Termination

Why Calls End

2,261 calls · termination trigger + agent-evoked reasons

2,261

Total Calls

352

Agent-Evoked Ends

15.6%

of calls ended by agent

Note — excluded data: Excluded from these insights: (1) 49 historical 'exceeded maximum duration' cutoffs (Kazumi, Apr 15–17 2026, ~3-min cap since raised to 60 min) — a config artifact; (2) 'exceeds your quota limit' rejections — account-level credit/usage-cap refusals that bounce calls ~2s at connect (infra, not call-termination behavior). Both removed to avoid polluting insights. See exclusions.py.

How calls terminate (all 2,261 calls)

User disconnected (normal close)1666 · 74%
Agent ended call (end_call tool)352 · 16%
Connection dropped (abnormal)81 · 4%
User left (going away)73 · 3%
Silence / inactivity timeout62 · 3%
Client disconnected (1005)9 · 0%
Non retryable error during text to speech9 · 0%
Call ended by remote party6 · 0%
Client disconnected (1012)2 · 0%
Unknown / not recorded1 · 0%

Agent-evoked terminations — why (352 end_call calls · heuristic buckets)

User silent / unresponsive

172 · 49%

“user non responsive” — Savannah Bond, 40s

“User unresponsive after multiple prompts” — Princess Frenxh, 33s

“User repeatedly silent, likely done or disconnected” — Princess Frenxh, 106s

“Caller non responsive after multiple prompts” — Alexis Mucci, 61s

Inappropriate / boundary

113 · 32%

“Caller expressing impregnation kink in a way that risks involving non consensual or unsafe scenario” — Princess Frenxh, 306s

“User engaged in explicit sexual content that goes beyond allowed tone; ending session per safety policy.” — Princess Frenxh, 909s

“User said 'My mother' in a likely sexualized flirt context; need to avoid any potential incest or non-consensual or inappropriate scenario.” — Princess Frenxh, 31s

“User referenced 'my dad' in unclear context early in call; potential for non-consensual or unsafe direction. Ending for safety.” — Alexis Mucci, 33s

Other / unclear

39 · 11%

“user said they are checking out / ending call” — Savannah Bond, 26s

“User seems to be wrapping up with thanks; end conversation politely per instructions.” — Alexis Mucci, 92s

“Caller indicated they are under eighteen; line is adults only.” — Ana Nello, 47s

“User shifted to English general statement, time nearly out per tool; wrap call gently.” — Beatriz, 104s

Abusive / hostile user

15 · 4%

“Hostile or abusive caller who escalated after initial check-in” — Alexis Mucci, 47s

“User made direct threat of physical harm toward assistant.” — Ana Nello, 19s

“Caller became verbally abusive toward Lena.” — Lena The Plug, 39s

“Caller used racist and abusive language toward assistant” — Lena The Plug, 66s

User said goodbye / asked to end

7 · 2%

“User wants to leave the call.” — Alexis Mucci, 56s

“User directly requested to end the call.” — Sophie Dee, 15s

“User indicated she is off, implying they want to end the call or that Sophie is not present.” — Sophie Dee, 40s

“user said bye and asked to stop” — Sophie Dee, 298s

Token / credits ended

2 · 1%

“User tokens ending and system requires end_call for farewell” — Savannah Bond, 103s

“Token limit reached, need to end gently” — Alexis Mucci, 103s

Conversation complete

2 · 1%

“Completed erotic roleplay session and user has reached climax; end of natural interaction arc.” — Rachel Jane, 957s

“Stage 4 close completed; ending call per timing constraints and user acknowledged.” — Kazumi, 96s

Language barrier / unclear intent

1 · 0%

“User speaking in a language I cannot understand and not providing clear intent; unable to continue meaningfully” — Savannah Bond, 74s

Technical / can't hear

1 · 0%

“User cannot hear assistant audio and repeatedly reports no audio; end call gracefully.” — Brody Jean, 67s

Reason buckets are keyword-heuristic over the agent's free-text end_call reason (no LLM used). Verbatim reasons shown for spot-checking.

Recommendations

  • 1 Re-engage instead of hanging up when the user goes quiet — convert the silence-triggered end_call into a re-engagement beat ('you still there, babe? want me to…') and let the USER disconnect.
    ↳ ~155 silence ends ≈ 48% of all agent-initiated hang-ups
  • 2 Never end for explicitness — enforce the agents' own rule ('never say you can't be explicit; redirect to a photo/text CTA') and rewrite the end_call tool description to safety-only.
    ↳ ~40+ explicitness-tone ends, the clearest false positives in the safety bucket
  • 3 Fix the 'Stage 4' prompt gap — it's referenced ('advance to Stage 4') but never defined, so the model improvises a close. Define it as a re-engage / loop that never ends the call.
    ↳ arc-complete / 'Stage 4 close' proactive ends
  • 4 Preserve the required-safety ends as-is — underage/minors, threats, real-world meetups, PII extraction, crisis. These are working correctly; do not loosen them.
    ↳ ~32 likely true-positive safety ends
  • 5 Extend the existing `no_premature_end` eval beyond content-explicitness to also fail on silence / arc-complete / disengagement ends — so the fix above is measurable.
    ↳ eval currently only catches content-explicitness premature ends
  • 6 Human-adjudicate the gray-area cases to set policy — taboo/extreme content, fantasy-vs-real non-consent, abuse without the consent-check, and user-initiated exits.
    ↳ ~54 needs-human cases in the review packet
  • 7 Route operational call-killers to eng/ops — TTS errors that fail calls at ~1s, and abnormal connection drops that bounce users right after connect.
    ↳ ~9 TTS fails + abnormal drops among the sub-10s bounces
  • 8 Instrument user identity — pass a user/anon-device id into 11labs, or join call_id → your backend — to unlock new-vs-returning analytics.
    ↳ 11labs carries no usable web user_id; ~94% of sessions are anonymous

Prioritized next steps (stack-ranked by impact ÷ effort)

Impact ●●● high → ○○ low · Effort ●●● high → ○○ low. P0 = do now (high impact, prompt-only).

PriStep ImpactEffort
P0 Silence → re-engage (prompt + end_call description edit)

Biggest single lever — ~48% of agent hang-ups. Prompt-only change.

●●● ●○○
P0 Block explicitness-triggered ends; redirect to CTA

Highest-volume false-positive cluster; already against the agents' own rule.

●●● ●○○
P1 Define 'Stage 4' as a re-engage loop (remove arc-complete close)

Removes the improvised-close behavior at the prompt level.

●●○ ●○○
P1 Extend `no_premature_end` eval to silence/arc/disengagement

Turns the fix into a measurable metric per agent.

●●○ ●○○
P1 Run the LLM policy review (add ANTHROPIC_API_KEY)

Precise per-call verdict + per-agent offender ranking; tightens the needs-human set.

●●○ ●○○
P2 Human review the ~54 needs-human cases; codify gray-area policy

Taboo content, fantasy-vs-real non-consent, user-initiated exits. Needs reviewer time.

●●○ ●●○
P2 Ops fix: account quota/credit exhaustion + TTS errors

Calls failing at connect waste first impressions. Separate team.

●●○ ●●○
P3 Instrument user identity for new/returning analytics

Requires eng + data work (call_id → backend join or anon-id passthrough).

●○○ ●●●