AI for account recovery support: what to automate and what to lock down

Riellvriany Indriawan
Written by

Riellvriany Indriawan

Katelin Teen
Reviewed by

Katelin Teen

Last edited October 30, 2026

Expert Verified
Hand-drawn locked-out customer next to a padlock, a friendly AI helper holding out a red key, and a second person with a check mark beside them
TL;DR

AI for account recovery support is safe when every action it can take still helps the real owner, even if the person asking is lying. Sending your normal reset email to the address already on the account passes that test: an attacker can ask for it all day and the link still lands in the owner's inbox. Changing the email, resetting 2FA or "just turning it off" fails it. So let the AI resolve forgotten passwords and lockouts, sort and draft the 2FA and email-change cases, and send anything that smells like a takeover straight to a person.

The split matters because support desks are a known way in. US cyber agency CISA's Scattered Spider advisory describes attackers calling help desks to reset passwords and move MFA to their own devices. An AI that can be talked into the same thing is a faster version of that hole.

eesel works this way inside Zendesk, Freshdesk, HubSpot and other helpdesks: it calls only the reset endpoint you allow, holds risky actions for approval, and never sees your API keys. XAP, which runs student portals for US states and colleges, lets its eesel agent take portal password resets in Freshdesk while account deletions stay with the team, and a person sends every reply.

Why are account recovery tickets so hard to automate?

Because they are the one ticket type where being helpful and being safe pull in opposite directions. The customer is locked out, often stressed, and wants their account back now. The attacker writes exactly the same message.

They are also a lot of volume. Bron Gondwana of the email provider Fastmail put a number on it on Hacker News:

Hacker News

"In 2016 before we had automated account recovery, lost password was in the top 3 categories of ticket every single week! Every member of the support team dealt with multiple account-loss tickets per day, both forgotten password or stolen account."

That pairing, forgotten password and stolen account in the same queue, is the whole problem. I work eesel's support queue every day, and "I can't log in" is one of those messages where the reply that feels kindest is sometimes the one you must not send. A person can feel the hesitation. A chatbot built to resolve tickets will happily close the loop for whoever is on the other end.

The other side of it is how tired customers get of bad recovery flows. One Hacker News user summed up the frustration with MFA backups and support desks in one go:

Hacker News

"Plus a ton of vendors allow customer support to trivially turn off MFA via social-engineering, so what is the point?"

So the job is not "automate account recovery". It is to automate the parts where a wrong guess costs nothing, and slow down the parts where a wrong guess hands someone the account. The good news is that most of the volume sits in the first group. If you only ever handle password resets, my post on AI for password reset requests covers that one ticket type in more detail. This guide covers the whole recovery queue.

What is the one test an AI recovery action has to pass?

Ask: if the person in this chat is an attacker, does this action still only help the real owner? If yes, the AI can run it. If no, a person decides.

Hand-drawn before and after: on the left, someone asks for a reset link to the email on file, the link goes to the real owner and the attacker gets nothing; on the right, someone asks to change the email to one they give, the link goes to the new address and the attacker owns the account
Hand-drawn before and after: on the left, someone asks for a reset link to the email on file, the link goes to the real owner and the attacker gets nothing; on the right, someone asks to change the email to one they give, the link goes to the new address and the attacker owns the account

This test sounds simple, and it sorts almost every recovery action cleanly:

Action the customer asks forDoes it still only help the real owner?Who runs it
Send the standard reset linkYes, it goes to the address on fileAI, on its own
Explain why the account is locked and when it unlocksYes, it is information, not accessAI, on its own
Walk through using a saved recovery codeYes, only the owner has the codeAI, on its own
Resend a code to a recovery address already on fileYesAI, on its own
Change the email or phone number on the accountNo, the new address could be anyone'sA person, after checks
Reset or remove 2FANo, it strips the second lockA person, after checks
Tell the customer whether an email has an accountNo, it leaks who your customers areNobody, ever
Paste a reset link or code into the chatNo, the chat is the untrusted channelNobody, ever

The last two rows come straight from the OWASP Forgot Password Cheat Sheet, the security community's reference for reset flows. It says to return a consistent message for both existent and non-existent accounts, so a reply like "if that email has an account, a reset link is on its way" is the right one even when the AI can see the account exists.

