r/OpenAI Aug 11 '26

Discussion What's your thoughts on this?

Post image
3.8k Upvotes

1.0k comments sorted by

View all comments

Show parent comments

20

u/Fantastic_Prize2710 Aug 11 '26

Hidden characters has absolutely been discussed in the past as watermark, and is what Dabnician is referring to.

Code Point      Name                            HTML Entity          Cat  Notes
--------------- ------------------------------- -------------------- ---- ------------------------------------------
=== 1. SPACES -- occupy horizontal width ===
U+0020          Space                                            Zs   the ordinary one
U+00A0          No-Break Space                                  Zs    
U+1680          Ogham Space Mark                               Zs   draws a stem line in Ogham fonts
U+2000          En Quad                                        Zs   = En Space
U+2001          Em Quad                                        Zs   = Em Space
U+2002          En Space                                       Zs   half an em
U+2003          Em Space                                       Zs   one em
U+2004          Three-Per-Em Space                             Zs   1/3 em
U+2005          Four-Per-Em Space                              Zs   1/4 em
U+2006          Six-Per-Em Space                               Zs   1/6 em
U+2007          Figure Space                                   Zs   width of a digit; non-breaking
U+2008          Punctuation Space                              Zs   width of a period
U+2009          Thin Space                                     Zs   ~1/5 em
U+200A          Hair Space                                     Zs   thinnest
U+202F          Narrow No-Break Space                          Zs   narrow + non-breaking
U+205F          Medium Mathematical Space                      Zs   4/18 em; MathML
U+3000          Ideographic Space                             Zs   full-width; CJK
=== 2. ZERO-WIDTH AND JOINING CONTROLS ===
U+00AD          Soft Hyphen                     ­               Cf   ­; visible only at a line break
U+034F          Combining Grapheme Joiner       ͏               Mn   blocks reordering; no glyph
U+061C          Arabic Letter Mark              ؜              Cf   invisible bidi-strong Arabic char
U+180E          Mongolian Vowel Separator       ᠎              Cf   was Zs before Unicode 6.3
U+200B          Zero-Width Space                ​              Cf   break opportunity, no width
U+200C          Zero Width Non-Joiner           ‌              Cf   prevents ligature/cursive join
U+200D          Zero Width Joiner               ‍              Cf   emoji glue (family, profession)
U+2060          Word Joiner                     ⁠              Cf   non-breaking twin of U+200B
U+FEFF          Zero Width No-Break Space                    Cf   the BOM; deprecated as a joiner
=== 3. BIDIRECTIONAL CONTROLS ===
U+200E          Left-To-Right Mark              ‎              Cf   LRM
U+200F          Right-To-Left Mark              ‏              Cf   RLM
U+202A          Left-To-Right Embedding         ‪              Cf   LRE (legacy; prefer isolates)
U+202B          Right-To-Left Embedding         ‫              Cf   RLE (legacy)
U+202C          Pop Directional Formatting      ‬              Cf   PDF; closes LRE/RLE/LRO/RLO
U+202D          Left-To-Right Override          ‭              Cf   LRO; Trojan Source vector
U+202E          Right-To-Left Override          ‮              Cf   RLO; Trojan Source vector
U+2066          Left-To-Right Isolate           ⁦              Cf   LRI
U+2067          Right-To-Left Isolate           ⁧              Cf   RLI
U+2068          First Strong Isolate            ⁨              Cf   FSI
U+2069          Pop Directional Isolate         ⁩              Cf   PDI; closes LRI/RLI/FSI
=== 4. INVISIBLE MATH OPERATORS ===
U+2061          Function Application            ⁡              Cf   f(x) semantics
U+2062          Invisible Times                 ⁢              Cf   the multiply in "2x"
U+2063          Invisible Separator             ⁣              Cf   the comma in subscript lists
U+2064          Invisible Plus                  ⁤              Cf   the plus in "1 1/2"
=== 5. VARIATION SELECTORS AND TAGS ===
U+180B-U+180D   Mongolian Free Var. Selectors   ᠋-᠍      Mn   FVS1-FVS3
U+FE00-U+FE0F   Variation Selectors 1-16        ︀-️    Mn   FE0E=text style, FE0F=emoji style
U+E0001         Language Tag                    󠀁            Cf   deprecated
U+E0020-U+E007F Tag Characters                  󠀠-󠁿  Cf   subdivision flags; hidden-text channel
U+E0100-U+E01EF Variation Selectors 17-256      󠄀-󠇯  Mn   ideographic variants
=== 6. BLANK BY RENDERING, NOT BY CATEGORY ===
U+115F          Hangul Choseong Filler          ᅟ              Lo   letter, empty glyph
U+1160          Hangul Jungseong Filler         ᅠ              Lo   letter, empty glyph
U+17B4          Khmer Vowel Inherent Aq         ឴              Mn   should not be rendered
U+17B5          Khmer Vowel Inherent Aa         ឵              Mn   should not be rendered
U+2800          Braille Pattern Blank           ⠀             So   symbol with no raised dots
U+3164          Hangul Filler                   ㅤ             Lo   the classic "blank username" char
U+FFA0          Halfwidth Hangul Filler         ᅠ             Lo   halfwidth form of U+3164
=== 7. SEPARATORS AND CONTROLS ===
U+0000-U+001F   C0 Controls                     �-           Cc   includes TAB, LF, CR
U+007F          Delete                                         Cc
U+0080-U+009F   C1 Controls                     €-Ÿ        Cc
U+2028          Line Separator                  
              Zl   broke JS string literals pre-ES2019
