Claude Code の利用制限、もう一段ゆるく使う|サブスクで Claude Code を動かすローカルプロキシ「claude-code-proxy」
今回紹介するのは、Claude Code をそのまま開いたまま、上流だけ ChatGPT や Kimi のサブスクに振り替えて動かせるローカルプロキシです。 Anthropic の制限が気になり始めた人にとって、設定 1 行から試せる現実的な抜け道になっています。
🔧 注目した実用事例の要点
✅ Claude Code が出すリクエストを、ローカル HTTP プロキシで Codex / Kimi 形式に翻訳して上流に投げる
✅ 環境変数 `ANTHROPIC_BASE_URL` をローカルポートに向けるだけで、Claude Code 側は無改造で動く
✅ OAuth トークンは Keychain(macOS)に保存され、有効期限の 5 分前に自動でリフレッシュ
claude-code-proxy が解決すること
「Claude Code は道具として気に入っているが、最近の利用制限が苦しい」という不満に、上流プロバイダを差し替える形で答えるツールです。
raine/claude-code-proxy は、ローカルで起動する HTTP プロキシです。Claude Code は Anthropic API 形式でリクエストを送ってきますが、これを受け取って、OpenAI 系の Codex Responses API や Moonshot の Kimi chat-completions の形式に翻訳して上流に流します。返ってきたレスポンスは、Anthropic 互換の SSE ストリームに組み直して返します。
つまり Claude Code 側から見ると「Anthropic に話している」つもりで、実体は ChatGPT や Kimi のサブスクで動く、という構成です。
README の率直な言い回しを引いておきます。
I feel Claude Code is still the best harness around, despite occasional frustrations caused by updates. However, Anthropic keeps tightening the usage limits, while OpenAI is still much more generous.
「Claude Code は依然としてベストなハーネスだが、利用制限がきつい。OpenAI のほうがまだ寛容だ」という動機です。Claude Code を捨てずに上流だけ差し替える、という発想の出発点になっています。
ちなみに、ここで言う「ハーネス」は、馬具の「手綱(ハーネス)」のようにAIエージェントが暴走せずに正しい成果を出せるよう動作を設計する仕組みのことを指します。
設計のキモ|「Claude Code 側を触らずに上流を差し替える」3 つの工夫
このツールが実現している体験は、「普段の Claude Code をそのまま開きながら、上流のレート上限だけ別プロバイダのものに付け替える」という、サインインのやり直しすら不要な体験です。これを 3 つの工夫で支えています。

