生成AI

CodexのHomebrewアップグレードが効かない件──原因と対処、そしてnpm版への移行について

CodexのHomebrewアップグレードが効かない件

最近、brew upgrade codex を実行してもアップデートされない、あるいは
Warning: Treating codex as a cask...」という警告が出るケースがありました。公式の発表はなさそうなのですが、同じ現象が起きた、という方のために記録しておきます。


現象の概要

brew info codex を見ると「Not installed」と表示されるのに、brew list --formula には存在している。
さらに brew upgrade codex を実行すると「cask扱い」という警告が出て、アップデートが止まってしまう。
しかし codex --version は古いままで更新されていない──そんな状態です。

brew upgrade codex Warning: Treating codex as a cask. For the formula, specify the `--formula` flag. To silence this message, use the `--cask` flag. Error: Cask 'codex' is not installed.

Homebrew 配布形式の変更?

自分の環境では、Codex CLI の Homebrew 配布形式が formula(CLIツール形式)から cask(アプリ形式)に変わったような挙動を示していました。
公式ドキュメントには明確な記述は見つからないのですが、GitHub上の openai/codex#5317 で、似たような報告が見られます。また、インストール方法の変更については Commit 73a1787 で記述がおこなわれています。 どうやらバージョン0.46から0.47にかけて、Homebrewまわりの定義ファイルが変わった可能性があるようです。

確定的な「公式アナウンス」はありませんが、少なくとも私の環境では、旧formulaが残っている状態でbrew upgradeをかけると競合が起こり、結果としてアップデートがスキップされていました。


対処法(Homebrewを使い続ける場合)

古いformulaを削除してから、新しいものを入れ直すことで解決しました。

brew uninstall --formula codex
brew install --cask codex

その後にバージョンを確認すると、最新(執筆時点では0.47.0)が反映されました。

codex --version

今後は次のように更新します。

brew upgrade --cask codex

これで、Homebrew経由でも問題なくアップデートできるようになりました。


npm版への移行も選択肢

Homebrewの管理よりも軽く、素早く更新したい人には npm版 もおすすめです。
CodexはNode.jsで動作しており、npm経由で配布されています。

npm install -g @openai/codex

npm版の利点は、公開後すぐに新バージョンが使える点と、管理が単純なこと。
vercel や supabase など他のCLIツールと同様の形で扱えます。
更新も簡単です。

npm update -g @openai/codex

パス競合と確認方法

brew版とnpm版を両方入れると、which codex の結果がどちらを指しているか分からなくなることがあります。以下で確認できます。

which codex

もし /usr/local/bin/codex になっていたら、次のコマンドでリンク先を見てください。

ls -l /usr/local/bin/codex

出力結果が ../lib/node_modules/@openai/codex/bin/codex.js のように npm のパスを指していれば、それは npm が管理しているシンボリックリンクです。
その場合、brewの残骸ではないので削除不要です。


権限エラーが出た場合

npmインストールで EACCES エラーが出る場合は、npmのグローバルディレクトリをユーザー権限に変更します。

mkdir ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
npm install -g @openai/codex

まとめ

今回の現象は、公式に「formulaからcaskに移行した」と明言されたわけではありませんが、
実際にbrew環境で競合やアップグレードエラーが起こる例が複数報告されているようです。
私の環境では、古いformulaを削除してcask版に入れ替えることで解消しました。

同じような現象に悩んでいる方は、上記の手順を試してみると良いと思います。
あるいは、よりシンプルに管理したいならnpm版への移行を検討されるのもよいかもです。(私はついでに Homebrew からnpmインストールに移行しました)

あくまでご参考、ということでどうぞよろしくお願いします。


参考

深水英一郎
小学生のとき真冬の釣り堀に続けて2回落ちたことがあります。釣れた魚の数より落ちた回数の方が多いです。 テクノロジーの発展によってわたしたち個人の創作活動の幅と深さがどういった過程をたどって拡がり、それが世の中にどんな変化をもたらすのか、ということについて興味があって文章を書いています。その延長で個人創作者をサポートする活動をおこなっています。
データ分析・AIの専門家集団 GRI