---
title: "xAI / Grok"
description: "Claude Code の推論を xAI の Grok へルーティングする — あなたの SuperGrok / X Premium+ サブスクリプション（grok プロバイダー、OAuth）または xAI 開発者 API（xai プロバイダー、API キー）のいずれか。"
image: "https://shunt-docs.pages.dev/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://shunt-docs.pages.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# xAI / Grok

2 つの組み込みプロバイダーが Claude Code を xAI の **Grok** モデルへルーティングします。両者は**どう認証し、どの xAI サーフェスにアクセスするか**だけが異なります — どちらか一方を選んでください。

| プロバイダー | 認証 | バックエンド | 課金 |
| :-- | :-- | :-- | :-- |
| **`grok`** | `xai_oauth` — あなたの **SuperGrok / X Premium+** ログイン | `cli-chat-proxy.grok.com/v1`（Grok CLI チャットプロキシ） | あなたのサブスクリプション — トークン単位の課金なし |
| **`xai`** | `api_key`（`XAI_API_KEY`） | `api.x.ai/v1`（開発者 API） | 従量制の API クレジット |

どちらも xAI の Responses 方言を話す **`kind = "responses"`** プロバイダーです — [Codex](/ja/guides/codex/) と同じ変換パスであり、このページはそれをミラーしています。各トピックを繰り返すのではなく、より深いトピックページ（[Effort とコンテキスト](/ja/guides/effort-and-context/)、[モデルディスカバリー](/ja/guides/model-discovery/)、[プロバイダー](/ja/guides/providers/)）へリンクします。

> **2 つのパスは互換ではありません**
>
> **サブスクリプション**の bearer は **`grok`** プロキシに対してのみ機能します — 開発者 API（`api.x.ai`）は `402`（`personal-team-blocked:spending-limit`、*"…need a Grok subscription…"*）で拒否します。**API キー**は **`xai`** に対してのみ機能します。手元にある認証情報に合うプロバイダーへ Grok スラッグをルーティングしてください。

## クイックスタート

コーディングエージェントにセットアップを任せることもできます。`shunt add` はどちらのパスについてもセットアップ用ブループリントを出力します（オフラインかつ読み取り専用で、設定を編集するのはエージェントです。このコマンド自体は編集しません）。

```bash
shunt add upstream grok --print | claude   # SuperGrok / X Premium+ subscription (OAuth)
shunt add upstream xai --print | claude    # xAI developer API (XAI_API_KEY)
```

または、以下の手順に沿って手動で設定してください。

## 仕組み

shunt は Claude Code の Anthropic Messages リクエストを OpenAI **Responses API** へ変換し、xAI へ送信し、ストリーミングされる応答を変換して返します。`xai` の **Responses フレーバー**（xAI が拒否するパラメータを落とし、ツールを関数ツールとして保持）は 2 通りで選択されます。**`api.x.ai` ホスト**による方法、または **`auth = "xai_oauth"`** による方法です（`grok` プロキシは x.ai ホストではないため、その方言は認証をキーにします）。

| 側面 | `grok`（サブスクリプション） | `xai`（API キー） |
| :-- | :-- | :-- |
| エンドポイント | `cli-chat-proxy.grok.com/v1/responses` | `api.x.ai/v1/responses` |
| 認証 | `~/.shunt/xai-auth.json` からの Grok CLI OAuth。自動リフレッシュ | `Bearer $XAI_API_KEY` |
| identity ヘッダー | プロキシがサブスクリプションを尊重するための Grok CLI ヘッダー（`x-xai-token-auth`、`x-grok-client-identifier`、`x-grok-client-version`） | なし |

> **オフオリジンのトークンガード**
>
> `xai_oauth` プロバイダーは、サブスクリプションの bearer を **HTTPS 上の x.ai または grok.com ホスト**へのみ、かつ `kind = "responses"` のときのみ送信します。それ以外へ向けると `shunt check` が拒否します — shunt は任意の `base_url` へサブスクリプショントークンを漏らしません。

## パス A — SuperGrok サブスクリプション（`grok`）

### 1. ログイン

shunt 独自のデバイスコードログイン（RFC 8628）を実行します。URL とコードが表示されるので、任意のデバイスのブラウザで承認します — ループバックのコールバックサーバーは不要です。

```bash
shunt login xai
```

成功すると shunt はトークンを **`~/.shunt/xai-auth.json`** に `0600` のパーミッションで書き込み、自動的にリフレッシュします（5 分の有効期限バッファ。xAI はリフレッシュのたびにリフレッシュトークンをローテーションするため、shunt はシングルフライトロックの下でローテーション後のものを永続化します）。リフレッシュトークンが失われているか、応答がローテーション後のトークンを省略している場合、shunt は再度 `shunt login xai` を実行するよう伝えます。

