A real x.ai email hid a phishing button. Here's how a Bot caught it, and how to set up your own check

Most phishing advice starts with “check the sender.” On October 14, an X user named Wes shared a case where the sender checked out completely, and the email was still a trap.

This post walks through what he reported, why the usual safety signals could not help, and how you can ask your own Grok Bot to do the same kind of review, once or on a schedule.

What happened

Wes posted that an email from noreply@x.ai landed in his inbox. It passed SPF, DKIM and DMARC, and it had the blue check. Something still felt off, so he asked his Bot for a security review.

View on X

According to Wes, the Bot found a hidden phishing link, explained why every check had passed, and wrote up a report for xAI with a proposed fix.

Here is the Bot's explanation, as he relayed it: someone had created an xAI team and named the team with raw HTML. When xAI sent a team invitation, its email template dropped that team name into the message without escaping it. The “name” rendered as a fake Accept invitation button inside a genuine x.ai email.

View on X

Elon Musk quoted the thread a short while later with a one-line summary: “Grok @Bot can detect scam emails.”

View on X

Why every check passed

It helps to know what those three checks actually prove. Cloudflare's explainer puts it plainly: SPF, DKIM and DMARC help verify that an email came from the domain it claims to be from.

  • SPF lists which servers are allowed to send mail for a domain.
  • DKIM adds a cryptographic signature so the receiving server can confirm the domain signed the message.
  • DMARC tells the receiving server what to do when SPF or DKIM fail.

None of them judge whether the *content* is safe. In this case the mail really was sent by x.ai's own system, so the checks were right to pass. As Wes put it, “it really was sent by xAI.” The problem lived inside the message, in a field an outsider was allowed to fill in.

That is the lesson worth keeping: a passing sender check tells you who sent it, not what's in it.

The fix, and what's still unconfirmed

Wes said the Bot recommended two changes: HTML-encode team names before they go into emails, and restrict which characters a team name can contain.

View on X

He added that the feedback “looks like” it has been implemented. That is his observation. We did not find a public statement from xAI about the issue or the fix, so treat the timeline as reported, not confirmed. His closing advice holds either way: don't click links in unexpected emails, even when the sender checks out.

How to ask your Bot for a one-off security review

You don't need a special feature for this. A Bot can read mail you give it access to and reason about it. There are a few ways to get an email in front of it:

1. Connected Gmail. If you've connected the Gmail plugin, your Bot can search and read that mailbox. The help page notes an installed plugin is available to every Bot on your account. 2. Your Bot's own inbox. Every account can claim one address at mail.grokbot.com. You can forward a suspicious message there, then ask your Bot about it. 3. Paste it. Copy the message, or better, the full original with headers (most mail apps have “Show original”), into chat.

Then ask for a review. A prompt along these lines works well:

> Do a security review of the email from noreply@example.com that arrived this morning. Check the headers for SPF, DKIM and DMARC results. Then look at the body: list every link with its real destination, flag any button or link whose text doesn't match where it goes, and point out anything that looks injected by a user (odd names, stray HTML, unexpected requests). Don't open any links or reply. Tell me whether it looks safe and why.

The “don't open any links or reply” line matters. You want the Bot to inspect the email, not act on it.

What makes a good review

Ask for the reasons, not just a verdict. Wes's report was useful because the Bot explained why the checks passed and where the bad content came from. A verdict like “looks fine” is much less helpful than “the sender is genuine, but this button points to a domain that isn't x.ai.”

How to set up a standing phishing routine

Wes went a step further and asked his Bot for a security routine that checks incoming mail for anything phishy. He says it has since flagged several more emails as “Likely Phishing,” which were more obvious ones.

View on X

Routines are how a Bot acts without you starting a chat. The official help explains that a routine can run on a schedule or when an email arrives at your Bot's own address. For a connected Gmail inbox, a scheduled sweep is the straightforward choice.

A starting prompt:

> Set up a routine: every weekday at 8:00 AM, check emails that arrived in my inbox since the last run. For each one with a link, button or attachment, check whether the sender, link destinations and requests line up. Label anything suspicious “Likely Phishing” in a short summary here, with one sentence on why. Don't click links, open attachments, reply, or delete anything.

Then:

1. Open the routine and read “When to run.” It shows the saved schedule in words, so you can confirm it matches what you meant. 2. Press Test. A new routine waits for its next scheduled time. Test runs it now. The help notes that a test does real work, so try it when your inbox has nothing you'd mind the Bot reading. 3. Watch the first week. If it flags too much or too little, edit the instruction.

Mail to your Bot's own address

If you route mail to your Bot's mail.grokbot.com address, a few built-in protections already apply, per the help page:

  • Mail that fails the spam or virus scan is kept without its body or attachments and never starts a routine.
  • By default, an email routine only runs for senders that pass standard authentication checks. (As this story shows, passing doesn't make a message safe, so the routine's own review still matters.)
  • Your Bot treats email from other people as information, not instructions. A request inside an email doesn't make it send anything on its own.
  • Any email your Bot wants to send waits as a draft until you approve it.

Who this is for

  • Anyone who gets “official” email from services they use: invites, password resets, billing notices. These are exactly the messages attackers like to imitate, or, as here, to ride inside.
  • Small teams without a security person. A routine won't replace one, but it gives you a second look on every message.
  • Builders who send email from their own product. The Bot's fix is general advice: anything a user types (team names, display names, comments) should be encoded before it goes into an email template.

Gotchas

  • A Bot is a second opinion, not a guarantee. Wes's routine caught obvious cases after the first one. There's no published accuracy figure, so keep your own judgment switched on.
  • Usage adds up. The routines help page warns that frequent runs spend more usage. A daily or twice-daily sweep is usually plenty; you don't need one per message.
  • Keep it read-only. Tell the Bot not to click, reply or delete. Labeling and summarizing is enough.
  • Report through official channels. If your Bot finds something like this, ask it to draft the report, read the draft yourself, and send it to the company's real security contact.

The takeaway

The sender checks did their job. They proved the email came from x.ai. What they can't do is read the message the way a careful person would. That's the gap a Bot can help fill, whether you ask once when something feels off or set up a routine to look every morning.

Sources

Next: more Blog notes, Learn, or What is Grok Bot?

Cookie preferences