The table also tells you what to connect. An AI agent that only has a "send reset email" button cannot be talked into the dangerous rows, because it has no button for them. That is a much stronger guarantee than an instruction telling it to be careful. Instructions can be argued with. A missing permission cannot. I come back to this in the setup section.

Which account recovery requests can AI handle?

Sort them by what goes wrong if the AI is fooled. I would start every team with three lanes:

Hand-drawn three columns with risk rising left to right: AI resolves forgot password, locked after failed tries and how to use a recovery code; AI prepares and a person decides on lost 2FA phone with no codes, lost access to old email and new phone number; security team only for suspected takeover, admin or owner account and turn off my 2FA
Hand-drawn three columns with risk rising left to right: AI resolves forgot password, locked after failed tries and how to use a recovery code; AI prepares and a person decides on lost 2FA phone with no codes, lost access to old email and new phone number; security team only for suspected takeover, admin or owner account and turn off my 2FA

Lane 1: the AI resolves it. Forgotten passwords, lockouts after failed attempts, and customers who still have a recovery code or a second device. The fix travels through something the owner already controls. The AI triggers the reset, explains the lockout, or walks through the code, then closes the ticket. This is where most of your volume is, and it is where an AI earns back the most hours. It is also the lane to run 24/7, because nobody locked out on a Saturday wants to wait for Monday.

Lane 2: the AI prepares, a person decides. A lost 2FA phone with no recovery codes, no access to the email on file, or a new phone number. There is no channel left that proves ownership, so someone has to check. The AI still does most of the work: it reads the account, lists which recovery options exist, opens the case, drafts the ID request, and writes an internal note so the agent picking it up starts with the facts. This is the same shape as a human handoff for refunds, just with a stricter rule on who presses the button.

Lane 3: security team only. "Someone changed my password", a request to remove 2FA, or any request on an admin or account-owner login. The AI's job here is speed and silence: tag it urgent, route it, tell the customer what happens next, and send nothing to any address that changed recently.

One customer story shows why lane 1 needs context, not just a keyword. MentorShow, a French online learning company, has eesel read each HubSpot ticket alongside the member's record, including subscription status and renewal date. Their instructions carry a line I would copy into any setup: a login problem from someone with no active subscription is not a login problem. That ticket needs a billing answer, and a reset link would just send the member around in a circle.

What do security standards say about account recovery?

The two references most security teams reach for on this question are NIST SP 800-63B-4, the US government's digital identity guidelines, and OWASP. They were written for engineers building login systems, but most of the rules translate directly into what a support agent, human or AI, should and should not do.

What the standard saysWhat it means in a support ticket
NIST lists four recovery methods: saved recovery codes, issued codes sent to a recovery address, recovery contacts, and repeating identity proofingYour agent should check which of these the account has before promising anything
Recovering an account that uses 2FA needs two recovery codes from different methods, one code plus another working factor, or repeated identity proofing (NIST)"Tell me your date of birth" is not one of the options. A lost-phone case with nothing on file goes to a person
An issued recovery code lasts at most 10 minutes by text or voice and 24 hours by email (NIST)Tell customers how long the link is good for, and to request a fresh one rather than reply to an old email
A new recovery address must be confirmed with a code before it is used (NIST)Never treat an email the customer types in chat as theirs
Every account recovery sends a notification to the addresses on file, with a way to say "this wasn't me" (NIST)The old address hears about every recovery, so the real owner can stop a fake one
Failed attempts on one authenticator are capped at 100 before it is disabled (NIST)Lockouts are on purpose. Explain them; don't hunt for a bypass
Return the same message whether or not the account exists (OWASP)The AI never confirms "yes, that email is a customer"
Don't log the user in automatically after a reset, and offer to end other sessions (OWASP)After a takeover, a new password alone may not lock the attacker out
Security questions should not be the only reset check (OWASP)Answers like a birthday or a pet's name are often findable online

That notification rule is the one support teams forget most, and it is the cheapest protection you have. NIST says recovery notifications go to all notification addresses on the account, and that the notice must include clear instructions and contact details in case the recipient did not ask for it. If your AI triggers a recovery, make sure your system sends that notice to the old address too. If someone is hijacking the account, the owner finds out in minutes, not when they next try to log in.

OWASP also makes a point that changes how you treat "I think I was hacked" tickets. It says a password reset alone may not restore control of a compromised account, because the attacker may still have an active session or may have changed the recovery details. That is why takeover cases sit in lane 3, where someone can end every session and check what changed, rather than in lane 1 with a cheerful reset link.

