docs/release-notes/v3.20.1-ja.md
本リリースは Codex まわりの 2 つの大きな課題を解決します。Codex CLI 0.149 への対応——サードパーティ切り替えが 401「Missing API key」で失敗する問題の根治です。切り替えは config-only になり、キーはプロバイダ自身のテーブルに書かれ、
auth.jsonには二度と入りません。0.149 が起動を拒否する一連の旧設定形状も、切り替えのたびに自動修復されます。もうひとつは 同じ ChatGPT Team ワークスペースの複数アカウントが互いを上書きしなくなったこと——既存の管理対象アカウントは 1 回ずつ再ログインが必要です(アップグレード時の注意を参照)。データ信頼性の修正も 3 件:プロバイダ編集は必ず live 設定に届き、Codex の編集ダイアログが別カードのキーを表示することはなくなり、復元が手書きのプロンプトファイルを消すこともなくなりました。使用量側には「セッションログの自動スキャン」スイッチが加わり、大きなセッションファイルのスキャンは秒単位からミリ秒単位になりました。本リリースにはデータベースマイグレーション(v17 → v18)が含まれます——マイグレーション前にバックアップが自動作成され、ダウングレードにはその復元が必要です。
auth.json から環境認証情報を継承しなくなり、旧来の既定方式(キーを auth.json だけに書く)で行われたサードパーティ切り替えはすべて 401 で失敗していました。切り替えは全面的に config-only になりました——キーはプロバイダ自身の [model_providers.*] テーブル(experimental_bearer_token、Codex 0.48 から対応)に入り、auth.json は純粋な公式 ChatGPT ログインファイルに戻ります。auth.json にはプロバイダの身元がなく、アクティブな Codex プロバイダを編集すると別カードの残置キーが表示され——保存すると固定化され——同じ Base URL を共有するカードのキーが互いに収斂していました(「model not found」)。フォームは config.toml 内のそのカード自身の bearer token からキーを再構築します。CLAUDE.md / AGENTS.md / GEMINI.md / SOUL.md を空に切り詰めることはなくなりました。[!WARNING]
唯一の公式チャネル(必ずお読みください)
CC Switch は完全に無料・オープンソースのデスクトップアプリで、ユーザーから料金を徴収することはありません。本ソフトウェアは下記の公式チャネルからのみ入手してください:
チャネル 唯一の公式 公式サイト ccswitch.io ソースコード github.com/farion1231/cc-switch ダウンロード GitHub Releases 作者 @farion1231 偽サイト通報 GitHub Issues 料金請求・チャージ・認証情報の提供を求める「CC Switch」サイトやクライアントはすべて偽物です。 支払いを誘導された場合は直ちに操作を中止し、GitHub Issues からご報告ください。
本リリースの主軸は Codex にあり、出発点は上流の互換性の断絶です。Codex CLI 0.149 は認証情報の継承を厳格化し、カスタムプロバイダは auth.json の環境認証情報を読まなくなりました——旧来の既定方式で書かれたサードパーティ切り替えはすべて 401 で失敗します。CC Switch の答えはパッチではなく再設計です。サードパーティ切り替えは config-only になり——キーはプロバイダ自身の設定テーブルに入り、auth.json は純粋な公式 ChatGPT ログインファイルに戻ります。あわせて、0.149 が読み込みを拒否する一連の旧設定形状(予約 id を占有する古いテーブル、name のないテーブル、トップレベル openai_base_url の旧式ルーティング)は、切り替えと引き継ぎ投影のたびに自動修復され、新しい事前検証が 0.149 の読み込めない組み合わせを名指しで拒否します——「切り替え成功」の後に Codex が起動しない、という事態の代わりに。
第 2 の主軸はアカウントとデータの安全です。同じ ChatGPT Team ワークスペースのメンバーが認証センターで互いを上書きすることはなくなり(既存の管理対象アカウントは 1 回の再ログインが必要)、プロバイダ編集は必ず live 設定に届き、Codex の編集ダイアログが別カードのキーを混入させることも、復元が手書きのプロンプトファイルを消すこともなくなりました。使用量側では、セッションスキャンに自動/手動スイッチとバイトカーソル増分スキャン(6.04 秒 → 9.3 ミリ秒)が加わり、Claude セッション計上の正確性の欠陥も 3 件修正されました——これが本リリース唯一のデータベースマイグレーション(v17 → v18)の由来です。
リリース日:2026-08-28
変更規模:26 commits | 66 files changed | +7,474 / -1,000 lines
使用量ページに「セッションログの自動スキャン」カードとスイッチが加わりました(既定はオン、アップグレード後の挙動は不変です)。オフにするとバックグラウンドのセッションスキャンは起動時の初回分も含めてすべて停止し、手動の入口として「今すぐ同期」ボタンが現れ、完了時にインポート件数・スキャンファイル数・エラー数を通知します。プロキシ引き継ぎのリクエスト計上はリアルタイムでデータベースに記録されセッションファイルを読まないため、スイッチに関係なく記録が続きます。起動時のコスト補填(データベースの既存行だけを修正)も手動モードで引き続き実行されます。
使用量スクリプトの Token Plan 照会が OpenCode Go を認識し、5 時間 / 週 / 月の 3 つのウィンドウの使用率とリセット時刻を、既存のクォータ階層表示を再利用して使用量カードとトレイに表示します。エンドポイントは Bearer 認証のみ(x-api-key しか受け付けない推論側とちょうど正反対)。キーは有効でも Go サブスクリプションがない場合は、汎用の認証エラーではなく専用のメッセージ(HTTP 403)を表示し、使用量ゼロのウィンドウでは上流のプレースホルダーのリセット時刻を捨て、認識できないレスポンス形状では空のカードではなくエラーを報告します。Claude Code・Claude Desktop・Codex・OpenCode・Pi で新規追加した OpenCode Go プロバイダは照会を自動で有効化します。OpenCode Zen の従量課金は意図的に対象外です——このプランには上流に使用量 API がありません。
「Otty」が macOS のターミナル選択肢に加わり、セッション再開・プロバイダターミナル・ツールコマンドの 3 つの入口をカバーします。起動時はまず Otty CLI 経由で既存ウィンドウの新しいタブを試み、次に新しい Otty ウィンドウへフォールバックします。プロバイダターミナルとツールコマンドは失敗時にさらに Terminal.app へフォールバックしますが、セッション再開の失敗はそのままエラーを報告し——Otty CLI が見つからない場合は明示的なインストール案内つき——コマンドをクリップボードにコピーします。CLI の探索はアプリバンドル(システムとユーザー単位)・Homebrew のパス・PATH を調べます。ユーザーマニュアルの macOS ターミナル表も修正されました——Kaku と Warp は以前から対応していたのに表に載っていませんでした。(#6620)
サードパーティ Codex プロバイダへの切り替えは、API キーをそのプロバイダ自身の [model_providers.*] テーブル(experimental_bearer_token フィールド、Codex 0.48 から対応)に書き込み、auth.json には二度と書きません——auth.json は純粋な公式 ChatGPT ログインファイルに戻ります。背景は、Codex 0.149 がカスタムプロバイダによる auth.json の環境認証情報の継承をやめたことです。旧来の既定方式(キーを auth.json だけに書く)で行われたサードパーティ切り替えは、それ以来 401 で失敗していました。
「直接切替時に公式ログインを保持」スイッチの意味はひとつだけになりました。オンなら公式 ChatGPT ログインはサードパーティ切り替えを通じて一切触れられません。オフなら auth.json を API キーで上書きする代わりに削除します(削除に失敗すると、公式ログインが Codex 設定ディレクトリに残っている旨の警告が表示されます)。2 つの安全ゲートは保持モードに限らずサードパーティ切り替えのたびに実行されます。キーがあるのに受け皿となるプロバイダテーブルがない設定、キーがないのに公式ログインへフォールバックしてしまう設定(自前の認証情報のない requires_openai_auth = true、あるいは裸のトップレベル openai_base_url ルーティング)は、どちらも名指しで拒否されます——空設定のサードパーティカード(これまで黙って auth.json に相乗りしていました)も含めてです。アクティブなキー付きサードパーティテーブルの requires_openai_auth は直接切り替えのたびに保持スイッチへ合わせて刻印し直され、Codex のログイン画面はディスク上の実態と一致します。(#6744、#6746)
8 アプリのプリセットはすべて api.teamorouter.cn を指すようになり、旧 .com エンドポイントは Claude Code・Claude Desktop・Codex・Grok Build で選択・速度測定可能なフォールバック候補として登録されます。保存済みの既存 TeamoRouter プロバイダは、それぞれ保存時の Base URL を保ちます。
管理対象の Codex OAuth アカウントは chatgpt_account_id をキーにしていましたが、これは人ではなく ChatGPT ワークスペースを識別する値です。同じ Team ワークスペースの 2 人のメンバーは 1 件のレコードに統合され、後のログインが先のトークンを黙って上書きし、プロバイダの紐付けは最後にログインした人を指していました。アカウントはローカルの識別子をキーにし、ユーザー身元の証明として OIDC subject を保持するようになり、同一ワークスペースのログインは別々の行として共存します。引き継ぎ経由のリクエストは、さらに紐付けアカウントの live トークンと照合されます。別のメンバーのログイン状態を保持したままの Codex セッションは、誤った身元で転送される代わりに「Codex を再起動してください」という明確なエラーを受け取り、外向きのワークスペースヘッダは常にクライアントの自己申告ではなくアカウント紐付けに由来します。CLI がローテーションしたリフレッシュトークンの取り込みと、アカウント削除時の auth.json 削除は、いずれも証明可能な所有権を要求するようになりました——CC Switch が同一ワークスペースの別メンバーのログインを取り込んだり削除したりすることはもうできません。各アカウント行はその場で「再ログイン」(紐付けは保持)でき、デバイスログインのキャンセルや置き換えは保留中のフローを CC Switch 内部で破棄します——放置されたブラウザ認可が数分後にコミットされてアカウントを黙って上書きすることはできません。正しい JWT の形をしていない id_token は一切の身元を生みません——不正な形式や切り詰められたトークンがユーザーの代わりになることはありません。(#6780、#6831、#2245 を修正)
Codex 0.149 に読み込みを拒否させる一連の設定形状——ユーザーには「CC Switch は切り替え成功と言うのに Codex が起動しない」と見えていました——が、プロバイダ切り替えと引き継ぎ投影のたびに自動修復されるようになりました。具体的には:古い引き継ぎ投影が書いた [model_providers.openai] / .ollama / .lmstudio の残置テーブル(予約 id の上書きは検証エラーになります)は CC Switch 自有の id へ無損失で改名され、読み込み可能な形に正規化されます。name のないプロバイダテーブルは補填されます(0.149 は名無しテーブルが 1 つでもあると設定全体を拒否します——Bedrock テーブルは意図的に名無しのままです。名前を付けると組み込みのマージが壊れるためです)。使用可能なキーを持つ旧式のトップレベル openai_base_url ルーティングは正規のカスタムプロバイダテーブルへ移行されます(キーのないルーティングは代わりに切り替え時の安全ゲートに拒否されます)。新しい事前検証は 0.149 の読み込めないフィールドの組み合わせを、問題のテーブルを名指しして拒否します——「切り替え成功」として書き出す代わりに。組み込み openai プロバイダへルーティングされたカードの引き継ぎは、予約テーブルを作る代わりに公式対応のトップレベル設定を使い、ollama / lmstudio へルーティングされたカードの引き継ぎは明示的なエラーで失敗します。予約 id リストは上流と完全に一致し(大文字小文字を区別。amazon-bedrock-runtime を追加、旧 oss / ollama-chat は通常のカスタムプロバイダとして扱われ、キーがようやく自分のテーブルに届きます)、インラインの model_providers テーブルも注入トークンを受け取ります——死んだトップレベルフィールドが残る代わりに。
live 書き込みの検証は、現在プロバイダのポインタが動く前の事前検証として実行されるようになりました。以前は書き込み層の拒否が current のコミット後に起きていたため、次の切り替えが古い live 設定を拒否されたプロバイダの保存済み設定へ書き戻していました。
クラッシュや復元失敗で残った引き継ぎバックアップ行のせいで、アクティブなプロバイダの保存(Claude Desktop を除く)が引き継ぎ経路に乗ってしまい——データベースとバックアップ行だけを更新し、実際の設定ファイルは古いエンドポイントと古いキーのまま無期限に放置されていました。所有権は引き継ぎの実際の証拠を要求する単一の述語で判定されるようになりました(live ファイル内のプレースホルダー、またはプロキシが有効かつ稼働中でバックアップ行がある、または切り替え処理がアプリ単位のロックとバックアップ行を併せ持つ)。古いバックアップ行は書き込みを乗っ取る代わりに、編集されたプロバイダに合わせて更新されます。ユニバーサルプロバイダの保存は、生成された各子設定を、それをアクティブプロバイダとするアプリの live 設定へ再投影し、失敗をアプリ名つきで個別報告します——一律「成功」と言う代わりに。(#6779)
公式ログイン保持が有効なとき、auth.json はプロバイダの身元を持たない共有スロットであり、編集ダイアログはフォームの初期値としてそれを優先していました——アクティブな Codex プロバイダを編集すると、別カードの残置キーが表示され、保存で固定化され、同じ Base URL を共有するカードのキーが互いに収斂していました(「model not found」エラー)。ダイアログは config.toml 内のそのプロバイダ自身の bearer token からキーを再構築するようになりました。公式カテゴリと OAuth 専用のプロバイダは影響を受けません。また config.toml に自前の bearer token を持たないカード——旧バージョンや手書き保守の形状で、本リリースからはサードパーティ切り替えのたびに書き込まれます——は従来どおり live の auth.json(手動編集を含む)を読み続けます。(#6534、#6414 を修正)
スナップショットにあるアプリの有効なプロンプトがひとつもない場合、WebDAV/S3 ダウンロードやバックアップインポートはそのアプリの live プロンプトファイル(CLAUDE.md / AGENTS.md / GEMINI.md / SOUL.md)を空に切り詰めていました——同期ペイロードに一度も含まれたことのない、ローカルの手書き内容を破壊していたのです。そのような復元はファイルに一切触れなくなりました。プロンプトパネルから最後のプロンプトを無効化した場合は、従来どおりファイルをクリアします。(#6810、#6778 を修正)
process:allow-exit 権限が欠けていたため、v3.20.0 では「データベースバージョンが新しすぎる」リカバリ画面の終了ボタンと、設定読み込み失敗後の終了呼び出しが、どちらも IPC 層に黙って拒否されていました。終了ボタンは何も起こさず(ウィンドウを閉じれば終了できました)、設定読み込み失敗後はアプリが意図された終了の代わりに通常の UI へ進んでいました。この問題は @SaladDay さんが #6567 でより早く独立に発見し、先に修正していたものです。
増分スキャナとともに、いずれも Claude セッションログ経路のデータ正確性修正が 3 件入りました。書き込み途中のログ行は、旧来の行番号カーソルに恒久的にスキップされていました(未完成の末尾がカーソルを進めてしまい、完成後のメッセージは二度とインポートされません)——バイトカーソルは完全な行までしかコミットしないため、そのメッセージは次のラウンドで取り込まれます。外部で切り詰められた・書き換えられたセッションファイルは決して再取り込みしません。30 日ロールアップが明細行をすでに整理した後の再インポートは合計を恒久的に水増しするため、カーソルは新しいファイル末尾に固定され、スキップされた範囲は黙って捨てられる代わりに同期結果のエラー一覧に報告されます(切り詰めはカーソルのファイル超過で、同サイズの書き換えはカーソル前バイトのフィンガープリントで検出します)。ファイル途中の読み取りエラーは、コミット済みの進捗を保持して次のラウンドに同じ位置から再開し、報告されます——きれいな成功を返す代わりに。カーソルの事前取得に失敗した場合はそのラウンドを中止します——初回スキャンのように振る舞って履歴を二重インポートする代わりに。
各スキャンラウンドは、最後にコミットしたバイトオフセットへ直接シークし、追記された分だけを読みます——変更のあったファイルを最初から最後まで読み直す代わりに。変更に付属するベンチマークでは、12 MB のアクティブなセッションファイルが全読み解析 6.04 秒から増分読み取り 9.3 ミリ秒になりました。Claude・Gemini・OpenCode・Grok Build・Pi のファイル単位カーソルは、ファイルごとの照会の代わりにインポーターごとに毎ラウンド 1 回のテーブル読み取りで事前取得されます。Claude 経路では各ファイルのインポートとカーソル前進が単一トランザクションでコミットされます。1,017 個のセッションファイル(409 MB)の凍結スナップショット再生では、旧スキャナと完全に一致する集計が得られました。スキーマのマイグレーション(v17 → v18)が必要で、NULL 許容の 2 列——バイトカーソルと末尾フィンガープリント——を追加します。既存の行番号カーソルは初回スキャンでその場で変換され、何も再インポートしません。
統合された重複排除クエリ(2 つのアイデンティティ列にまたがる OR)はデータソース接頭辞しか絞り込めず、解析レコードごとに台帳の Pi 区画全体を走査していました——Pi のインポートは使用量履歴が増えるほど遅くなっていました。同一の結果を返すインデックス活用の点照会に分割され、インポート時間は履歴の規模で劣化しなくなりました。(#6667)
スキーマは v17 から v18 へ移行します(セッションスキャンのカーソルテーブルにバイトカーソルと末尾フィンガープリントの 2 列を追加)。マイグレーション前にバックアップが自動作成されます。本リリースを一度実行すると、旧バージョンの CC Switch はデータベースを開けなくなります——ダウングレードにはそのバックアップの復元が必要です。旧来の書き込み途中行の欠陥がすでに取りこぼした使用量エントリは遡って回収しません——その再取り込みは、ロールアップ済み履歴の再インポートと区別できないためです。
本リリース以前に追加された管理対象 ChatGPT(Codex OAuth)アカウントはすべて、認証センターの該当アカウント行で「再ログイン」を押すまで隔離状態になります——旧レコードは ChatGPT ワークスペース ID をアカウントキーとして使い、個別に記録されたユーザー身元を持たないため、通常のトークン更新では旧レコードがどのユーザーのものか証明できません。プロバイダの紐付けは保持され、再ログインはアカウントをその場で更新します。必ずアカウント行の「再ログイン」ボタンを使ってください。「アカウントを追加」から再ログインしても 2 件目のレコードが作られるだけで(ログインはもうワークスペース単位で統合されません)、旧レコード——およびそれに紐付いたプロバイダ——は隔離されたままです。(#6780)
config-only 切り替えが書き込むプロバイダテーブルのトークンフィールドを、0.48 より前の Codex は一切読みません。古い Codex をお使いの場合はアップグレードしてください。
「直接切替時に公式ログインを保持」スイッチがオフ(既定)のとき、サードパーティ Codex プロバイダへの切り替えは auth.json を API キーで上書きする代わりに削除するようになりました。ChatGPT ログインを取り戻すには:認証センターのアカウントに紐付いた公式プロバイダへ切り替えれば、ログインは保存済みアカウントから完全に書き戻されます。Codex CLI 自身のログインに追従する紐付けなしの公式カードの場合は codex login の実行が必要です。公式ログインをサードパーティ切り替え越しに残したい場合は、スイッチをオンにしてください。
空設定のサードパーティカード(キーの受け皿となるテーブルがない)、および requires_openai_auth = true や裸の openai_base_url ルーティングで公式ログインを借用していたキーなしカードは、名指しで拒否されるようになりました。そうしたカードには正規の [model_providers.<id>] エントリか API キーを追加してください。
使用可能なキーを持つ旧式 openai_base_url ルーティングは [model_providers.cc-switch] テーブルになり、予約 id を占有する残置テーブルは CC Switch 自有の id へ改名され、欠けている name フィールドは補填されます。アクティブなキー付きサードパーティテーブルの requires_openai_auth は切り替えのたびに保持スイッチへ合わせて上書きされます——そのテーブルに手動設定した値は切り替え後には残りません。
書き換えられた範囲は再取り込みされず(再取り込みは整理済みロールアップとの二重計上になります)、スキップは同期結果のエラー一覧に報告されます。
同じ Base URL を共有する Codex プロバイダのキーがすでに 1 つに収斂している場合は、影響を受けた各カードで正しいキーを一度入力し直してください。
あるアプリの有効なプロンプトがひとつもないスナップショットを復元しても、そのアプリの live プロンプトファイルは保持されるようになりました——プロンプトパネルではすべて無効と表示されていても、クライアントは古い内容を読み込み続けます。クリアしたい場合は、パネルでプロンプトを有効化してから無効化してください(またはファイルを直接編集してください)。
生成された子設定をアクティブプロバイダとするアプリの live 設定ファイルへの書き込みに失敗した場合、保存はそのアプリ名を挙げてエラーを報告します。データベースのレコードは保存済みです——同期を再試行するか、そのアプリのプロバイダを一度切り替え直してください。
api.teamorouter.com のままですプリセットから追加し直すか、Base URL を編集すれば .cn へ移行できます。
既存のカードでは、使用量スクリプト設定を開いて Token Plan テンプレート → OpenCode Go を一度選んでください。
xAI Grok OAuth サインイン:公式 Grok CLI の公開 OAuth クライアント識別情報を再利用しており、利用によってアカウントの制限や停止につながる恐れがあります——詳細は v3.18.0 release notes を参照してください。
Codex OAuth リバースプロキシ:ChatGPT サブスクリプションの Codex OAuth をリバースプロキシ経由で使用すると、OpenAI の利用規約に違反する可能性があります。詳細は v3.13.0 release notes を参照してください。
SuperGrok の残量照会:プロバイダカードの残量表示は grok.com の非公開の課金エンドポイントに依存しており、xAI がインターフェースを変更すると機能しなくなる可能性があります——詳細は v3.19.0 release notes を参照してください。
サードパーティプロバイダへのルーティング:CC Switch のローカルプロキシで Codex・Claude Desktop・Grok Build のリクエストを変換してサードパーティのプロバイダへ転送する場合、課金・コンプライアンス・データ保持に関する制約はプロバイダごとに異なります。利用前に対象プロバイダの利用規約をお読みください。
上記の機能を有効にした時点で、ユーザーは関連するリスクを自ら引き受けることになります。CC Switch は、これらの機能の利用に起因するアカウントの制限・警告・サービス停止について、一切の責任を負いません。
本リリースの 26 コミットのうち 8 は 5 名の外部コントリビューターによるものです。
Releases からお使いのシステムに合ったビルドをダウンロードするか、公式サイト ccswitch.io から入手してください(ダウンロードは Cloudflare のエッジノード経由で配信され、GitHub への到達性に依存しません)。
| システム | 最低バージョン | アーキテクチャ |
|---|---|---|
| Windows | Windows 10 以降 | x64 / ARM64 |
| macOS | macOS 12 (Monterey) 以降 | Intel (x64) / Apple Silicon (arm64) |
| Linux | 下表参照 | x64 / ARM64 |
| ファイル | 説明 |
|---|---|
CC-Switch-v3.20.1-Windows.msi | 推奨 - MSI インストーラ、自動更新対応 |
CC-Switch-v3.20.1-Windows-Portable.zip | ポータブル版、解凍してすぐ使用、レジストリ不使用 |
Windows ARM64 デバイスでは、ファイル名に arm64 を含む成果物を選んでください。
| ファイル | 説明 |
|---|---|
CC-Switch-v3.20.1-macOS.dmg | 推奨 - DMG インストーラ、Applications へドラッグ |
CC-Switch-v3.20.1-macOS.zip | 解凍後 Applications へドラッグ、Universal Binary |
CC-Switch-v3.20.1-macOS.tar.gz | Homebrew でのインストールと自動更新用 |
Homebrew でのインストール:
brew install --cask cc-switch
アップデート:
brew upgrade --cask cc-switch
Linux の成果物は x86_64 と ARM64(aarch64)の両アーキテクチャで提供されます。ファイル名のアーキテクチャ表記を、お使いのマシンの uname -m の出力に合わせて選んでください:
CC-Switch-v3.20.1-Linux-x86_64.AppImage / .deb / .rpmCC-Switch-v3.20.1-Linux-arm64.AppImage / .deb / .rpm| ディストリビューション | 推奨形式 | インストール方法 |
|---|---|---|
| Ubuntu / Debian / Linux Mint / Pop!_OS | .deb | sudo dpkg -i CC-Switch-*.deb または sudo apt install ./CC-Switch-*.deb |
| Fedora / RHEL / CentOS / Rocky Linux | .rpm | sudo rpm -i CC-Switch-*.rpm または sudo dnf install ./CC-Switch-*.rpm |
| openSUSE | .rpm | sudo zypper install ./CC-Switch-*.rpm |
| Arch Linux / Manjaro | .AppImage | 実行権限を付与して直接実行、または AUR を利用 |
| その他 / 不明な場合 | .AppImage | chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage |