This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

termsafe's mask (internal/termsafe/termsafe.go, isZeroWidth and the bidi set) leaves several invisible rune classes unmasked: the Unicode tag characters U+E0000 to U+E007F, the interlinear annotation marks U+FFF9 to U+FFFB, U+180E (Mongolian vowel separator) and U+034F (combining grapheme joiner). They render invisibly, so text carrying them passes Sanitize (and every Sanitize-equality check built on it) unchanged and can hide content on a terminal or in a transcript; tag characters can also carry hidden instructions to an agent reading the output. Pre-existing across every Sanitize caller. Found by the security reviewer of fix/sec-build-next-series.

issueresolvedminoriss-2610121602237516

termsafe's mask (internal/termsafe/termsafe.go, isZeroWidth and the bidi set) leaves several invisible rune classes unmasked: the Unicode tag characters U+E0000 to U+E007F, the interlinear annotation marks U+FFF9 to U+FFFB, U+180E (Mongolian vowel separator) and U+034F (combining grapheme joiner). They render invisibly, so text carrying them passes Sanitize (and every Sanitize-equality check built on it) unchanged and can hide content on a terminal or in a transcript; tag characters can also carry hidden instructions to an agent reading the output. Pre-existing across every Sanitize caller. Found by the security reviewer of fix/sec-build-next-series.

Security scope (abcd-fixes-what-it-adds): the route exists only through abcd's own masking helper and the surfaces that rely on it, so abcd fixes it; widening the mask changes nothing about how a repository works.

Frontmatter

idiss-2610121602237516
typeissue
lifecycleresolved
severityminor