Claude Code
Claude Code is Anthropic's official CLI for AI-assisted coding.
Quick Setup with Bankr CLI
The fastest way to get started is with the Bankr CLI:
# Print the env vars to add to your shell profile
bankr llm setup claude
Or launch Claude Code directly through the gateway — no manual config needed:
bankr claude # shorthand for `bankr llm claude`
This sets ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN automatically and spawns Claude Code. You can pass any Claude Code flags after it:
bankr claude --model claude-opus-5
# Dotted form also works — bankr claude auto-translates it
bankr claude --model claude-opus-4.8
If you haven't logged in yet, run bankr login first. The CLI uses your stored API key.
Model Format
Claude Code's --model flag (and the model field in ~/.claude/settings.json) accepts Anthropic wire IDs, which use dashes rather than dots in the version:
claude-opus-5claude-sonnet-5-5claude-sonnet-5claude-opus-4-8claude-haiku-4-5
If you pass the gateway-canonical dotted form (e.g. claude-opus-4.8), Claude Code silently falls back to its default — the flag appears honored but the real request is a different model, and you'll see the wrong model name in the UI banner.
bankr llm claude translates dotted → dashed automatically. If you invoke claude directly (via ANTHROPIC_BASE_URL) or edit settings.json by hand, use the dashed form explicitly.
1M-Token Context Tier
Claude Code exposes the 1M-token context tier as a [1m] model suffix
(claude-opus-5[1m]). Through the Bankr gateway the suffix is optional —
the gateway strips it before model lookup and enables the 1M beta from the
model's own context window, so claude-opus-5 and claude-opus-5[1m] send an
identical upstream request. Every model listed at 1M context in
Available Models already gets the full window:
bankr claude --model claude-opus-5
Simply omitting the suffix is the easiest way to avoid the quoting problem below.
[1m]If you do pass the suffix, it must be quoted. In zsh (the macOS default)
[1m] is a glob character class, so an unquoted id aborts the command before
the CLI ever sees it:
zsh: no matches found: claude-opus-5[1m]
Bash passes it through literally, so the same command can work on one machine and fail on another. Always wrap it in quotes:
bankr claude --model "claude-opus-5[1m]"
The same applies when you invoke claude directly via ANTHROPIC_BASE_URL.
Inside ~/.claude/settings.json it's already a JSON string, so no extra
escaping is needed:
{ "model": "claude-opus-5[1m]" }
Private Inference
Route Claude Code through a hardware-secured enclave (TEE) by pointing it at an open-weight model with the :private suffix:
bankr claude --model glm-5.3-flash:private
bankr llm claude forwards the model id verbatim — the dotted → dashed translation only rewrites Claude IDs and preserves any suffix — so the :private opt-in reaches the gateway unchanged. The gateway verifies the enclave's attestation on every request and fail-closes rather than downgrading. It works the same when you set "model": "glm-5.3-flash:private" in settings.json or invoke claude directly via ANTHROPIC_BASE_URL.
Private inference covers open-weight models only (DeepSeek, GLM, Kimi). Claude, GPT, and Gemini are not served confidentially, so there is no claude-*:private twin — append :private when you point Claude Code at an open-weight model. List the current set with bankr llm models --private, and see Private Inference for the full flow, response headers, and attestation verification.
Manual Configuration
Set the two variables bankr llm setup claude prints, in your shell profile (~/.zshrc, ~/.bashrc):
export ANTHROPIC_BASE_URL="https://llm.bankr.bot"
export ANTHROPIC_AUTH_TOKEN="bk_your_api_key_here"
Or in the env block of ~/.claude/settings.json, optionally with a default model:
{
"env": {
"ANTHROPIC_BASE_URL": "https://llm.bankr.bot",
"ANTHROPIC_AUTH_TOKEN": "bk_your_api_key_here"
},
"model": "claude-opus-4-8"
}
Use https://llm.bankr.bot (without /v1) for Claude Code.
See Supported Models for all supported models.