Why shouldn't AI change emails or reset 2FA on its own?

Because those are the exact requests attackers bring to support desks, and a model reading one chat cannot tell them apart from a real customer.

CISA's advisory on Scattered Spider, a group behind several large breaches, lists the moves. The group posed as employees "to convince IT and/or helpdesk staff to provide sensitive information, reset the employee's password, and transfer the employee's MFA to a device they control". The advisory adds that these calls often come over several conversations, first learning what the help desk asks for, then coming back with the answers. Their homework comes from social media, data leaks and open sources, which is exactly why "confirm your address and date of birth" is a weak check.

Okta saw the same pattern. In its 2023 security write-up, Okta said several US customers reported callers trying to convince service desk staff to reset all MFA factors on their most powerful admin accounts. Okta's advice includes stronger help desk identity checks, limiting help desk roles so they cannot touch admin accounts, and alerting whenever all of a user's MFA factors are reset.

Now picture the same attack against an AI agent. It does not get tired, it answers instantly, and an attacker can try fifty phrasings in an hour. If the agent has a "remove MFA" action switched on, one of those phrasings might work. If it does not have that action at all, none will. That is the rule I would write into any agent's setup: the AI can start a recovery, it cannot finish a risky one.

Email changes deserve their own warning. A Hacker News commenter who has run a high-traffic site listed what you avoid by not allowing email changes at all:

Hacker News

"Email change is one of the most abused recovery vectors in account takeover (ATO)."

You probably cannot ban email changes, but you can make sure an AI never performs one from a chat request. If your AI hallucination worries are about wrong answers, this is the bigger worry: a right-sounding action taken for the wrong person.

How should the AI talk to your login system?

Through one narrow endpoint that is safe by design, not through admin access to your user database.

Most identity providers already have the call you need, and it is the boring one: send the standard reset email to the address on file. I checked the docs for four common ones:

Login systemThe safe call to give an AIThe risky call to keep away from it
Amazon CognitoAdminResetUserPassword, which sends a reset code the same way the user's own "forgot password" doesAdminSetUserPassword, which sets a password directly
Firebase AuthenticationGenerate a password reset link and email it to the user's existing addressSetting the email or password from the admin SDK on request
Auth0Trigger the standard change-password emailDeleting a user's MFA enrollment through the Management API, which Auth0 describes as the same as removing their MFA registration
OktaUser-initiated self-service recoveryResetting all factors, the exact request in Okta's 2023 incident report

One detail worth knowing on Cognito: its docs say recovery messages only go to users with a verified email or phone. If neither is confirmed, an administrator has to step in. That is a natural lane 2 case, and your AI should say so plainly rather than retry.

If your own app has a "forgot password" button, the cleanest option is often to expose the same thing as a small internal endpoint: takes an email, sends the normal reset email if the account exists, always returns the same response. Your AI calls that. It cannot do anything your public login page does not already let anyone do.

Hand-drawn pipeline: a ticket saying I can't log in goes to AI sorts the case, which splits into a safe action sending a reset link to the email on file, or a risky case where the AI drafts, flags and holds while a person checks ID; both paths end at notify every address on file
Hand-drawn pipeline: a ticket saying I can't log in goes to AI sorts the case, which splits into a safe action sending a reset link to the email on file, or a risky case where the AI drafts, flags and holds while a person checks ID; both paths end at notify every address on file

How to set up AI for account recovery in your helpdesk

This is the order I would run it in. Steps 1 to 3 are worth doing even if you never let the AI take an action.

Step 1: count what you actually get

Before writing a rule, tag a month of tickets by recovery type: forgot password, locked out, lost 2FA, lost email, new phone, suspected takeover, and "not actually a login problem". AI ticket tagging can do this backwards over past tickets. The mix decides everything else. A queue that is 90% forgotten passwords needs one endpoint and a good reply. A queue full of lost 2FA needs a better ID check process first.

Step 2: write the lanes into the instructions

Put the three lanes into the agent's instructions in plain words, with examples of what customers actually write: "can't get in", "new phone, authenticator gone", "I don't use that email anymore", "someone changed my password". Add the hard rules too: never confirm whether an account exists, never paste a link or code into the chat, never change contact details on request. In eesel, instructions are plain text you edit, and the agent can tighten them when you correct it in chat, as the instructions docs explain.