> **認証ファイルの場所を変える**
>
> CI、サンドボックス、または 2 つ目のアカウント向けに `$SHUNT_XAI_AUTH_FILE` でパスをオーバーライドします。
>
> ```bash
export SHUNT_XAI_AUTH_FILE=/etc/shunt/xai-auth.json
```

### 2. プロバイダーブロック（オプション）

`grok` は組み込みです — 宣言する必要はありません。以下が完全なデフォルトです。部分的なテーブルは、設定したキーだけをオーバーライドします（設定マップはディープマージします）。

```toml
[providers.grok]
kind = "responses"
base_url = "https://cli-chat-proxy.grok.com/v1"   # shunt が後ろに /responses を追加
auth = "xai_oauth"                                # ~/.shunt/xai-auth.json の読み込み + 自動リフレッシュ
# effort = "high"                                  # オプション — 推論エフォートの有効化（§ 推論エフォート）
```

### 3. モデルを `grok` へルーティングする

```toml
[[routes]]
model = "grok-4.5"
provider = "grok"
# upstream_model = "grok-4.5"   # オプション: 異なるスラッグを上流に転送
```

## パス B — xAI 開発者 API（`xai`）

### 1. キーをエクスポートする

```bash
export XAI_API_KEY=xai-…
```

### 2. プロバイダーブロック（オプション）

```toml
[providers.xai]
kind = "responses"
base_url = "https://api.x.ai/v1"   # shunt が後ろに /responses を追加
auth = "api_key"
api_key_env = "XAI_API_KEY"
```

### 3. モデルを `xai` へルーティングする

```toml
[[routes]]
model = "grok-4.5"
provider = "xai"
```

