[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"news-8a5451e5-dca1-4416-84da-b06b31b03c49":3},{"id":4,"title":5,"summary":6,"original_url":7,"source_id":8,"tags":9,"published_at":23,"created_at":24,"modified_at":25,"is_published":26,"publish_type":27,"image_url":13,"view_count":28},"8a5451e5-dca1-4416-84da-b06b31b03c49","Claude Code 在系统提示里悄悄埋 Unicode 标记：开发者工具的暗信号边界在哪","# Claude Code 在系统提示里悄悄埋 Unicode 标记：开发者工具的\"暗信号\"边界在哪\n\n开发者 Lo（thereallo.dev）逆向分析了 Claude Code 2.1.196 的本地二进制，发现 Anthropic 在客户端里悄悄嵌入了一套**提示词隐写（prompt steganography）**机制——在不改变肉眼可见文本的前提下，把调用方的\"分类指纹\"写进 system prompt，再由后端识别。\n\n## 触发条件\n\n逻辑藏在 `Crt()` 函数里，三条任一命中即激活：\n1. 设置了 `ANTHROPIC_BASE_URL` 环境变量（指向自定义网关或代理）\n2. 系统时区为 `Asia\u002FShanghai` 或 `Asia\u002FUrumqi`\n3. base URL 的 hostname 解码后命中\"已知域名列表\"，或包含 deepseek、zhipu 等 AI 实验室关键字\n\n## 编码方式\n\n域名与关键字列表以 base64 存储，再与固定 key 0x5B（91）做 XOR 解码。匹配后，`Today's date is 2026-06-30` 这行字符串出现两处微调：日期分隔符从 `-` 变成 `\u002F`；\"Today\" 后面的撇号在四种状态间切换（正常 `'`、已知域名 `'`、实验室关键字 `ʼ`、同时命中 `ʹ`）。大多数等宽字体下肉眼几乎看不出，但模型收到的请求里已经留下了分类标记。\n\n## 工程评价\n\n防滥用、识别灰产代理是正当诉求，但 Anthropic 选了**最不透明**的实现：藏在混淆 bundle、用 XOR 绕过静态扫描、改的还是开发者最不会怀疑的 system prompt。客户端拥有 FS 与 shell 权限，开发者的信任恰恰建立在每一行都可审计的前提上。\n\n更糟糕的是，绕过极容易——换 hostname、改时区、patch 二进制、套一层 wrapper 都能让这条信号失效。它对有组织的蒸馏方基本无效，**却把用本地网关、科研代理或企业代理跑 Claude Code 的正常开发者贴上了标签**。\n\n更合理的做法是显式 telemetry 字段 + 文档 + release notes，而不是把分类比特塞进不可见标点。当一个开发者工具开始悄悄改写 system prompt，剩下所有隐私声明都会变得更难让人相信。","https:\u002F\u002Fthereallo.dev\u002Fblog\u002Fclaude-code-prompt-steganography","572c1712-ddab-4455-a7f9-dc3ecc628a69",[10,14,17,20],{"id":11,"name":12,"slug":12,"description":13,"color":13},"1fcfaaf2-67de-43d3-9e35-5784852fec60","ai-safety",null,{"id":15,"name":16,"slug":16,"description":13,"color":13},"23544f6a-eea1-4f05-aa8d-749ca862d5d2","anthropic",{"id":18,"name":19,"slug":19,"description":13,"color":13},"dca4d0ab-7994-43a7-839e-7756fc77344a","claude",{"id":21,"name":22,"slug":22,"description":13,"color":13},"e82b2d09-81b2-43d1-977e-e018443b3c14","coding-agent","2026-07-01T02:01:00Z","2026-07-01T02:05:21.984569Z","2026-07-01T02:05:21.984580Z",true,"agent",2]