What BlueBot can and can't do
What a Mac running BlueBot can and can't do with Messages, the reason for each limit, and how to design around the gaps before you build.
BlueBot uses Messages only in the ways Apple allows any app to: it sends through AppleScript, and with your permission it reads Messages' database without changing it. It never uses Apple's private frameworks and never asks you to turn off System Integrity Protection, the Mac's protection against changes to the system. Your Mac stays as secure as it was before, and these choices decide what BlueBot can and can't do.
The list
| What | BlueBot | How |
|---|---|---|
| Send a text (iMessage or SMS, chosen or automatic) | Yes | AppleScript |
| Send pictures, files, voice memos and a contact card (.vcf) | Yes | AppleScript send POSIX file, staged into a folder Messages can read |
| Send into an existing group chat | Yes | AppleScript by chat GUID |
| Start a new group chat | No | Messages has no reliable scripting for it |
| Read every message, including ones typed by hand on the Mac or iPhone | Yes | chat.db |
| Delivered and read receipts on sent texts | Yes, where the recipient shares read receipts | chat.db date_delivered, date_read |
| Tapbacks received | Yes | chat.db associated_message_type 2000–2006 added, 3000–3006 removed |
| Edits and unsends received | Yes, on macOS 13 and later | chat.db date_edited, date_retracted |
| Send a tapback, a typing indicator, mark as read, edit or unsend | No | Needs System Integrity Protection turned off, and BlueBot won't ask that of anyone |
| Voice memo transcription | Yes, on the Mac, free | Apple's Speech framework, on the device, if you turn it on |
| Is this number on iMessage? | A best guess with its basis stated | The newest chat with that handle; unknown when there is none |
What BlueBot can't do
Start a group chat
Messages has no reliable way for an app to start a new group. BlueBot can send into a group that already exists, with chat_id from /v1/chats, and it reads every group it copies.
Instead: start the group once by hand, in Messages on your iPhone or Mac. Send one text in it, and the Mac sees it (chat.created fires). From then on your code can send into it.
Send a tapback, show typing, mark as read, edit or unsend
All of these need System Integrity Protection turned off, and BlueBot won't ask anyone to do that.
Instead: BlueBot reads all of them when the other person does them. A tapback on your text fires reaction.added, and an edit or unsend fires message.edited or message.unsent. To answer a tapback, send a text.
Know for sure whether someone is on iMessage
Apple offers no way to ask about a stranger's number. /v1/lookup answers from your own history: what the newest chat with that person used, with basis: "history", or service: "unknown" with basis: "none" when you've never texted them.
Instead: send with service: "auto" and let the SMS fallback handle it.
Send while your Mac is asleep or off
Every text leaves from Messages on your Mac, and SMS from your iPhone. A Mac that sleeps, loses power or loses its network sends nothing until it's back, and its texts wait with device_offline.
Instead: keep the Mac awake (the app does it for you), choose an expires_at that matches how long a text stays useful, and listen for device.offline.
Give you a number
BlueBot sends from the number your Mac's Messages is signed in with, and provides none. You can't send from two numbers with one account, choose a sender name, or text from a number you don't own.
Send at volume
BlueBot sends one text at a time at your pace, 20 seconds apart by default, and at most 1,000 a day. BlueBot is for texting people who know you. Bulk sending, cold outreach and texting lists you bought are against the acceptable use policy, and they're also how a personal Apple account gets flagged, which no setting undoes.
Work outside Messages
BlueBot doesn't make phone or FaceTime calls and doesn't work with WhatsApp or other apps. At launch it can't text numbers outside the US.
What it reads that hosted services can't
Because BlueBot reads your own Messages, it sees things a hosted iMessage service can't:
- The whole conversation. Texts you type by hand on your Mac or iPhone come through as
source: "mac", so your CRM and your AI assistant also see what you typed. - Your existing threads. Texts go into your existing conversations and come from your own number.
- Receipts and reactions. Delivered and read times where the person shares them, tapbacks, edits and unsends.
- Voice memo transcripts. When you turn on transcription, the Mac transcribes voice memos itself with Apple's speech recognition, at no extra cost.
The risk to your Apple account
Apple can flag an Apple account that messages many people who don't know it. The flag isn't public, Apple doesn't announce its rules, and BlueBot can lower the risk but never remove it. The (a pace between texts, a cap on new people a day, quiet hours and stop words) are there for this, and their defaults are set so your sending looks like a busy person's.