Codex CLIを起動すると、毎回「Welcome to Codex, OpenAI’s command-line coding agent」と表示され、Sign in with ChatGPTから認証をやり直すよう求められた。ログインを済ませても次の起動で同じ画面に戻る。
ちょうど今朝は障害もあったため、最初はサービス側がまだ不安定なのかと思い、この現象と混同した。しかし、手元で起動方法を変えて比較すると、今回の再認証画面はローカルのバックグラウンドサーバー側の状態と結び付いていた。今朝の障害がこの状態を作ったかどうかまでは分からない。
現象を切り分ける
まず、同じターミナルで認証状態を確認した。
$ codex login status
Logged in using ChatGPT
CLIはログイン済みと判断している。それでも通常のcodex起動ではサインイン画面が出た。一方、バックグラウンドサーバーを使わずに起動すると、サインイン画面は出なかった。
$ codex --no-daemon
これで、保存された認証情報そのものがないわけではないと分かった。調査時の~/.codex/auth.jsonは存在し、codex doctorでも認証に失敗は報告されなかった。バックグラウンドサーバーのログには、問題が起きた時間帯にWebSocket接続の401 Unauthorizedが記録されていた。
原因と対応
通常起動と--no-daemonで結果が違い、サーバー側のログにも401があったことから、バックグラウンドサーバーが古い認証状態を使っていた可能性が高い。ただし、サーバー内部でどの情報が更新されなかったかまでは確認していない。401だけを見て、今朝の障害との因果関係を決めることもできない。
実行中のCLI作業を終えてから、バックグラウンドサーバーを再起動した。
$ codex app-server daemon restart
$ codex
再起動後、通常のcodexでもサインイン画面は表示されなくなった。認証ファイルの削除や、ChatGPTへの再ログインは不要だった。
次に同じ現象に遭ったら、まずcodex login statusで保存済みの認証状態を見て、codex --no-daemonとの違いを確認する。通常起動だけで再認証を求められるなら、作業中のセッションがないことを確かめてからcodex app-server daemon restartを試す。
Codex CLIの認証情報がローカルにキャッシュされる仕組みは、OpenAIの認証ドキュメントに説明がある。