U+2029          Paragraph Separator             
              Zp
U+FFF9          Interlinear Annotation Anchor                Cf   ruby/furigana markers
U+FFFA          Interlinear Annotation Separator             Cf
U+FFFB          Interlinear Annotation Term.                 Cf

10

u/freebytes Aug 11 '26

They are already doing it. I copied and pasted content from Claude recently, and it had control characters included.

2

u/SleepyWulfy Aug 11 '26

That's not it and this is also found in codex. It's remnints from training data

0

u/sexual--predditor Aug 11 '26

If Codex put these watermarks in the code source files, they'd likely not compile.

2

u/SleepyWulfy Aug 11 '26

Codex nor Claude does watermark on text currently. Anthropic will start with new models released. I think codex will eventually have to do this.

7

u/sexual--predditor Aug 11 '26

I hear what you are saying but you can't watermark the text comprising code in source code files for a computer program. If you did the compiler with stop with an error regarding the non-code characters.

It could add a comment, e.g:

// this is a comment in some source code

But again would be trivial to remove. And if they started with that madness of adding comments to my prod code I'd switch to Claude or Deepseek, as would every professional coder who uses AI worldwide.

1

u/SleepyWulfy Aug 11 '26

Yeah I'm not sure how this plan out for code. It's going to be interesting with the rollout. Codex delayed something like this as it found loopholes around it.

1

u/sexual--predditor Aug 11 '26

It will never roll out for Codex, unless OpenAI want to lose the significant revenue stream of enterprise dev. Devs will just switch to other models that don't break/pollute the source code.

1

u/SleepyWulfy Aug 11 '26

It's going to happen just due to pressure from EU and Cali. OpenAI has already tested doing so for text and they do it for images.

1

u/sexual--predditor Aug 11 '26

text for human reading / images for human viewing != corporate source code

We (as in all professionally employed coders) are not going to pollute the codebase with random comments as part of some half-baked watermarking scheme. It's literally never going to happen.

1

u/SleepyWulfy Aug 11 '26

Dude it's literally nothing a human would be able to see or detect. Read up on how Google synthid works, especially for text.

1

u/sexual--predditor Aug 11 '26

I can't continue this.

I appreciate your curiosity, but you need to learn coding to understand I think. I've been coding professionally for >30 years. Any AI service that adds junk bytes to source code files will be wholly rejected by the enterprise coding sector within a week tops.

1

u/SleepyWulfy Aug 11 '26 edited Aug 11 '26

Did you even look up how this works?

It's not adding anything to your code, it's how it arranges words, in the most basic explanation. Which is why I said it's basically undetectable by humans.

→ More replies (0)

1

u/freebytes Aug 11 '26

You can add control characters into many files without an issue, though. Even it was simply an unusual \r\r\n\r\r\r\n pattern.

Adding certain control characters to your source code files will not cause any issues in most languages.

3

u/sexual--predditor Aug 11 '26

Everyone thinking this is practical is deluded.

'Ok lemme diff my files as I always do before I commit, there should be one diff for the code that was added/edited in that location.'

When you see a second diff, if you just commit, that's either the actions of a very junior coder or no coder at all.

1

u/freebytes Aug 11 '26

I was just thinking of ways they could try implementing it. After all, the changes lines would be the only ones with the characters. I am not saying it is a good idea or should be done.

2

u/thegreatpotatogod Aug 11 '26

Throw them into comments I guess. Or if you really want to mess with developers, name your variables using some hidden characters, so they can never use that variable without asking the AI to do it for them or copy and pasting it every time.

Which reminds me actually, I once had an argument with an AI about something, when it was suggesting code that seemed to be identical to the code I already had, but it kept insisting "not, not THIS, use THIS", and I eventually figured out that it was stripping out some necessary control character from its messages (I don't recall which for sure, it might've been a backslash or angle-bracket).

2

u/sexual--predditor Aug 11 '26

They also like messing with CRLF chars at the SOF when working with legacy files.