-
v0.44.2 Stable
released this
2026-08-25 15:12:31 -05:00 | 73 commits to main since this releaseTwo shipped defects in the same brand check, pointing opposite ways — and an
instructions block that warned about a flag with no parameter behind it.Fixed
-
brand_mismatchno longer reads a brand out of the middle of a word. The check
askedbrand in display_nameagainst bare substrings, andupsis inside groups,
signups, meetups and startups — so"Facebook Groups" <…@facebookmail.com>, a
legitimate message straight from the brand's own domain with no relay in the path, was
flagged as a UPS impersonation. That is not cosmetic:brand_mismatchis not in
unsubscribe.NON_BLOCKING_FLAGS, so it was a hard refusal to unsubscribe from real
mail.irsinside firstclass is the same shape. The display name is now split into
words, and matched against those and against runs of adjacent words glued together. -
The same check now fires for brands written as separate words. The tokens are
spelled closed up —bankofamerica,cashapp,wellsfargo— and no display name is
written that way, so matching single words meant those entries could never match
anything. They were dead from the day they were added, for exactly the brands where an
impersonation costs the most. -
A brand token inside a domain label is no longer accepted as the brand's domain.
The domain was flattened (paypal-billing.com→paypalbillingcom) and tested for the
token anywhere inside it, sopaypal-billing.comandapple-id-verify.com— the exact
shape a lookalike takes — passed silently. The flattening could not simply be
dropped: it was also what letbankofamerica.commatch. So_BRANDSbecame
_BRAND_DOMAINS, and a domain qualifies two ways — it is one the brand is listed as
sending from (exact or subdomain, theauthresults.is_trustedrule), or the brand is a
whole dot-label of it. The map is deliberately sparse, because the label rule already
coversusps.comandcorporate.target.com;facebookmail.comis the shape that
needs an entry, and it is indistinguishable from a lookalike by string rules alone.Only brand-controlled domains belong in that map. Shared sending infrastructure —
amazonses.com, an ESP's bounce domain — must never be listed: the map grants the
brand's name to whatever it contains, so one shared domain would hand every tenant on
that platform a free pass. -
icloudmail's instructions block describes the delete split as it actually is.
It still said deleting was "reversible unless permanent is set".delete_messagehas
taken a singlemessage_idsince 0.30.0, when that argument was split out into
expunge_message; the sentence was never updated. Both halves pointed the wrong way at
once — a warning attached to an argument that does not exist, and no warning at all on
expunge_message, which is registered wheneverMAIL_EXPUNGE_ENABLEDis set and
went unmentioned. The text is now conditional on that gate, the way_absent()already
conditions the rest of the capability prose.Worth naming as a class: a schema that drifts from its implementation surfaces as a
type error at call time, but an instructions block that drifts from the schema surfaces
as nothing at all — and it is injected into the model's context and acted on before any
tool call is made. This one failed safe. The same drift running the other way is
confident action on a false premise.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-