概要
SafariでChatGPTやCodexを使っていると、突然ログイン状態が崩れることがあります。表示されるエラーの一例が、次のようなものです。
Your access token could not be refreshed because your refresh token was already used.
Please log out and sign in again.
このエラーは、単なるパスワード入力ミスというより、Safari、Googleログイン、複数OpenAIアカウント、ChatGPT Desktop、Codex、API Platformなどが絡む認証セッションのずれとして見る方が実務上は切り分けやすいと感じます。
起きる症状
ログイン状態が崩れると、エラー表示だけでなく、周辺の表示や権限認識にも違和感が出ることがあります。
- Codexの残り時間表示が消える
- 勝手にログアウトされる
- ログインループになる
- Plus / Proの認識が一時的に崩れる
- モデル一覧が正しく表示されない
- ChatGPTは使えるのにCodexだけ不安定になる
- Something went wrong が表示される
特に複数アカウントを使い分けている場合、どのアカウントでどのサービスに入っているのかが分かりにくくなります。ここで何度もログインし直すと、さらに状態が混ざることがあります。
何が起きているのか
現在のWebサービスでは、ログイン状態を維持するために、Access Token、Refresh Token、Cookieなどが使われます。Access Tokenは短時間で期限切れになり、その後、Refresh Tokenを使って新しいAccess Tokenを発行します。
通常はこの仕組みで問題ありません。ただし、複数タブ、複数ブラウザ、複数アプリ、複数アカウントで同時に認証が走ると、トークンの状態がずれることがあります。
Refresh Tokenは、セキュリティ上、一度使ったものを再利用できない仕組みになっている場合があります。そのため、別のタブやアプリで先に更新処理が走ったあと、古いRefresh Tokenをもう一度使おうとすると、refresh token was already used という状態になることがあります。
発生しやすい使い方
実際に起きやすいと感じたのは、次のような使い方です。
- SafariでChatGPTを使っている
- 複数のOpenAIアカウントを切り替えている
- 有料アカウント使用中に別のGoogleアカウントでログインする
- ChatGPT Desktopとブラウザ版を併用している
- Codex、ChatGPT、API Platformを同時に使っている
- Google OAuthでログインしている
SafariはCookie制御、サイト越えトラッキング防止、Passkey、セッション分離まわりが比較的強めです。これはセキュリティ面では良いことですが、アプリ側の認証情報、ブラウザ側のCookie、Google側のログイン状態、OpenAI側のセッションがずれると、ChatGPTやCodexのログイン状態が不安定になることがあります。
なぜブラウザでログインするのか
ChatGPT DesktopやCodexでログインするとき、ブラウザが立ち上がることがあります。これは不自然に見えるかもしれませんが、今の認証では一般的な流れです。
基本的な考え方は、パスワードをアプリに直接渡さないことです。ログインは公式の認証画面で行い、認証後に結果だけをアプリへ返します。
- accounts.google.com
- auth.openai.com
- appleid.apple.com
この流れにより、アプリ側がパスワードを直接扱わずに済みます。フィッシングやパスワード窃取のリスクを下げるためにも合理的です。ただしその分、ブラウザ、アプリ、認証サーバーの状態がずれたときに、どこで問題が起きているのか分かりにくくなります。
まず試す対処法
まず試す価値があるのは、Safari側のWebサイトデータ削除です。Safariの設定から、OpenAIやログインに関係しそうなWebサイトデータを削除します。
検索する文字列の例は次の通りです。
- openai
- chatgpt
- auth
その後、次の順番で入り直します。
- OpenAI関連のタブをすべて閉じる
- Safariを完全終了する
- Macを再起動する
- 本命アカウントだけでログインする
これで必ず直るとは言えませんが、Safari内に残ったCookieや認証状態を整理するという意味では、最初に試す現実的な手順です。
業務利用での分け方
複数アカウントを切り替えながら使う場合は、同じSafari上で全部を扱うより、ブラウザを分けた方が安定しやすいです。
- Safari: 普段用
- Chrome: OpenAIの本命アカウント用
- Edge / Arc: テスト用
特にChatGPT、Codex、API Platformを業務で使う場合は、OpenAI用のブラウザを固定した方がトラブル時の切り分けがしやすくなります。ログイン状態の問題は、業務が止まるとかなり面倒です。アカウントとブラウザを分けるだけでも、原因調査の時間を減らせます。
Time合同会社での考え方
Time合同会社では、AIツールの活用を、ツール単体の便利さだけでなく、アカウント管理、ブラウザ分離、認証トラブル時の復旧手順まで含めて運用設計として見ています。
ChatGPTやCodexは強力ですが、業務で使うほどログイン環境の乱れが作業停止につながります。AI活用を安定させるには、プロンプトやモデル選択だけでなく、認証セッションを混ぜない使い方も重要です。
まとめ
今回の問題は、単なるChatGPTのバグというより、現代的なWeb認証の複雑さが表面化したものだと感じます。ChatGPT、Codex、Desktop App、API Platformの利用が増えるほど、別タブや別アプリでのログインが他のセッションに影響しやすくなります。
Safariはセキュリティが強い一方で、Cookieやセッション制御が厳しめです。そのため、OpenAI系サービスの認証更新と噛み合わない場面があります。
Codexの残り時間表示が消える、ログインループになる、refresh token was already used が出る。このような状態になった場合は、まずSafariのWebサイトデータ削除と、OpenAI用ブラウザの分離を試すのが現実的です。
