背景
Codex CLIで gpt-6-astra を使おうとしたところ、 /model でモデルを確認しても出現しなかった。
そこでネットの記事を見たところ、「バージョンが最新になっていない」との記述が多く見られ、「アップデートしたけどな...」と思いつつバージョンを見ると、ちゃんと最新だった。
$ codex --version
codex-cli 0.154.0
codex -m gpt-6-astra でモデルを指定してセッションを開始してもうまくいかず、
Model metadata for `gpt-6-astra` not found.
Defaulting to fallback metadata; this can degrade performance and cause issues.
The 'gpt-6-astra' model requires a newer version of Codex.
Please upgrade to the latest app or CLI and try again.
のように最新のバージョンを要求してきた。
「Proユーザーなのに、まだ配布されていないのか...?」と思い諦めかけたが、原因を探ってみたところ別の方法で解決したので備忘録として残す。
前提
発生時の環境は以下の通り:
- MacOS (Homebrew管理)
- ChatGPT ProLite ($100)
- CodexをCLIから利用
- Homebrew版とスタンドアロン版の両方が混在していた(後に気づく。この運用が良くない。)
- リモートコントロールを使用 → デーモンを使用
結論
結論、
CLI自体は最新だったが、バックグラウンドで動くapp-serverが古いバージョンのままであるため、新しいモデルを認識できなかった。今回は、スタンドアロン版の更新とデーモンの再起動、モデルキャッシュの削除を行うことで解決した。
今後同じ状況に陥った場合は, app-serverのバージョンについても追加で確認すると良い.
原因:バックグラウンドのCodexが古い
今回の環境では、Homebrewで入れたCLIとは別に、バックグラウンドのapp-serverを動かすためのスタンドアロン版が存在していた (把握しておくべきだった)。
codex app-server daemon version
{
"managedCodexVersion": "0.149.1",
"cliVersion": "0.154.0",
"appServerVersion": "0.147.0"
}
元々Homebrew版飲みで管理しているつもりであったが、Codex CLIでリモートコントロールを行う場合にデーモンを起動させる必要があり、そのデーモンがHomebrew版ではなくスタンドアロン版を参照するために混在してしまったようだ。
したがって、いくらアップデートしたところでHomebrew版のCLIが更新されるだけで、スタンドアロン版は更新されなかった。
ここからわかる教訓は、CodexのバージョンはCLIとバックグラウンドのapp-serverの二つの概念が存在し、codex --versionだけでは、app-serverのバージョンを確認することはできないということである。
解決:バックグラウンド側も更新して再起動する
まず、今回app-server側で使われていたスタンドアロン版のCodexを更新した。また、実行ファイルを更新しても、すでに動いているプロセスは古いままなので、デーモンを再起動した:
$ curl -fsSL https://chatgpt.com/codex/install.sh | sh
$ codex app-server daemon restart
再びバージョンを確認すると、すべて 0.154.0 に揃った。
$ codex app-server daemon version
{
...,
"managedCodexVersion": "0.154.0",
"cliVersion": "0.154.0",
"appServerVersion": "0.154.0"
}
今回はあわせて古いモデル情報のキャッシュも削除した。
rm -f ~/.codex/models_cache.json
その後Codexを起動すると、/model に gpt-6-astra が表示され、利用できるようになった。なお、キャッシュ削除が必須だったかは個別には確認していない。
CLIを最新版にしても「更新してください」と言われる場合は、codex app-server daemon version で、バックグラウンド側に古いバージョンが残っていないかも確認してみると良い。
おわりに
今回を機に、普段使うCodex CLIもスタンドアロン版に統一した。Homebrew版と別々に更新する手間を減らすためだ。
ただし、実行ファイルを更新しても起動中のapp-serverは古いまま残ることがあるため、更新後は再起動とバージョン確認も行う。