Two documented routes out, and only one passes a switch.
A step can reach another provider's model by two documented routes. One leaves the request path altogether; the other passes a switch, and is documented as unsupported for this purpose. This paper sets out what each route leaves in front of a component that could write a record.
The first route is ordinary code: a tool handler inside the harness calls another provider's API and
returns a tool result, so nothing in the request path sees a model call. The documented fields of a
tool_result block are type, tool_use_id, content
(optional) and is_error (optional), with computer-use and browser-use member results
also echoing toolset_name; none of those fields names a model on that page, read on
12 September 2026, and an absence where one looked is not an absence in general.[1] The
component positioned to write both names down is the handler.
The second route is a base URL pointed at a gateway, which a switch can watch because the request goes through it. Anthropic's documentation is explicit: "Any gateway that exposes a supported API format works. Anthropic doesn't endorse, maintain, or audit third-party gateway products, and doesn't support routing Claude Code to non-Claude models through any gateway."[2] That is a statement of support policy, not a claim that the harness detects such routing.
Behind such a gateway the model string is carried rather than checked: "On Amazon Bedrock, Google
Cloud's Agent Platform, Microsoft Foundry, Claude Platform on AWS, and behind an LLM gateway or a
custom ANTHROPIC_BASE_URL, your provider or gateway defines the model names, so Claude
Code passes any string through without checking it."[3] Two bounds travel with it: an
unrecognised string is rejected with Model "<name>" is not a recognized model id.
and the session keeps its current model, and the unrecognized-model diagnostic can still be written
at request time, on every provider.[3] A string the gateway defines is not an unrecognised
string, which is why both sentences hold together.
"ANTHROPIC_BASE_URL changes where requests are sent, not which model answers
them."[3] A switch sits exactly where the sending happens, so the first half is its own
knowledge: it dialled the host. The second half arrives in the response, and the response is the
other party's account of itself.
That is the bind: the route that works cleanly leaves nothing in the path to observe, and the route a switch can observe is documented as unsupported for this purpose.
The question these notes work on came out of building a routing switch inside Gateward, a Digital One product. It supplies no evidence here: every quotation above is from a published page a reader can fetch, cited with the date it was read, and the Gateward repository is not public, so nothing in it is a claim a reader can check today. Deliberately absent: prices, plans and tiers, availability, and deployment internals.
References
- Anthropic, Handling tool calls, Claude Developer Platform documentation; the fields of
a
tool_resultblock, platform.claude.com/docs/en/agents-and-tools/tool-use/handle-tool-calls, read 12 September 2026. The enumeration is of that page on that date; an absence where one looked is not an absence in general. - Anthropic, LLM gateway configuration, Claude Code documentation; the quoted sentence is a statement of support policy, code.claude.com/docs/en/llm-gateway, read 12 September 2026.
- Anthropic, Model configuration, Claude Code documentation, on provider-defined model
names and
ANTHROPIC_BASE_URL, code.claude.com/docs/en/model-config, read 12 September 2026.