ENGINEERING · 29 SEP 2026 · 2 MIN READ

Not messaging
the wrong person.

Two roads to a person. A check on each one.

On 21 August an early build of our agent sent a WhatsApp message to someone we had not asked it to contact.

The cause was four words of SQL. To find a chat it looked for names containing what you typed, took the most recently updated match, and sent. "Nal" matched "Ronald". The pick could even change between two runs, because it followed whichever chat had moved last. Nothing on the way to the send checked the answer.

We did not add a confirmation pop-up. The fiftieth "Are you sure?" gets tapped out of habit, and the fifty-first is the one that matters. Instead the check is mechanical and sits in one place: every tool call Silhouette makes passes through a single host, and the recipient guard lives there. If the number isn't saved under the name you gave, and you didn't type the number yourself, the send is refused and the agent is told why.

That covered the messaging tools. It missed the other road: opening WhatsApp and tapping "Send" like a person does. That path never touches a phone number. So there is a second guard on the screen: before it taps Send in a messaging app, the name you asked for must be on the screen.

One thing this taught us, which now shapes every check we write: a tool reporting success is not evidence. The same week, a "react" call returned sent: true for a message that didn't exist, and a tap reported success after changing nothing. Our checks read what the phone shows.

What we haven't measured: how often the guards block a send you wanted. We will count that in the beta.

YOUR REQUESTNAMES A PERSONROAD 1MESSAGING TOOLROAD 2TAP ‘SEND’ IN THE APPNUMBER SAVED UNDER THAT NAME,OR TYPED BY YOU?THAT NAME ON THE SCREEN?YESYESSENTNONOREFUSED · AND TOLD WHY
Two roads to a person. Messaging tools check a number against the named contact or a number you supplied. In-app Send checks the requested name on screen. Both paths refuse a send that fails the check.

INCIDENT: 21 AUG 2026 · GALAXY A55 · ANDROID 16

Read the safeguards and their limits ↗
YOUR INFORMATION / YOUR CHOICE

A quieter footprint.

Visitor analytics is optional and off until you accept. We do not use advertising trackers.

Visitor analytics: off
We count page views, estimated unique browsers, referral-site domains and broad device categories. We never attach these metrics to your beta registration. Admin, verification and unsubscribe pages are excluded.
Essential security
Admin sign-in uses a session cookie. Server controls protect forms against abuse.
Display preferences
Your chosen theme and signup dismissal can be remembered in your browser. These are not used to profile you.
Email preferences
Product updates are optional. Use the unsubscribe link in an email to withdraw your choice. Clearing browser preferences does not unsubscribe you.

Your analytics choice is remembered for 90 days. You can withdraw at any time; this stops future collection. Existing metrics are not erased by clearing browser storage.

Read the privacy notice ↗

Help shape
what’s next.

Meet the AI that helps you get things done. Register your interest in the Silhouette beta.

Tell us about the phone you’ll use for testing. Find these details in Settings → About phone → Software information. This helps us check beta compatibility.