An attachment we could not open
A file attached to an email that this engine could not parse, named in the response rather than passed over in silence.
How the text is hidden
classify walks the MIME tree and treats every non-text/* leaf with a non-empty body as an attachment; a text/* leaf is read as message content wherever it sits. Attachment bytes are already decoded by parsePart per Content-Transfer-Encoding, so the parser inverts its latin1 mapping and hands the bytes on rather than decoding a second time — the first cut re-decoded and turned a DOCX into noise that then read as an honest "we could not open it". The concealment being closed here is the envelope itself: until 0.221.0 the parser dropped every non-text leaf on a comment saying attachments were disclosed elsewhere, and nothing disclosed them anywhere, so a DOCX with white-on-white text that returned suspicious on its own returned clean and certified once attached to an email.
Why a model still reads it
An attachment is not hidden from the reader — it is hidden from a check that stops at the message body. A pipeline that hands an email to a model and extracts its attachments alongside puts a payload inside one into the model's context whether or not the check looked past the envelope.
What we do about it
Every attachment whose bytes are a format this engine parses is analysed by a recursive call, and its findings arrive with location.part prefixed attachment <name> → …, so an email inherits its attachments' verdicts. Anything that throws on parse — a photo, a calendar invite, a signature image — and anything beyond the embed-depth limit is collected by name and reason, and a single mime.uninspected-attachment finding lists them in its excerpt. It is informational, family disclosure, action disclosed: presence is disclosed, never graded, so the verdict stays clean and nothing enters summary.concealedRetained. summary.certified still goes false, because the attachment was not read.
How often it fires
Not measured. We publish a rate only where one has been measured against a named corpus of the right format, and no figure exists for this technique yet. Absence means unknown — never low.
Check your own file
Three commands: a key, credit, a verdict.
Start with the API