[BUG] Account permanently bricked: every request fails with "invalid high surrogate in string" at fixed position — corrupted server-side account state

Open 💬 0 comments Opened Jun 10, 2026 by shang1jin99-netizen

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Every single request from my account fails with:

API Error: 400 The request body is not valid JSON: invalid high surrogate in string

The error position is constant across all requests: it was char 5545 for ~10 days, and after a recent server-side prefix update it is now char 9710. The position shifted without any action on my side — corruption persists, confirming it is embedded in a fixed server-side prefix attached to my account, not in my input.

It reproduces with a single "hello" in a brand-new empty project, on both the desktop app (v2.1.150) and the web client (claude.ai/code). I have ruled out everything on my side: no ANTHROPIC_* env vars set, all Skills disabled, all personal plugins removed, all connectors disconnected (GitHub, Shopify, Chrome), both memory settings off, logout/login, latest version + full restart.

Trigger: it started immediately after a long worker task in my "campaign-ads-optimizer" project hit the usage limit and was interrupted mid-execution (~May 25). Hypothesis: persisted session/project state was truncated mid-surrogate-pair during the interruption, leaving an unpaired UTF-16 high surrogate (U+D800–U+DBFF with no following low surrogate) baked into my account's server-side state, which is now prepended to every request.

Support tickets 215474445988849 and 215474493572557 were filed 12 days ago with no human response. /feedback was also submitted from the exact session that triggered the bug. I have been fully blocked as a paying subscriber for 16 days. This needs someone to inspect and clean the unpaired surrogate from my account's persisted server-side state.

What Should Happen?

Any request (even a single "hello") should be sent successfully and receive a normal response. Instead, every request from my account is rejected with a 400 before reaching the model, because a fixed server-side prefix attached to my account contains an unpaired UTF-16 high surrogate that makes the request body invalid JSON.

Error Messages/Logs

API Error: 400 The request body is not valid JSON: invalid high surrogate in string: line 1 column 9711 (char 9710)

Earlier (for ~10 days, before a recent prefix update shifted the position):
API Error: 400 The request body is not valid JSON: invalid high surrogate in string: line 1 column 5546 (char 5545)

The position is constant across all requests at any given time, and identical across desktop app and web client.

Steps to Reproduce

On my account, no special steps are needed — it is 100% reproducible:

  1. Open Claude Code (desktop app or web client at claude.ai/code)
  2. Create a brand-new session in a brand-new empty project (no history, no files)
  3. Send any message, e.g. "hello"
  4. Request immediately fails with: API Error: 400 The request body is not valid JSON: invalid high surrogate in string (constant position)

Context for the trigger (~May 25): a long-running worker task in my "campaign-ads-optimizer" project hit the usage limit and was interrupted mid-execution. I restarted the task, and every request since then has failed. My hypothesis: persisted session/project state was truncated mid-surrogate-pair during the interruption, leaving an unpaired high surrogate (U+D800–U+DBFF without a trailing low surrogate) embedded in my account's server-side state, which is now prepended to every request.

Ruled out on my side: no ANTHROPIC_* env vars set; all Skills disabled; all personal plugins removed; all connectors disconnected; both memory settings off; logout/login; latest version + full restart; reproduces identically on web client (so not client-local state).

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

First observed on 2.1.141, persists through 2.1.150

Claude Code Version

2.1.150 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

  • Support tickets filed 12 days ago with no human response: Intercom conversation IDs 215474445988849 and 215474493572557
  • /feedback was submitted from the exact session that triggered the bug, so the raw transcript containing the corrupted state should be available to engineering
  • The error position shifting from char 5545 to char 9710 (without any action on my side) after what appears to be a server-side prefix update confirms the corruption is embedded in a fixed account-level prefix, not in my input or local config
  • Account: shang1jin99@gmail.com
  • Fully blocked from Claude Code for 16 days as a paying subscriber

Screenshots attached showing the constant error position across different projects, new chats, and the web client.

View original on GitHub ↗