Step 3: give it the account context

Connect whatever tells the AI who this is: your subscription or billing system, your CRM, your helpdesk's customer record. This is the MentorShow lesson. Half the "I can't log in" tickets are expired plans, wrong product, or a portal you do not even run. XAP found the same: some students who cannot log in are on a college's own portal, which XAP does not run, so the right reply is a referral, not a reset.

Step 4: connect one safe endpoint

Give the agent the single reset call from the section above, and nothing else that touches login. In eesel this is Network Access: you allow one domain, add the auth header in settings, and the agent can call it. Requests to any other domain are refused.

eesel agent settings showing the Network Access section with allowed domains and the note that credentials are stored as network access headers and are not shown to the AI, plus the Action Permissions toggle below
eesel agent settings showing the Network Access section with allowed domains and the note that credentials are stored as network access headers and are not shown to the AI, plus the Action Permissions toggle below
Network Access in an eesel agent's settings, as shown in the eesel docs. Credentials are stored as headers and never shown to the AI.

The part that matters for recovery is the line at the top of that screen: credentials are stored as headers and are not shown to the AI. The key that can trigger resets never sits in a prompt, so it cannot be talked out of the agent. Your developers can set this up from a terminal too. The eesel CLI runs the same agent and workspace as the dashboard, so an engineer, a script, or a coding agent like Claude Code or Cursor can wire up the endpoint, edit the recovery instructions, and test the agent without opening the browser.

Step 5: set every helpdesk action that touches identity to need approval

Each action an eesel agent can take is set to run on its own, ask first, or stay off, per agent. The actions and approvals docs recommend starting supervised, with replies and anything irreversible on approval.

eesel's Zendesk integration page with the Write actions set to Custom: add tags, assign to team and close ticket on Needs approval, leave internal note on Auto
eesel's Zendesk integration page with the Write actions set to Custom: add tags, assign to team and close ticket on Needs approval, leave internal note on Auto
Per-action settings in eesel: a tick runs on its own, a hand waits for a person, a cross is off.

For recovery, I would leave tagging and internal notes on their own from day one, and put public replies on approval for the first week or two. You can also hold one kind of case even when replies are on: an instruction like "ask before replying to anything about 2FA or changing an email" makes the agent stop for those cases only.

Step 6: route lanes 2 and 3 to named people

Lane 2 goes to whoever can run your ID check, usually a senior agent or tier 2. Lane 3 goes to security, by name, with an urgent tag and a short SLA. An AI can route by tag instantly; it cannot fix a routing rule that points at a shared inbox nobody watches on weekends. If your tier 2 team is small, have the AI write the internal note so they start with the account facts.

Step 7: test it on your past login tickets

Run the agent over the recovery tickets you already handled before it touches a live one. Did it send reset links only in lane 1? Did it ever confirm that an email had an account? Did it catch the takeover hidden inside an angry billing complaint? A simulation on past tickets answers that in an afternoon, and it is the step I would never skip on this ticket type.

Which lane does this ticket go in?

Pick a request type to see who handles it, what the AI does, and the rule behind it.

How do you measure whether it is working?

Track speed and safety side by side. A recovery setup that is fast but occasionally hands over an account is worse than no AI at all.

  • Share of recovery tickets closed by the AI. This should be roughly your lane 1 share from step 1. If it is much higher, the AI is closing tickets it should not.
  • Time to first reply on lane 1. Locked-out customers feel every minute. This is the number that should drop most.
  • Lane 3 response time. A takeover sitting in a queue for six hours is the failure that ends up in a headline. Watch it in your SLA reporting.
  • "This wasn't me" replies to recovery notifications. Each one is a recovery somebody did not ask for. Read every single one.
  • Repeat contacts within 7 days. If the same customer is back, the reset link did not reach them or the reply missed the real issue.

The AI support reporting guide shows how to build these from tagged tickets.

Common mistakes with AI and account recovery

