Digital One Foundation The Delegation Record
Paper 002 · Architecture

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.

The sentence this paper turns on

"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.

TOOL HANDLER · NOT IN THE PATH the call leaves from inside the handler harness asks for a tool handler calls another provider tool_result · content · is_error no model call in the path — a tool result is the record the handler is the one component holding both names GATEWAY · IN THE PATH the call is visible to whatever sits in front of it ANTHROPIC_BASE_URL set gateway defines the names model string · passed through documented as unsupported for this purpose where requests go is not which model answers
Figure 1 The same step, by two documented routes. On the left the call leaves the harness inside a tool handler, so what the path records is a tool result; on the right it stays in the path and reaches a gateway that defines the model names itself. Absent an attestation from the party that ran the model, neither route places an object in the path that a component reading plaintext could use to establish which model produced the answer.
On the provenance of this material

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

  1. Anthropic, Handling tool calls, Claude Developer Platform documentation; the fields of a tool_result block, 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.
  2. 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.
  3. 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.