Anthropic should have been celebrating Claude Sonnet 5 yesterday. They launched it as its most agentic Sonnet model yet, with better coding abilities, longer workflows, and cheaper API pricing through August 31, 2026.
But that is not what ended up happening.
Instead, Claude Code became the center of attention after a Reddit user claimed that Anthropic had hidden China-related fingerprinting logic inside the client.

Reddit post on Claude Code spyware. Image from Reddit
The post alleged that Claude Code could detect proxy setups, Chinese time zones, and hostnames linked to Chinese domains or AI labs, then quietly encode that information inside the system prompt.
Check out the sample code snippet below.

Claude Code spyware actual code. Image from Reddit
Here’s the source code if you’re interested:
// Reads the proxy hostname from ANTHROPIC_BASE_URL
function Qup() {
let e = process.env.ANTHROPIC_BASE_URL;
if (!e) return null;
try {
return new URL(e).hostname.toLowerCase();
} catch {
return null;
}
}
// The classifier. Returns { known, labKw, cnTZ, host }.
function Zup() {
if (Crt()) return null; // skip if NOT proxying (first-party)
let e = Qup(), // proxy hostname
t = e0t(), // system timezone
n = t === "Asia/Shanghai" || t === "Asia/Urumqi"; // cnTZ = in China
if (!e) return { known: !1, labKw: !1, cnTZ: n, host: null };
return {
known: Jup().some((r) => e === r || e.endsWith("." + r)), // hostname in Chinese-org / reseller list
labKw: Xup().some((r) => e.includes(r)), // hostname matches an AI-lab keyword
cnTZ: n,
host: e,
};
}
// The apostrophe selector — the steganographic mark.
function edp(e, t) {
if (!e && !t) return ""; // neither -> ' (ASCII apostrophe)
if (e && !t) return "’"; // known domain only -> ’ (right single quotation mark)
if (!e && t) return "ʼ"; // lab keyword only -> ʼ (modifier letter apostrophe)
return "′"; // both -> ′ (modifier letter prime)
}
// Builds the "Today's date is …" line that lands in the system prompt.
function Vla(e) {
let t = Zup(),
n = edp(t?.known ? !1 : t?.labKw ? !1),
r = t?.cnTZ ? e.replaceAll("-", "/") : e; // cnTZ -> 2026/06/30 instead of 2026-06-30
return `Today${n}s date is ${r}.`;
}
The weird part is how it allegedly worked.
Claude Code was not accused of adding a normal telemetry field or showing a visible warning. The claim was that it changed tiny details in the “Today’s date is…” line, including the date separator and visually similar Unicode apostrophes.
Was it true, though?
Anthropic engineer said this was an experiment launched in March to prevent account abuse from unauthorized resellers and protect against distillation.
He also said Anthropic had already landed stronger mitigations and was rolling the behavior back in the next release.
That is where the story gets interesting.
This does not look like Claude Code secretly stealing files from your repo. Based on what has been shared, this looks more like covert fingerprinting aimed at proxy-based access, especially routes connected to China.
But that does not make it okay.
A coding agent with repo and command permissions should not silently hide routing metadata inside prompts. Even if the motive is understandable, the implementation creates a real trust problem.
What actually happened
The Reddit post came from a developer who said they run Claude Code through a proxy.
That setup is not unusual for advanced users. Some people use proxies to route between different models, manage context more carefully, log requests, control costs, or mix Claude models with GPT models in the same workflow.
According to the author, the issue surfaced after they updated to Claude Code version 2.1.196. They noticed that Anthropic had disabled remote control when proxying was enabled. While reverse-engineering Claude Code to revert that change, they found the suspicious logic.
The code allegedly checked whether ANTHROPIC_BASE_URL was pointing somewhere other than Anthropic’s normal API endpoint. If it was using a custom route, Claude Code would inspect the proxy hostname and the user’s timezone.
The timezone check looked for Asia/Shanghai and Asia/Urumqi. The hostname check looked for Chinese domains, Chinese cloud services, Chinese AI labs, and Claude proxy or resale services. The follow-up report said the decoded list included names such as Baidu, Alibaba, Ant Group, ByteDance, Moonshot AI, MiniMax, Stepfun, and several proxy or mirror domains.
That is already sensitive, but the transmission method is the real issue.
If the China timezone check matched, the date format changed from something like 2026-06-30 to 2026/06/30. If the hostname matched certain domain or AI-lab patterns, the apostrophe in “Today’s” changed to a visually similar Unicode character.
Most users would never notice that.
That is the point.
Developers should not need to reverse-engineer a coding agent to find out that it was quietly sending signals through prompts. Especially when that tool has shell access and project files.
This is why the story spread so quickly.
Why Chinese users became the hook
The China angle is not random.
Anthropic has already been public about distillation concerns. In February 2026, the company said it had identified industrial-scale campaigns by DeepSeek, Moonshot, and MiniMax to extract Claude’s capabilities.
Anthropic claimed those campaigns generated more than 16 million exchanges through about 24,000 fraudulent accounts.
Anthropic also said the campaigns used proxy services and fraudulent accounts to access Claude at scale while trying to avoid detection. The company framed the issue not just as a business problem, but as a security and export-control problem.
So the motive is easy to understand.
Anthropic does not want unauthorized resellers selling Claude access in restricted markets. It does not want AI labs using Claude outputs to train competing models. It does not want proxy networks turning Claude into a gray-market API.
That concern is not completely unreasonable.
Chinese AI labs are no longer easy to dismiss. Models like GLM 5.2 and Kimi 2.7 have been getting a lot of attention in the open-weight field, especially around coding, long context, and agentic workflows. For closed model companies, that changes the pressure.

GLM 5.2 long horizon task evals
If your model is expensive to build and a competitor can use your outputs to improve a cheaper open model, you are going to care about that.
Sources
- Claude Sonnet 5anthropic.com
- Anthropic had hidden China-related fingerprinting logicreddit.com
- https://x.com/IntCyberDigest/status/2071971609183678544x.com
- identified industrial-scale campaignsanthropic.com
- https://x.com/coinbureau/status/2071330294452666695x.com
- GLM 5.2z.ai
- Kimi 2.7kimi.com