> **サブスクリプションではなく API クレジットが必要**
>
> `api.x.ai` はあなたの xAI **API** クレジットに対して課金します。SuperGrok / X Premium+ サブスクリプションは開発者 API を**利用可能にしません** — 資金のないアカウントは `402 Payment Required`（*"You have run out of credits or need a Grok subscription…"*）を返します。[console.x.ai](https://console.x.ai/) でクレジットを追加するか、代わりに **パス A** を使ってサブスクリプションを消費してください。

## モデルスラッグ

スラッグのカタログは shunt のものではなく **xAI のもの**です — shunt はあなたがルーティングしたスラッグをそのまま転送します。現在のコーディング/フロンティアのスラッグは `grok-4.5`、`grok-4.3`、`grok-build-0.1` です。ルート内で `upstream_model` を使えば、Claude Code の環境に触れずにエイリアスをライブのスラッグへマッピングできます。（モデル [discovery](/ja/guides/model-discovery/) は宣言した `claude-` 名のエイリアスのみを公開するため、生の Grok スラッグをリストできません — 以下の `ANTHROPIC_CUSTOM_MODEL_OPTION` または tier リマップ経由でアクセスしてください。）

## Claude Code でモデルを選択する

Grok スラッグは `claude-` で始まらないため、Claude Code の `/model` ピッカーは discovery からそれらをリストしません。仕組みは **Codex と同一**です — id をピッカーに直接追加します。

```bash
export ANTHROPIC_CUSTOM_MODEL_OPTION="grok-4.5"   # [models.upstream_model]、[[routes]]、または [[route_prefixes]] で解決する必要あり
```

残りは同じ [Codex のセクション](/ja/guides/codex/#4-claude-code-でモデルを選択する)がそのままカバーします。`model:` フロントマターで**サブエージェント**を Grok スラッグに乗せること、そしてセッション全体で **tier エイリアス**（`ANTHROPIC_DEFAULT_SONNET_MODEL`、…）を Grok スラッグへリマップすることです。

> **既製のエージェント**
>
> **[`shunt-xai` プラグイン](https://github.com/pleaseai/shunt/tree/main/plugins/shunt-xai)** は `grok-4.5` / `grok-4.3` / `grok-build-0.1` 向けのサブエージェントを出荷しています — `/plugin marketplace add pleaseai/shunt` の後に `/plugin install shunt-xai@shunt` でインストールします。各エージェントは自身の `model:` を固定するため、そのサブエージェントだけが迂回し、メインセッションは Claude のまま残ります。手元にある認証情報に応じて、`shunt.toml` でスラッグを `grok` または `xai` へルーティングしてください。

## 推論エフォート

**Codex とは異なり、Grok ではエフォートはオプトインです。** いくつかの Grok モデル（`grok-4*`、`grok-3`、`grok-code-fast`、…）はネイティブに推論するにもかかわらず `reasoning.effort` フィールドで `400` を返すため、shunt はダイヤルを**あなたがプロバイダーまたはルートに設定したとき（あるいはリクエストごとに渡したとき）にのみ**送信します — そうでなければモデルはネイティブの推論を使います。

```toml
[providers.grok]
effort = "high"        # すべての grok トラフィックに適用

# …またはルートごとに
[[routes]]
model = "grok-4.5"
provider = "grok"
effort = "high"
```

`grok-4.5` は `reasoning.effort` を受け入れます（ライブ検証済み）。それで `400` になるスラッグでは `effort` を未設定のままにしてください。完全な優先順位とエフォートの表: [Effort とコンテキスト](/ja/guides/effort-and-context/#reasoning-エフォート)。

## コンテキストウィンドウ

Claude Code はマッピングされた id に対して、コンテキストバーを固定の **200k** でサイズします。Grok スラッグの実際のウィンドウがそれより大きい場合は引き上げてください — 値は非 `claude-` id に自動的に追随します。

```bash
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=256000   # スラッグの実際のウィンドウを設定、xAI のモデルドキュメントを参照
```

これは**グローバル**（セッションごとに 1 つの値）です。実際のウィンドウを超えると `prompt is too long` のオーバーフローによる無駄なやり取りが発生するため、マッピングされたモデルのうち最も小さい実ウィンドウに合わせてください。詳細と `count_tokens` の挙動: [Effort とコンテキスト](/ja/guides/effort-and-context/#マッピングされたモデルのコンテキスト--使用量表示)。

## ウェブ検索

Claude Code の組み込み **ウェブ検索は Grok ルートでは動作しません。** xAI の Responses API は関数ツールのみを受け付けるため、shunt は `xai` フレーバー（`grok` と `xai` の両方）でホスト型の `web_search` ツールを削除します。ホスト型のウェブ検索が必要なときは [`codex` または `openai` ルート](/ja/guides/codex/#ウェブ検索)を使ってください。

## 完全な例（サブスクリプションパス）

`shunt.toml`:

```toml
[server]
bind = "127.0.0.1:3001"
default_provider = "anthropic"

[providers.grok]
effort = "high"     # オプション: すべての Grok トラフィックで推論エフォートを有効化

[[routes]]
model = "grok-4.5"
provider = "grok"
```

シェル（shunt と Claude Code の両方をこれらで実行します）:

```bash
shunt login xai                                     # 一度きりのデバイスコードログイン
./target/release/shunt run                          # ゲートウェイを起動

export ANTHROPIC_BASE_URL=http://127.0.0.1:3001
export ANTHROPIC_CUSTOM_MODEL_OPTION="grok-4.5"     # /model ピッカーに追加
```

`/model` から **grok-4.5** を選びます。セッション内のそれ以外のすべては引き続き変更なしで Anthropic へ流れます。マッピングされたモデルの推論だけが、あなたの SuperGrok サブスクリプションによって応答されます。

## トラブルシューティング

| 症状 | 原因 / 対処 |
| :-- | :-- |
| 起動時に `run shunt login xai` | `~/.shunt/xai-auth.json` がない（または `$SHUNT_XAI_AUTH_FILE` が違う）。`shunt login xai` を実行。 |
| `xAI refresh response missing refresh_token; run shunt login xai` | 保存されていたリフレッシュトークンが消費/ローテーションされて失われた。再度ログイン。 |
| `402 … personal-team-blocked:spending-limit` / *"need a Grok subscription"* | API クレジットのない **`xai`**（開発者 API）パス上。[console.x.ai](https://console.x.ai/) でクレジットを追加するか、**`grok`** へルーティングしてサブスクリプションを使う。 |
| `403 … not authorized for API access`（サブスクリプション tier のゲート） | **`grok`** パス上で、あなたのサブスクリプション tier に API アクセスが含まれていない — **再ログインしても解決しません**。`XAI_API_KEY` を設定して `xai` パスを使うか、[x.ai/grok](https://x.ai/grok) でアップグレードする。 |
| `refusing to send a subscription token off-origin`（`shunt check` から） | `xai_oauth` プロバイダーの `base_url` ホストが `x.ai`/`grok.com` でない、HTTPS でない、または `kind = "responses"` でない。ブロックを修正する。 |
| effort を設定すると `400` | その Grok スラッグは `reasoning.effort` を拒否します。それについてはプロバイダー/ルートから `effort` を削除する。 |
| `model <slug> is not enabled for this account` | entitle されていないスラッグ — xAI のカタログと照合してスラッグを確認する。 |
| ウェブ検索が何も返さない | Grok ルートでは非対応で、shunt がツールを削除します。`codex`/`openai` ルートを使う。 |

さらに詳しくは完全な [Troubleshooting](/ja/reference/troubleshooting/) リファレンスを参照してください。

Source: https://shunt-docs.pages.dev/ja/guides/xai/index.mdx