These are the ones I would watch for in the first month:

  • Letting the AI confirm the account exists. "I found your account, sending a link now" feels helpful and tells an attacker which emails are customers. Use the same reply either way.
  • Treating chat details as proof. Name, address, last four digits, date of birth: all of it is in someone's data leak. CISA notes attackers gather exactly this before they call.
  • Pasting a link or code into the conversation. The chat is the one channel you cannot trust in a recovery case. Codes go to the address on file.
  • Giving the AI admin API keys "to be safe later". If the key can remove MFA, assume someday someone will talk the agent into trying. Give it the one call it needs.
  • Skipping the notification. Every recovery should tell the old address. It is the cheapest takeover alarm you will ever set up.
  • Forgetting the other login. XAP's queue showed it: sometimes the portal the student cannot reach is not yours. A referral beats a reset link.

If you want the bigger picture of how a rollout like this goes from supervised to hands-off, the implementation timeline post covers the dial.

Try eesel for account recovery tickets

eesel joins your helpdesk as an AI teammate for support. On login tickets, it reads each one with the customer's account context, triggers only the reset call you allow, replies the same way whether or not the account exists, and holds 2FA changes, email swaps and anything that looks like a takeover for your team. It works in Zendesk, HubSpot and the other major helpdesks, and on Freshdesk through the Freshdesk integration.

eesel dashboard showing an approval request to leave a public reply on a ticket, with the drafted text and Approve, Always Allow and Deny buttons
eesel dashboard showing an approval request to leave a public reply on a ticket, with the drafted text and Approve, Always Allow and Deny buttons
An action set to ask first in eesel: the drafted reply waits until someone approves it.

Approvals land where your team already works: the dashboard, a Slack thread, or a link in the helpdesk note, and every approval records who decided and when. Your API keys stay in settings, never in the AI's view, and eesel never uses your data to train the underlying models, per its Trust Center. One honest gap: eesel's SOC 2 Type II audit is still in progress, so if your security team needs the report in hand today, ask for the current status first; my vendor security checklist covers what to request instead.

XAP is a good model for starting small. A filter in front of its eesel agent lets through only referral cases and portal password resets, nothing goes to a student without a person sending it, and account deletions stay with the team. Start there, measure for a month, then open lane 1 up. You can try eesel free for 7 days with 100 credits.

Frequently Asked Questions

Can AI handle account recovery support tickets on its own?
It can fully handle the requests where the fix goes to a channel the real owner already controls: a forgotten password, a lockout after too many tries, or a customer who has recovery codes and needs walking through them. Lost 2FA devices, lost email access and suspected takeovers should end with a person, with the AI doing the sorting and drafting. My guide to approval workflows covers how to hold those cases.
Is it safe to let an AI agent reset passwords?
Yes, if "reset" means triggering your normal reset email to the address already on the account. Anyone can ask for that, and the link still lands with the owner. It is not safe to let an AI set a password, change the email, or remove 2FA from a chat conversation. The password reset requests post goes deeper on that one ticket type.
How should support verify identity for account recovery?
Verify against what the account already has, never against what the person types in chat. NIST's SP 800-63B-4 lists saved recovery codes, codes sent to a recovery address already on file, recovery contacts, and repeating identity proofing. Security questions alone are not enough, per OWASP. An AI can collect the request and run the safe parts; a person signs off the rest, as in my handoff guide.
What should AI never do in an account recovery ticket?
Never change the email or phone on an account because someone asked in chat, never remove or reset 2FA, never confirm whether an email address has an account, and never paste a reset link or code into the conversation. Those are the exact moves attackers ask a support desk for, as CISA's Scattered Spider advisory describes. Keep them off in your agent's settings, as covered in my security review guide.
How do I connect an AI agent to my login system for account recovery?
Give it one narrow endpoint, not admin access. Most identity systems already have a call that sends the standard reset email, like Amazon Cognito's AdminResetUserPassword or a Firebase reset link. In eesel, you allow that one domain under Network Access and the key stays in settings, never in the AI's view. The AI for SaaS support post shows how this fits a wider setup.
How much of a support queue is account recovery?
It varies, but it is often near the top. Fastmail's Bron Gondwana wrote that before they automated it, lost password was in their top 3 ticket categories every week. Run your own count by tagging a month of tickets first; AI ticket tagging is the quickest way to get that number.
How much does AI for account recovery support cost?
With eesel, a login ticket costs the same as any other: 1 credit per ticket or chat. There is a 7-day free trial with 100 credits, and the paid plan starts at $299 a month for 500 credits, per the eesel pricing page. There are no per-seat fees, so recovery tickets ride on the same plan as the rest of your ticket triage.

Share this article