A hand holding a smartphone showing a heads-up notification

The Approval Reflex: When Your Agent Triggers Your MFA

A prompt lands on your phone: Approve sign-in? You didn’t sign in to anything. Five years ago, that was the moment the training kicked in: don’t approve it, report it, someone has your password. In two years’ time, the same prompt will get a different response: “it’s probably just my agent”, tap, approved, back to lunch.

That tap is the whole problem, and I don’t think the industry has noticed it yet.

We spent a decade teaching hesitation

Security awareness training has one crown jewel. Not the phishing simulations, not the annual e-learning: the single heuristic that actually stuck. Never approve a prompt you didn’t start.

It stuck because it is simple, it requires no technical knowledge, and it maps onto real attacks. Push-bombing (bombarding a user with MFA prompts until they approve one out of exhaustion) is how Uber’s 2022 breach began, and it has been a staple of real intrusions ever since. The defence was never technology. It was a user who thinks “I didn’t ask for this” and refuses.

Vendors reinforced it. Number matching in Authenticator exists precisely to force a moment of conscious connection between the sign-in and the approval. The entire model assumes one thing: legitimate prompts are prompts you initiated, seconds ago, on purpose.

Agents break the assumption, not the technology

Now put an agent in the loop. As covered in You Can’t MFA an AI Agent, agents act in your security context, with your permissions. But increasingly they also initiate: they hit a resource that demands step-up authentication, they need a fresh consent grant for a new scope, they schedule work for 3am and the prompt fires when they get there.

Every one of those prompts is legitimate. Every one of them is also, by definition, a prompt you did not start. The heuristic doesn’t degrade gracefully; it inverts. Once “prompts I didn’t start” become routine, the user’s only remaining strategies are to deny everything (and break their own workflows) or approve everything (and break the security model). People will approve everything. The workflow depends on it, and the workflow always wins.

We trained people to hesitate, then shipped a product that only works if they don’t.

“Copilot needs your approval” is the perfect pretext

Attackers do not need to break the authenticator. They need their prompt to be indistinguishable from the noise we taught users to expect, and agents manufacture that noise legitimately, all day long.

Look at what the prompt actually tells you today: an application name, a location, maybe a number to match. It does not tell you which agent triggered it, whether it is one of yours, or what it is about to touch. There is no primitive in the current stack for “verify this request came from my agent, doing the task I gave it”. So a phishing pretext of “your assistant needs you to re-approve access” arrives with the same shape, the same timing plausibility, and the same authority as the real thing.

This is the same cultural failure I wrote about in the joiners, movers and leavers problem: the system quietly trains people into the insecure behaviour, then blames them for it afterwards. Nobody chose to build an approval reflex, the same way nobody chose access sprawl. It emerges from a hundred reasonable decisions, and it is fully deniable right up until the incident report.

What actually holds the line

Some of the answer is already shipping, some of it barely exists, and knowing which is which is the useful part.

Start with the good news: phishing-resistant methods survive this. A passkey cannot be push-bombed: there is no remote “approve” button, because the ceremony requires the authenticator to be locally present. Microsoft retiring SMS and voice codes in favour of passkeys closes the remote-approval hole for sign-in. That part of the story is genuinely good news.

The risk doesn’t vanish, though. It migrates to consent. What passkeys do not fix is the OAuth consent screen and the step-up grant, which is exactly where agent workflows live. Consent screens are coarse, scope-blind in practice (nobody reads them), and about to become the most-clicked dialogs in corporate life. Treat consent governance (admin consent workflows, app allow-listing, scope review) as the new front line.

The long-term fix is agents with their own identity, so prompts can say so. That is the approach from the agent identity toolbox: agents as first-class principals with their own identity and scoped permissions. A prompt that says “Agent: invoice-processor, owned by you, requesting scope X” is verifiable. A prompt that says “Microsoft 365” is a coin flip.

And update the training before the reflex forms. If your awareness programme still says “never approve a prompt you didn’t start”, it is about to start lying to your users. The replacement rule is harder but honest: know which prompts your agents generate, and treat everything outside that pattern as hostile. That requires actually telling users what their agents do, which most organisations currently could not answer for themselves.

The uncomfortable summary

We finally got the human side of authentication nearly right, and we are now introducing a class of actor that generates false positives for every instinct we just finished installing. The awareness budget of the last ten years bought us a workforce that hesitates. The agent rollout of the next two will pay people, in saved time, to stop.

Whoever solves “is this really my agent?” at the prompt level is solving the next decade’s phishing problem. Until then, the honest advice is unglamorous: fewer agents with broader access, more agents with narrower access, consent governance turned all the way up, and users who know exactly what their software does in their name. If that sounds like the same advice as the castle walls post, it is. The wall keeps moving. The discipline doesn’t.

Enjoyed this guide?

New articles on Linux, homelab, cloud, and automation every 2 days. No spam, unsubscribe anytime.

Scroll to Top