The story making the rounds is that Claude Code has been caught "steganographically marking" requests — inserting invisible Unicode characters into the text that goes to the model. Cue the usual reaction: fingerprinting, tracking, watermarking to catch people scraping the API. Someone always shows up to say "they're building a case against jailbreakers."
Maybe. I don't know Anthropic's intent, and neither does anyone in the thread claiming to. But that argument is a rabbit hole, and it's the least interesting thing here. The interesting thing is much more boring and much more useful: there is metadata riding inside your prompt text, in-band, indistinguishable from content, and almost none of the tools in your pipeline know it's there.
That's not a scandal. It's a bug class. And it's one you can find in your own code by lunch.
What "invisible characters" actually means
The characters people point at are things like the variation selectors (U+FE00–FE0F and the supplement at U+E0100–U+E01EF), zero-width joiner (U+200D), zero-width space (U+200B), zero-width non-joiner (U+200C), bidi controls, and the deprecated tag block (U+E0000–U+E007F). In common editors and terminals these often render invisibly — as nothing, or as a modifier on the preceding glyph — so a human skimming sees clean prose. "Often," not "always": some renderers show replacement boxes, some reorder text, and an inspection tool will happily surface them. But in the default path most people read through, they're gone. They still survive copy-paste. They still count toward length. They can still carry bits.









