The hop nobody tests
A coding session can fail before the model sees a useful prompt. September’s Claude Code regressions exposed two different contracts between the client and an intermediary: how it signs in, and which tool schemas the endpoint accepts.
A gateway or compatible endpoint adds a contract that a direct model test cannot cover; the September failures make the real interactive route the useful unit of upgrade verification.
01The summary command works; the coding session fails
Claude Code 2.1.265 shipped on 8 September 2026. A gateway sign-in regression was repaired that evening in 2.1.266. A separate request-validation failure on third-party compatible endpoints remained until 2.1.268 on 10 September. Both could leave a coding session unusable, but they involved different contracts between the client and its destination.124
Imagine a team routing its coding client through an intermediary. An engineer updates the client, runs a short non-interactive prompt and gets a response. Later, an interactive session fails with HTTP 400 before it edits a file. The engineer has tested the same backend twice, but the two requests need not carry the same tools. This is a hypothetical team, chosen to follow a failure that users actually reported.
In Claude Code issue #92964, the reporter described precisely that split: interactive requests failed against a third-party Anthropic-compatible backend while claude -p worked. Comparing captured bodies led them to the Artifact tool schema; removing one regex constraint made the request succeed. We read their reproduction account, not an independent run of it.7
The eventual 2.1.268 release note confirms a narrower product fact: since 2.1.265, a regex in that tool’s input schema could make turns fail with HTTP 400 on third-party compatible endpoints. It names ANTHROPIC_BASE_URL as the affected route. It does not establish that all gateways or every compatible backend failed.4
02A tool can break a turn without being called
The relevant schema constrained an identifier using Unicode property escapes such as \p{Cc}. In the reports, the downstream validator could not accept that expression. Rejecting the declaration rejected the request containing it, before the model could choose which tool to use. The user did not have to ask for an Artifact operation to encounter the failure.89
For the imagined engineer, asking a simpler coding question would leave that declaration in place. Changing the task text could waste time without changing the rejected payload. The first report’s successful replay after removal of the constraint is useful because it isolates one difference; it is stronger evidence about location than a general claim that the new version stopped working.7
The issue authors considered the expression valid for an ECMA-262 engine with Unicode support and described the problem as a validator-dialect gap. That remains their technical account. We did not audit the downstream implementation or settle conformance responsibility. An endpoint can resemble an API at the message level yet disagree with one of the client’s newer schema constructs.8
03Two failures on different clocks
The same 2.1.265 release introduced a separate authentication regression. According to the 2.1.266 repair note, setting CLAUDE_CODE_USE_GATEWAY alone began forcing Cloud-gateway sign-in in configurations that used another credential route. The repair restored its previous dependence on both the base URL and auth-token settings. This concerned credential selection, rather than the Artifact schema.12
The gateway repair shipped about 3.3 hours after 2.1.265. The schema repair arrived about 47.9 hours after that release, including roughly 43 hours after the first issue was opened. Version 2.1.267 appeared between the reports and the repair. The table preserves the September timestamps so the comparison can be checked without turning the interval into a claim about the maintainers’ motives.12346789
| Event | UTC timestamp | Since 2.1.265 |
|---|---|---|
| 2.1.265 ships both regressions | 8 Sep 20:37:31 | — |
| 2.1.266 fixes the gateway path | 8 Sep 23:55:14 | 3.30 h |
| First public report of the 400 (#92964) | 9 Sep 01:27:41 | 4.84 h |
| Second report, names 2.1.266 (#92969) | 9 Sep 01:57:50 | 5.34 h |
| Third report, z.ai GLM (#93029) | 9 Sep 08:10:13 | 11.54 h |
| 2.1.267 ships without the fix | 9 Sep 19:58:14 | 23.35 h |
| 2.1.268 fixes the 400 | 10 Sep 20:30:54 | 47.89 h |
04The intermediary has its own responsibilities
The imagined team might operate a gateway for one reason and reach a compatible model endpoint for another. Those are distinct arrangements. A gateway forwarding Claude requests still has headers, authentication and feature support to preserve; a backend implementing an Anthropic-compatible format has its own interpretation of the payload. Calling both “the proxy” can conceal which component rejected the request.
Anthropic’s current gateway guide says third-party gateway products are not maintained or audited by Anthropic and need to keep pace with Claude Code capabilities. It also explicitly says routing Claude Code to non-Claude models through a gateway is unsupported. That current statement describes today’s documented support boundary; it does not retroactively prove the exact September policy or remove the regression acknowledged in the historical release note.10
For the engineer, the available evidence begins with the response origin and error category. A sign-in refusal and a schema-validation 400 can look like the same unusable terminal while needing different repairs. Retaining the client version, route and a sanitized error preserves that distinction without logging credentials or the contents of a private repository.
05Exercise the request that will do the work
A proposed upgrade check for this team would open an interactive session through its actual route, with the tools it normally exposes, and complete a harmless task in a disposable repository. A small print-mode prompt can remain a useful connectivity check. The report shows why it was insufficient evidence for this interactive payload.7
Keep the last known working client available for comparison. If the new version returns 400, compare sanitized tool declarations and the validator’s error before changing authentication or weakening schema checks. The authors’ request replays helped isolate the September defect, but manually stripping a constraint in production could change what identifiers are accepted. It is a diagnostic experiment, not a general deployment recommendation.89
Then repeat the accepted task after the proposed repair. A successful login establishes access; a response from the model establishes that one request passed; a reviewed change establishes something about the complete task. These observations answer different questions. We have not performed that trial, and the public release note cannot substitute for the team’s own route and configuration.
06What the clocks cannot tell us
The two repair intervals are measurements from one release sequence. They do not establish a general ranking of gateway and third-party users, the relative difficulty of the fixes, or how quickly anyone began work. We have no internal triage record, installation counts or comparable series across later regressions. The earlier article inferred too much about support priority from elapsed time alone.
There is still a concrete consequence. The engineer’s direct connectivity result did not cover the interactive request, and the gateway-auth repair did not cover the schema rejection. In this historical case, 2.1.268 is the release that names the latter fix. For a current rollout, the useful evidence is a completed task through the intended route on the proposed build, rather than treating that September version as a present-day pin.24
→So what
- Record which route a coding session uses and which component produces an error. Distinguish authentication failures from payload rejection.
- Include a harmless interactive tool task through the real intermediary in upgrade checks; retain a separate connectivity check and the last known working build.
- Use sanitized payload comparisons for diagnosis. Apply the supported repair, then repeat the task without weakening production validation merely to obtain a successful response.
?What would change our mind
- A correction showing that the Artifact declaration did not cause the reported rejection would change the mechanism. The vendor’s 2.1.268 note currently corroborates that location.
- A representative release-to-fix history and maintainer records could support or refute a claim about support priority. This pair of intervals cannot.
- A route-specific regression suite could make a smaller local check sufficient if it covers the actual client payload, validator and authentication configuration. We have not seen evidence establishing that coverage for the hypothetical team.
- 1github — claude-code v2.1.265 (published 2026-09-08T20:37:31Z)read 2026-10-18
- 2github — claude-code v2.1.266, gateway regression revert (2026-09-08T23:55:14Z)read 2026-10-18
- 3github — claude-code v2.1.267 (2026-09-09T19:58:14Z)read 2026-10-18
- 4github — claude-code v2.1.268, third-party endpoint 400 fix (2026-09-10T20:30:54Z)read 2026-10-18
- 6GitHub releases API — v2.1.267 timestamps and bodyread 2026-10-18
- 7claude-code issue #92964 — Artifact input_schema \p{Cc} pattern, 400 on compatible backends (opened 2026-09-09T01:27:41Z)read 2026-10-18
- 8claude-code issue #92969 — regression present in 2.1.266, strict validators reject (opened 2026-09-09T01:57:50Z)read 2026-10-18
- 9claude-code issue #93029 — z.ai GLM endpoint, error code 1210 (opened 2026-09-09T08:10:13Z)read 2026-10-18
- 10Claude Code — current gateway guide and support boundary, read 18 October 2026read 2026-10-18