Build1 distinct publisher3 min readPublished
Hidden Word runs and PowerPoint speaker notes survive text extraction intact, which leaves the boundary between a source file and the bundle an agent trusts as the only useful checkpoint. The new library is rule-based on purpose.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
An extractor's job is to walk a document and return strings. Invisibility is a property of how a viewer is told to draw those strings, not of the strings themselves. A PDF can carry a rendering mode telling viewers not to display text, or set the fill colour to the page background [2]. Neither changes what a parser hands back. Word is blunter: hidden is an attribute on the run, sitting right next to the text, independent of colour or size [3]. PowerPoint notes live in their own part of the package, and most extraction tools read them by default [4]. Spreadsheets hide whole rows, columns and sheets, and a cell comment shows only on hover [5]. Nothing here is broken. What is missing is a policy, because the pipeline has no reason to tell deliberate concealment from ordinary content unless something checks [8].
That policy is expensive precisely because concealment is normal. Hidden helper columns, private presenter notes and draft text somebody hid instead of deleting are everyday artefacts [7]. So a detector keyed on hidden content will fire on a large number of legitimate files, and the write-up as published carries no false-positive rate and no evaluation corpus [3]. There is no benchmark table to argue with. The transferable question is about your corpus: if your PDFs come from vendors and your spreadsheets from other teams' exports, quarantine volume is the adoption cost, and it lands on whoever owns the knowledge base. That the library returns quarantine as an action distinct from block suggests the author expects exactly that [17].
The engineering choices underneath are sound. No LLM dependency, no network calls, deterministic rules, argued as a considered tradeoff for reproducibility and a light footprint in someone else's pipeline [18]. Deterministic means diffable in CI, which is what you want from a gate. The two halves age differently, though. Structural hidden-content detection keys on a document property an attacker cannot avoid while staying invisible. Pattern matching for language characteristic of an instruction aimed at an AI system [14] is a blocklist, and blocklists lose to rephrasing. Reporting both as separate findings when they co-occur [16] is the honest way to score that.
Now the aside worth having. The post claims an adapter for each of six supported formats, then lists seven [1]. Count it yourself. The interesting part is which two have no documented hiding mechanism: plain text and Markdown [2]. Markdown is what OKF stores, as files agents read directly with no processing layer in between [11], and that directness is the format's stated design goal [12]. So the guard only helps where a source document is converted into the bundle [13]. Any file that reaches the bundle by another route never meets sanitize().
The library also makes no claim about the accuracy of content it passes [19]. Read that as the scope statement it is. It turns an invisible-text problem into a visible-text problem, and visible text still needs provenance for entirely separate reasons.
Ranked by verification strength, evidence, and original report placement.
Extraction tools capture everything present in a source document, including content a human reviewer would never see.
A PDF can render text in a rendering mode that instructs viewers not to display it, or set its fill colour identical to the page background.
A Word document has an explicit hidden attribute on any run of text, independent of colour or size.
A PowerPoint file's speaker notes are parsed by most extraction tools but never appear to an audience watching the presentation.
A spreadsheet can mark entire rows, columns or sheets as hidden, or attach a comment to a cell that is invisible unless hovered.
An HTML page can hide an element from a browser's rendering entirely via a handful of standard CSS properties.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 28, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
security
Google's reference agent approved a $10,000 refund on a $149 order, on purpose1 distinct publisher
build
Before you spend quota on an agent skill, make it pass an eval harness1 distinct publisher
build
A deploy between settlement and send pushes the receipt's business key out of both provider accounts1 distinct publisher
build
A five-check gate is the only docs accessibility test that will survive contact with CI1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Strong mechanics, single voice
The story splits cleanly. That hidden text survives extraction is a property of PDF, OOXML and HTML that anyone can confirm without trusting the author, and it carries most of the weight. Everything about the remedy — two independent checks, no network calls, deterministic rules — comes from the person who wrote it, on his own blog, with a repository link standing in for verification.
A version number and an install line
The whole adoption record is the announcement itself: v0.1.0, a public repo, pip install okf-guard[all]. No installs, no dependants, no pipeline that has put it in front of real documents. The author asking for feedback from people who have worked on document security is a fair signal of where this sits — the beginning.
Modest overreach in a restrained post
By release-note standards this is disciplined: no LLM sprinkled on for effect, explicit non-goals, an open refusal to vouch for content it passes. The overreach is quieter. A tool that flags features the same post calls common and legitimate is sold on detection with not one accuracy number attached, the format count does not match its own list, and the urgency depends on a reading of Google's specification supplied by the guard's author.
The author is the product
One person announcing his own library, on a platform where the reward is attention to it, with the problem statement pointed at a freshly published Google specification — the timeliest possible hook. He discloses authorship openly and takes the trouble to list what the tool cannot do, which cuts against the worst reading. It does not change the fact that the threat framing and the fix arrive from the same hand.
Confident on the risk, not the remedy
We can say with little hesitation that hidden document content flows into agent context untouched, and that this v0.1.0 exists and describes a specific interface. Beyond that the footing thins fast: nobody has measured the detector, nobody outside has read the code, and the OKF premise has no second source. Enough to act on the problem; not enough to endorse the tool.