1. 「Claude Code 側は何も変えない」入口設計
ユーザーが触るのは環境変数だけです。`ANTHROPIC_BASE_URL` をローカルプロキシのポート(既定 `http://localhost:18765`)に向けて、`ANTHROPIC_MODEL` に上流プロバイダ用のモデル名を書く、それで終わりです。
ANTHROPIC_BASE_URL=http://localhost:18765 \
ANTHROPIC_AUTH_TOKEN=unused \
ANTHROPIC_MODEL=gpt-5.4[1m] \
ANTHROPIC_SMALL_FAST_MODEL=gpt-5.4-mini[1m] \
claudeClaude Code 本体には一切手を入れません。普段の使い方の延長で、上流だけが差し替わる体験になります。
2. 「モデル名」だけで行き先を切り替える振り分け
プロバイダの選択ロジックは、リクエスト中の `model` フィールド 1 個に押し込めています。`gpt-5.4` や `gpt-5.3-codex` なら Codex、`kimi-for-coding` や `kimi-k2.6` なら Kimi、という形です。
未登録モデルは即 HTTP 400 を返し、サポート ID を一覧で返してくれます。設定ミスがその場で分かるので、Claude Code 側で延々と待たされる事故になりません。
3. サインインの手間を省く OAuth 自動化
上流のサブスクに毎回サインインし直す UX は、こうしたプロキシで一番崩れがちな部分です。このツールでは、Codex はブラウザ OAuth または device code、Kimi は device code でログインを 1 度通せば、以降は Keychain(macOS)または設定ディレクトリの `auth.json` にトークンを置き、有効期限の 5 分前に自動でリフレッシュします。
サブスクで動かしたい本来の動機が「ログインの手間を増やしてまでやることでもない」ことを、ちゃんと設計でケアしている部分です。
技術的に踏み込みたい人向け: 実装は TypeScript + Bun。トークン計数は `gpt-tokenizer`(o200k_base)。Codex の OAuth は PKCE フローと device code の 2 系統を提供し、リフレッシュ時の競合更新はシングルフライトガードで抑える。詳細は raine/claude-code-proxy を参照。
PKCE(Proof Key for Code Exchange): OAuth 2.0におけるセキュリティ拡張仕様。悪意のあるアプリによる「認可コードの横取り」を防ぎます。
device code : 文字入力やWebブラウザの利用が難しいデバイスにおいて、PCやスマートフォン経由で安全にログインを行うための認証方式。
シングルフライトガード : トークンのリフレッシュなど同じ処理が同時に複数回走らないようにする仕組み。
インストールは Homebrew で 1 行です。
brew install raine/claude-code-proxy/claude-code-proxy
claude-code-proxy serve注意点・限界|README に明示されている運用上の前提
README が明示している制約は、運用に組み込む前に必ず読みたい箇所です。
利用規約的にはグレーゾーン: 非公式クライアント経由の利用であるため業務での本番依存は避ける運用が無難
セッションタイトル生成のトークンも上流に乗る: ClaudeCodeが自動で呼び出す裏の処理により想定よりもサブスクの限度が想定より早く減る
Codex の画像入力は一部置換される: ツールの実行結果として返ってくる画像は `[image omitted: <media_type>]` (ここに PNG 画像があったが省略された」という意味)に差し替わる
個人的に注目した点|プロバイダごとの「推論ブロックの扱い」差
応用視点でいちばん気になったのは、Codex と Kimi で推論ブロック(reasoning)の扱いが違うところです。
Codex の reasoning は取得できないため Claude Code 側に転送されません。一方、Kimi の reasoning は Anthropic の `thinking` 形式に乗せて転送・レンダリングされます。同じ「extended thinking」を表示しているように見えても、裏側のプロバイダによって見えている思考の中身が違うわけです。
エージェント運用で「extended thinking の精度を比較したい」場面では、ここを見落とすと評価が歪みます。同じ Claude Code の UI で、Codex 側は推論を「消した上での出力」、Kimi 側は「思考も全部見せた上での出力」を見せている、という非対称が起きるからです。
応用としては、社内 LLM ゲートウェイを設計するときの参考にもなります。「ユーザーから見える表示単位」と「プロバイダから返ってくる構造」をどこで突き合わせるかを、上流ごとに個別に決める必要がある、ということを設計判断としてはっきり示してくれます。
まとめ|設計から学べる 4 点
差し替えは「設定 1 行」でOK
Codex, Kimiの振り分けロジックは、リクエスト中の `model` フィールド 1 個で変更できる
OAuth は Keychain + 自動リフレッシュ + シングルフライトでログインの手間は最小限
最後に|「Claude Code はそのまま、上流だけ差し替える」のうまさ
「Claude Code を捨てずに上流だけ差し替える」というシンプルな設計を、環境変数 1 つ・モデル名 1 つ・OAuth 自動化、の 3 点で読みやすく実装した好例です。
グレーゾーン故に不安定さはありますが、ローカルプロキシで API 形式を変換する設計そのものは応用が効きます。社内 LLM ゲートウェイ / コスト集約 / プロバイダ可搬性などを考えるときに、参照する価値のあるコードベースです。
リポジトリは raine/claude-code-proxy(MIT License)。Claude Code に触れている人なら、設定 1 ファイルで一度試してみると感覚が掴めます。
