Skip to main content

third-option

Signs Claude Code in to a Third Option gateway from anywhere, and keeps the session fresh.

Claude Code's own gateway login accepts only a gateway on a private network: every address the host resolves to must be RFC 1918, CGNAT or loopback, and no setting widens that. A gateway with a public address — a hosted one, or a company's reached without the VPN — has no interactive way in. This is that way in.

Install

cargo install third-option
npm install -g third-option
uv tool install third-option        # or: pipx install third-option

Prebuilt for Linux x64 and arm64 (glibc) and Apple Silicon; cargo install builds anywhere Rust does.

Use

third-option enroll https://gateway.example.com

That opens the gateway's sign-in page, waits for you to confirm the code it printed, then writes Claude Code's settings.json ($CLAUDE_CONFIG_DIR, else ~/.claude) so that:

  • env.ANTHROPIC_BASE_URL is the gateway and model discovery is on, so the model picker shows what the gateway serves;
  • apiKeyHelper is third-option token, which prints the session token and renews it through the gateway's refresh grant before it runs out;
  • whatever the gateway pushes from /managed/settings — model, permissions, the telemetry exporter — is merged in, the operator's keys winning and lists such as permissions.deny unioned;
  • when telemetry is pushed, otelHeadersHelper is third-option otel-headers, so exports to the gateway carry the session and land.

Nothing else in the file is touched. Run enroll again to pick up a changed policy. third-option status shows the session, when it ends, and what Claude Code points at; third-option models lists what this identity may use.

Verb Does
enroll [url] sign in if needed, then point Claude Code at the gateway
login <url> sign in only — for a scripted client that sets ANTHROPIC_BASE_URL itself
token print a fresh session token (apiKeyHelper)
otel-headers print {"Authorization": "Bearer …"} (otelHeadersHelper)
status, models, logout [--all]

--gateway <url> picks a gateway; otherwise $ANTHROPIC_BASE_URL — which Claude Code sets from the env block when it runs a helper — then the last login. Sessions live in $THIRD_OPTION_HOME, else ~/.config/third-option, readable only by you. --no-browser prints the link instead of opening it.

Two modes, one gateway

Public — this CLI Private network — Claude Code's own login
Reaches the gateway over any TLS route private addresses only
Enrollment third-option enroll /login, pinned by a machine policy file
Credential apiKeyHelper the pinned gateway session
Managed settings merged into your settings.json by enroll pushed live, not editable
Telemetry signed by otelHeadersHelper signed by the session

They are exclusive on one machine: the policy file that turns on Claude Code's own gateway login (/etc/claude-code/managed-settings.json; /Library/Application Support/ClaudeCode/ on macOS) makes it refuse every helper credential. enroll and status say so when they see one. The private-network mode is the stronger one, so a fleet on its own network should use it; this CLI is for everyone else.

Scripted use

export ANTHROPIC_BASE_URL=https://gateway.example.com
export ANTHROPIC_AUTH_TOKEN="$(third-option token)"

token renews the session when it has under fifteen minutes left, so a long-running script can call it again rather than cache the value.

License

MIT OR Apache-2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

third_option-0.1.0-py3-none-manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

third_option-0.1.0-py3-none-manylinux_2_28_aarch64.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

third_option-0.1.0-py3-none-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file third_option-0.1.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for third_option-0.1.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 322d64eeaafd8f2d6f410a96760335f861aac0b0d80c81722a27230aecaaf56d
MD5 6c50c4d48748a402353d0b62104588db
BLAKE2b-256 f4dc16080f10d20565a28d8375fc90f4fe8641a4f63302ef0499fadb96eb33bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for third_option-0.1.0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release-third-option.yml on 3rd-option/monorepo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file third_option-0.1.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for third_option-0.1.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78e54c45e1d62a44071c97ac556433077726599b949ac9dafc443f2766c6c58f
MD5 36341d608a282c88c82198e64fb91b32
BLAKE2b-256 94e61f5c42dd0a9496bcb948ad545ddbac25a37041f363772c30dd8ffbe083e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for third_option-0.1.0-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release-third-option.yml on 3rd-option/monorepo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file third_option-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for third_option-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ac0b0bf36987b3ef8df65e939604eac5316fb0d2ac8de6f34a6100f442b9f0b
MD5 35f8e98cade984b0b6d915e985799a2c
BLAKE2b-256 ad91345b5f800d76716133018a7cf596c2e7b73ba92af741792b23eb79f6f099

See more details on using hashes here.

Provenance

The following attestation bundles were made for third_option-0.1.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release-third-option.yml on 3rd-option/monorepo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.0

3 files

0.2.0

3 files

This release

0.1.0 This release

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page