【タイトル】ChatGPT Pro 5xから20xにアップグレードできない?――最後はHARを掘ってHTTP 400を見つけ、人間様へ託した
1. なぜ20xに上げたかった?――作業が詰まるなら短期集中のほうが合理的だった
発端はかなり単純だった。
今はPro 5xを使っている。しかし重い作業がもう一息のところまで来ていて、使用量の上限がボトルネックになり始めた。そこで考えたのが、5xをだらだら延長するより、20xへ一気に上げて短期間で終わらせたほうがよくないか、という作戦だった。
OpenAI公式では、現在のProにはPlus比5x相当の利用枠を持つ100ドル級と、20x相当の200ドル級があり、Settings → My Planから相互に変更できる。アップグレードは即時反映され、その時点から請求サイクルが始まり直す。
単純なスペック表だけで考えると、5xを2か月使えば「5×2=10」、20xを1か月使えば「20×1=20」。公称料金の合計はどちらも同程度なので、短期に計算資源を集中させたいなら20x一発のほうが瞬発力は大きい。
ただし、これはあくまでPlus比の数字を雑に掛けた比較だ。実際にはモデルごとに別の利用上限が設定される場合があり、すべての制限が単純に月数×倍率で足し算できるわけではない。
それでも「作業が終盤で、今だけ火力が欲しい」という状況なら、短期集中には十分な合理性がある。
そこで20xへ変更しようとした。
ここから課金画面がダンジョンになった。
2. 何が起きた?――カード入力までは正常、確定ボタンを押した後だけ死ぬ
最初に出たのは、ものすごく情報量の少ないエラーだった。
「サブスクリプションの更新中に問題が発生しました」
これだけ。
20xを選ぶ。決済画面は出る。カード入力欄も出る。必要事項を入れる。最後の確定ボタンを押す。
そしてエラー。
重要なのは、決済画面を開く前ではなく、最終確定後に落ちることだった。
もし20xボタンを押した瞬間に死ぬなら、プラン選択APIや画面生成の問題を疑いやすい。しかし今回はカード入力UIまで正常に進み、最終送信の後で失敗する。
つまり「ボタンが壊れている」より、もっと奥の処理が怪しい。
ユーザーが欲しいのは20xなのに、手に入ったのはエラーメッセージ1xだった。
3. おま環だった?――Chrome、シークレット、Edge、別端末・別回線まで全滅
こういうとき、まず疑われるのはブラウザ側である。
OpenAI公式の一般的なトラブルシューティングにも、サイトデータやCookieの削除、拡張機能の無効化、シークレットウィンドウ、VPNやプロキシの停止、別ブラウザ、別ネットワーク、別デバイスなどが並んでいる。
そこで順番に潰した。
- Chrome通常環境 → 失敗
- Chromeシークレット → 失敗
- Edge → 失敗
- スマートフォン → 失敗
- PCとは別のモバイル回線 → 失敗
ここまで来ると、「そのChromeだけ変」説はかなり苦しくなる。
Cookieだけが原因ならシークレットで挙動が変わりやすい。拡張機能なら別ブラウザで変わりやすい。自宅回線ならモバイル回線で変わりやすい。
全部同じ。
おま環容疑者を一人ずつ事情聴取した結果、全員アリバイを主張し始めた。
4. カード会社で落ちた?――3Dセキュアなし、利用通知なしで「銀行より前」が濃くなる
次の論点はカードだった。
決済確定後に落ちるなら、カード会社が拒否している可能性は当然ある。
しかし今回、3Dセキュアの本人確認画面が一度も出なかった。 3Dセキュアとは、カード番号だけでなく、カード会社側の追加認証を行う仕組みだ。
さらに、失敗からしばらく待ってもカード会社アプリに利用・承認通知が出なかった。
もちろん、通知が来ないからといって「カード会社へ一切照会されていない」と断定はできない。拒否された試行をアプリが通知しないこともある。
ただ、
- 最終確定後にエラー
- 3Dセキュア画面なし
- カード会社側に見える承認通知なし
- 別ブラウザ・別端末・別回線でも同じ
まで揃うと、カード会社より前のcheckout validation、risk判定、認証開始、サブスクリプション更新処理あたりを疑う価値が上がる。
ここでサポート側も「銀行へ届く前で失敗している可能性」を検討し始め、HARやConsole logを求めてきた。
ついに一般ユーザー向け課金トラブルが、DevToolsを開くイベントへ進化した。
5. AIサポートは何をした?――返信が速すぎて、もはや会話のほうがボトルネック
OpenAIのサポートへ問い合わせると、最初はAI-assisted supportが対応した。
これが異様に速い。
最初は「ログインしていないので契約状態を確認できない。購入時と同じ方法でHelp Centerへログインしてほしい」。ログイン後に返すと、今度はアカウントが正常な月額Proとして有効で、更新予定になっており、現在の5x権利がキャンセルされている形跡はない、と即座に確認された。
その後も、
- Settings → My Planから変更しているか
- 正確なエラー文
- 発生時刻とタイムゾーン
- ブラウザとバージョン
- 広告ブロックやプライバシー拡張
- サードパーティCookie
- VPN・プロキシ
- 別ブラウザ・別ネットワーク
- 決済画面が出るか、即エラーか
- 3Dセキュアが出るか
- カード発行国
- 失敗時URL
と、切り分けがどんどん具体化していった。
返信が速すぎて、「これ人間が毎回画面開いて打ってる速度じゃないだろ」となる。
しかし内容自体は筋が通っていた。一般的な原因を順番に潰し、最後は「HAR+Console、またはRequest/Correlation IDをくれ」まで来た。
AI一次対応、仕事が速い。
問題は、こちらの20xがまだ来ないことである。
6. HARで何が分かった?――previewは200、最後のsubscription updateだけ400
HARはHTTP Archiveの略で、ブラウザとWebサイトの通信を記録したJSON形式のログだ。どのURLへ何を送り、どんなHTTPステータスが返り、何ミリ秒かかったかまで追える。
サポートからHARを求められたので、決済操作を再現しながらNetworkログを記録した。
ところがHARは長い。貼り付けようとしても長すぎる。
そこで必要な通信だけ掘った。
結果、かなりきれいな境界が見つかった。
プラン変更のpreviewリクエスト → HTTP 200 OK。
つまり、20xへ変更した場合の事前計算・確認処理は通っている。
その後、最終確定で送られる
POST /backend-api/subscriptions/update
が、HTTP 400を返していた。
そしてフロント側のテレメトリにも、subscription updateのエラー処理が発火した記録が残っていた。
ここでようやく、あのふわっとした
「サブスクリプションの更新中に問題が発生しました」
が、技術的には
「最終のsubscription update POSTが400を返した」
まで具体化した。
エラーメッセージの霧が晴れた瞬間である。
7. HTTP 400は何を意味する?――サーバー到達は確認できたが、根本原因はまだ内部ログ待ち
HTTP 400は一般に、サーバー側がそのリクエストを正常な要求として処理できなかったときに返すステータスだ。
今回大事なのは、リクエスト自体はOpenAI側のsubscription update endpointまで届き、レスポンスが返っているということ。
したがって、少なくとも「確定ボタンが何も送信していない」「ネットワークが途中で完全に遮断した」という説明とは合いにくい。
一方で、400だけを見て
「OpenAIのバグ確定!」
と断定するのも早い。
サーバー内部では、プラン状態、支払い方法、請求状態、地域、価格、リスク判定、更新可能条件など、さまざまな検証が行われうる。今回のHARには、サーバーがなぜ400を返したのかという内部理由までは出ていなかった。
そこで価値が出るのがRequest IDだ。
失敗したHTTPレスポンスのヘッダーには、OpenAI側で追跡に使えるRequest IDが入っていた。記事では当然その実値は伏せるが、サポートへは
- 発生時刻
- 失敗endpoint
- HTTP 400
- Request ID
をセットで渡した。
これなら「なんかエラーです」ではなく、「このサーバー処理をログで見てください」になる。
人類へ渡す資料として急に強くなった。
8. HARをそのまま送っていい?――むしろ一度中身を見たほうがいい
OpenAI公式も、HARには個人情報や機密データが含まれる可能性があるので、共有前にサニタイズするよう注意している。Chromeにはサニタイズ済みHARを書き出す機能もある。
そして実際に今回のHARを見たら、アカウントやセッションを識別する各種IDだけでなく、取得中のChatGPT会話テキストまで通信ログへ含まれていた。
つまり、HARは「エラーのスクショをちょっと詳しくしたもの」ではない。
ブラウザ通信の黒箱を丸ごと開けた日記に近い。
そのため、今回はHAR原本をそのまま記事へ出すことはもちろん、必要以上に外へ投げることも避け、失敗したendpoint、HTTP status、Request IDなど必要な診断情報だけを抽出した。
サポートへHARを送る必要がある場合でも、
- サニタイズ済みで保存する
- 中身にカード情報・個人情報・会話内容が残っていないか確認する
- 必要な時間帯だけ取得する
- 公開場所へ置かない
くらいはやったほうがいい。
トラブル解決のためにHARを取り、HAR公開で新しいトラブルを作ったら、障害対応の永久機関である。
9. 人間担当には何を渡した?――「原因調査」だけでなく「そっちで20xにしてくれ」まで頼んだ
AI一次サポートへ最終的に渡した材料は、かなり揃った。
- 5x→20xをSettings → My Planから変更している
- プラン変更previewは成功する
- 最終確定後にだけ失敗する
- Chrome、シークレット、Edge、別端末、別回線で再現
- 3Dセキュアは出ない
- カード会社側に見える承認通知もない
- 最終
POST /backend-api/subscriptions/updateがHTTP 400 - 失敗時刻とRequest IDあり
ここまで来たので、依頼も一段強くした。
「原因を調べるだけでなく、可能なら運営側でPro 20xへのアップグレードを手動適用してほしい」
さらに、もしこの窓口では無理ならbilling/subscription担当へエスカレーションしてほしい、と明示した。
そして最後に冗談も入れた。
「ここまでトラブルシューティングしたお詫びに、20xの無料期間が付いてきても私は一向に構いません🙂」
要求なのかジョークなのかギリギリのラインだが、文面ではちゃんと冗談として書いた。
さらに人間担当へ向けて、
「こういう謎のbilling/backendエッジケースこそ、AIより人間様の得意分野ですよね?😂」
とも追加。
AIに助けてもらいながら、最後に人類へプレッシャーをかける構図が完成した。
10. AIから人間に渡すと何が変わる?――返信速度まで人間になった
すると表示が変わった。
サポートスペシャリストへエスカレーション済み。返答は今後数日以内。メールでも届く。
ここまでAI一次対応は驚くほど速かった。
質問する。
すぐ返る。
追加情報を渡す。
またすぐ返る。
HAR、Request ID、HTTP 400まで到達し、人間担当へ渡された。
そして静寂。
分かりやすすぎる。
AI:秒で返事。
人間:担当キューに積む。
人間様の得意分野に入った瞬間、レスポンスレイテンシまで人間らしくなった。
もちろんこれは悪い意味だけではない。AI一次対応ができるのは、公開情報とアカウント状態の確認、定型的な切り分け、必要情報の収集まで。実際の内部ログ調査、billing側の例外処理、手動変更の可否判断は、人間や専門チームの権限が必要になる可能性がある。
つまり、返信速度は落ちたが、ようやく「速く返事をする段階」から「本当に直せる人へ渡す段階」へ進んだとも言える。
人間様、ここからが本番です。
作業止まってるので20xよろしくお願いします。
11. この一件の教訓は?――トラブル対応は「何を試したか」より「どこまで正常か」を狭めるゲーム
今回の流れを一言でまとめると、トラブルシューティングとは原因を当てるクイズではなく、正常に動いている層を一つずつ確定して、故障区間を狭める作業だった。
最初は、ただの「サブスクリプション更新エラー」だった。
しかし順に見ると、
- アカウント契約状態 → 正常
- 20x選択・preview → 正常
- 決済UI表示 → 正常
- 複数ブラウザ・端末・ネットワーク → 同じ症状
- 最終確定 → 失敗
- 3Dセキュア → 起動せず
- issuer通知 → 見えず
- subscription update POST → HTTP 400
- Request ID → 取得
- 次の担当 → specialistへエスカレーション
まで狭まった。
ここまで来れば、「Cookie消しました」で終わる話ではない。
そしてもう一つの教訓。
AIサポートは切り分けが速い。人間サポートは、その先の権限が必要なところで登場する。
AIがログ採取の道を作り、人間が内部ログを見る。
少なくとも理想の形はこれだ。
あとは人間様が20xを生やしてくれれば完璧である。
無料期間まで生えたら、なお完璧である。
出典・技術注記
- OpenAI Help Center, “About ChatGPT Pro tiers”: https://help.openai.com/en/articles/9793128
- OpenAI Help Center, “Troubleshooting ChatGPT Error Messages”: https://help.openai.com/en/articles/7996703
- OpenAI Help Center, “How can I contact support?”: https://help.openai.com/en/articles/6614161
- OpenAI Status: https://status.openai.com/
- OpenAI公式では、Proの2ティアはSettings → My Planから変更可能で、アップグレードは即時反映・請求サイクル再開始。モデルごとの利用枠は別に設定される場合がある。
- OpenAI公式の一般トラブルシューティングでは、シークレット、拡張機能無効化、VPN停止、別ブラウザ・別ネットワーク・別端末、HARとConsole logの取得が案内されている。
- 事故当時、OpenAI Status上で本件を直接説明する全体障害は確認できなかった。ただしステータスページが個別アカウントの障害を否定するものではない。
- HTTP 400は実際の匿名化HARで確認したが、400の内部理由まではHARだけでは確定できない。そのため「カード会社拒否」「OpenAI側バグ」のどちらも断定せず、Request IDを付けて専門担当へ調査依頼した。
