Just a heads up that I submitted a “draft” to the MetaMask Snap team yesterday to get it out in front of you guys since asking people to download a special version of MM (Flask), download a repo and run it, then install the Snap, etc is a complete hassle. The idea is to get feedback and hopefully the next submission is the official v1.
If you want to do a deep dive into the Snap here is the source code (MetaMask require the source code to be public)
Here is what I submitted. Screenshots at bottom of post for reference
Snap UI — what shows, and where
The panel has two pages and inspects two subjects.
|
|
| Primary page |
always shown; static or interactive (if a “More info” button is present) |
| More info page |
reached via the “More info” button; “Back” returns |
| Destination address |
the transaction to |
| Domain |
the transactionOrigin URL (eg https://hivemindhq.io) |
What each page shows
Primary page
Three mutually-exclusive branches, top to bottom:
Normal (has content to show on the primary page)
- Subject cards — address-first, unless only the Domain has a critical report
- Address card: Destination heading → account type → critical reports → safety flags → provenance → your take → people you follow
- Domain card: Domain heading → critical reports → your take
- “Transaction initiated from Hive Mind” line (first-party extension origins only)
- “More info” button (if extra content exists)
- Footer: one action link per subject
Empty (nothing from your network to show on the primary page)
- “No signals yet” notice + account type + contribute nudge
- “N public claims from outside your network” + “More info” button (if public claims exist) — public claims are never shown on the primary page, but this teaser signals that the More info page has content
- Footer
Promote (nothing to show on the primary page, but there IS more-info content)
- The “more” cards are pulled forward and shown on the primary page instead of behind a button
- Footer follows (no button)
More info page
- Address card (2nd-degree safety + demoted/2-hop familiarity)
- Domain card (non-critical safety + familiarity)
- Public claims — address
- Public claims — domain
- “Back” button
The “unverified · anyone can post” caveat appears on the first public-claims block only.
The rules that decide what’s shown
1. Is the subject suppressed? (skip everything below if yes)
| Subject |
Suppressed when |
| Address |
to === from (self-call — smart account batch, EIP-5792/7702) |
| Domain |
no origin, or origin is metamask, localhost, or any browser extension URL |
| Domain (first-party) |
the origin is our own Hive Mind extension — the domain card is suppressed, but a neutral line reading “Transaction initiated from Hive Mind” is shown in its place as context, not a safety signal |
2. Does the subject have an atom + is the feature on?
Safety, familiarity, and public claims only run when the subject has an Intuition atom. The 2-hop network also requires EXTENDED_NETWORK_ENABLED and a non-empty trust circle. EXTENDED_NETWORK_ENABLED can be flipped to false once the network no longer needs 2-hop network claims.
3. Safety gating — who has to vouch for a signal to surface
Each claim is classified by its predicate and gated by who’s asserting it:
| Lane |
Predicate |
Surfaces when asserted by… |
Critical when… |
| Hard |
reported for |
whitelist or trust circle |
whitelisted authority + object is critical-severity |
| Soft |
has tag |
trust circle or 2-hop (≥2 bridges) |
never |
| Provenance |
created by, audited by, evaluated by, same as |
whitelist, trust circle, or 2-hop |
never |
Provenance answers “who is behind this address?” — who created, audited, or is associated with it. It is background context about the entity’s identity and history, not a safety warning.
Alert severity:
- Red (critical): hard lane + whitelisted authority + critical-severity object
- Yellow (warning): hard lane but non-critical (trust-circle report, or authority asserting a non-critical object), or soft flag from a follow or 2-hop contact
Key rules:
- A friend-of-a-friend (degree-2) can never un-suppress a hard report or make it critical.
- A hard report from a follow (not an authority) shows as a non-critical flag.
- Anonymous claims (no whitelist / circle / extended tie) are dropped entirely.
- Positive tags (
trustworthy, bullish, etc.) are not safety — they flow through familiarity.
What objects are critical (hard lane, authority-backed): scam, phishing, drainer, honeypot, exploit, sybil
What objects are warnings (hard lane, non-critical): spam, injection, botReport
Open question: Should additional object types be classified as warnings?
What objects are soft flags (trust-circle/2-hop only): suspicious, malicious, scammer, impersonation, bot
4. Tier placement — primary page vs. “More info”
| Section |
Primary page |
More info |
| Safety |
critical + all 1st-degree warnings/provenance |
2nd-degree-only (friend-of-a-friend) |
| Familiarity |
1-hop contacts with primary-tier claims |
1-hop demoted claims + all 2-hop contacts |
| Your take |
always on primary page |
— |
| Public claims |
never |
always |
The Domain card is asymmetric: only its critical banner shows on the primary page. All other Domain safety and familiarity live behind “More info”.
One home per claim: a claim shown by safety is excluded from familiarity; safety/familiarity/self claims are excluded from public claims. Public claims are sorted by stake, capped at 3 per subject.
5. Which branch?
Has anything to show on the primary page?
├── yes → Normal branch (+ "More info" button if extra content or public claims exist)
└── no → Has more-info or public claims content?
├── yes → Promote branch (show 'more' cards on the primary page, no button)
└── no → Empty branch
Examples
| Scenario |
What you see |
| Whitelisted “scam” report on a contract |
Red danger banner at the top of the address card |
A follow tagged the address suspicious |
“Safety flags” section on the address card (primary page) |
A FoaF tagged suspicious with 3 bridges |
“Flags from friends of people you follow” on More info |
| No network signal, but community has staked claims |
“No signals yet” + “More info” escape hatch into Public claims |
Self-call (to === from) |
No address card; Domain card only (if there’s a domain) |
Feature flags
| Flag |
Default |
What it controls |
EXTENDED_NETWORK_ENABLED |
on |
the entire 2-hop (friend-of-a-friend) layer; can be toggled off by the Hive Mind team once we have sufficient high-quality network data |
PUBLIC_CLAIMS_ENABLED |
on |
the public-claims escape hatch |
MIN_BRIDGES |
2 |
bridges required for a 2-hop contact to surface |
PUBLIC_CLAIMS_TOP_N |
3 |
max public claims shown per subject |
PUBLIC_CLAIM_DISPUTE_RATIO_PERCENT |
20 |
against/for ratio that marks a claim “disputed” |
These example screenshots don’t show Site / Domain claims because it would have taken more work and those sections more or less look identical to the address claims.
Different alert levels when I set smilingkylan.eth as an authority
More info" page example, note that public claims show market cap