技術約6分で読めます

CodexのdaemonとCLIでバージョンがずれて出る起動エラー

いけさん目次

手元のM4 Mac miniでCodex CLIを起動すると、Background server has incompatible feature settings という警告画面が出ることがあった。
api_key_model_discovery を無効にするよう求められ、デーモンを使わずに動かすか、設定を変更して再起動するかを選択する画面だ。

同様の事象がGitHub Issue #51758に報告されていた。
CLIとバックグラウンドで動くローカルサーバーが別々に更新され、機能設定の既定値が食い違うことで発生していた問題で、通常起動時の警告はCodex CLI 0.162.1で修正されている。

起動時に表示された警告画面

Codex起動時にapi_key_model_discoveryの無効化を要求し、daemonを使わずに実行するか設定を変更して再起動するかを尋ねる画面

エラー表示は次の2行だった。

Background server has incompatible feature settings
This session requires api_key_model_discovery to be disabled

api_key_model_discovery はCodex内部の機能設定名で、このセッションでは無効にする必要がある。
ここでいうバックグラウンドサーバーはリモートの外部サーバーではなく、手元のMacで起動しているローカル常駐サーバー(app-server)を指す。
画面下部には3つの選択肢があり、選択内容によって共有サーバーへの影響が異なる。

選択肢動作
Run without daemon this time今回は共有デーモンを使わずに起動する
Restart with these settings表示された機能設定を保存し、共有デーモンを再起動する
Cancel起動を取りやめる

2番を選ぶと設定が保存され、他のクライアントの機能を無効にしたり、実行中の処理を中断したりする場合があると案内されている。
ひとまず作業を始める場合は、共有設定を変更しない1番を選べば回避できる。

CLIとデーモンが別々に更新される仕組み

CLIはターミナルから操作するプログラムで、その接続先となるapp-serverは、会話履歴や承認、エージェントの処理イベントなどを扱うCodexのインターフェースだ。
手元では、このapp-serverがデーモン(常駐プロセス)としてバックグラウンドで起動している。

CLIを更新しても、すでに動いているサーバーや、サーバー用に選択されたパッケージの版数が自動で一致するとは限らない。
Issue #51758には、デーモンが先に更新された例と、CLIが先に更新された例の両方が載っている。

報告CLI稼働中のapp-server起動時の要求
Issue本文0.160.10.161.0api_key_model_discovery を無効にする
Linuxでの追加報告0.160.10.161.0api_key_model_discovery を無効にする
macOSでの追加報告0.162.00.160.1api_key_model_discovery を有効にする

Linuxの報告では、設定ファイルに指定がなくてもCLI 0.160.1では既定で無効、デーモンの0.161.0では既定で有効になっていた。
デーモンの更新ログにも、定期更新で0.161.0が選択された記録があったと報告されている。

macOSの追加報告はその逆で、新しいCLIが古いデーモンに接続した結果、設定の違いによるエラーが出ていた。

0.162.1で変更された互換性チェック

0.162.1のリリースノートには、バックグラウンドサーバーとCLIの既定の機能設定が異なることで起きる起動失敗の修正が含まれている。
この版の公開は2026年10月10日午前4時44分(JST)。

修正したPR #52648では、共有サーバーの機能設定は再起動するまでサーバー側が保持するものとして扱っている。
設定ファイルやCLIの既定値との差だけでは再起動を求めず、コマンドラインで明示的に上書きした機能設定だけをチェック対象にした。

2026年10月11日(JST)、担当者がIssue #51758で0.162.1の修正を案内し、Issueはクローズされた。
新しいCLIと古いデーモンの組み合わせも修正対象だと説明されている。

通常の起動でこの画面が出る場合は、CLIを0.162.1以上へ更新して開き直すことで解消する。
明示的な機能設定の上書きに対するチェックは残っているため、更新後も出る場合は起動コマンドのオプション指定や両側の版数を確認する必要がある。

手元のバージョンと自動更新ログ

版数はターミナルで確認できる。

codex --version
codex app-server daemon version

前者はコマンドを実行したCLI自体のバージョンを指し、後者は管理されているデーモンのパッケージと、実際に動いているapp-serverのバージョンも返す。
0.162.1の実装で判定に使われている項目は次のとおり。

項目確認する対象
cliVersionこの確認コマンドを実行したCLI
managedCodexVersionデーモン用に選択されているパッケージ
appServerVersion接続できた稼働中のapp-server

手元のM4 Mac miniで2026年10月12日に確認した結果は、いずれも0.162.1だった。
パスを省略した出力は次のようになる。

{
  "status": "running",
  "backend": "pid",
  "managedCodexVersion": "0.162.1",
  "cliVersion": "0.162.1",
  "appServerVersion": "0.162.1"
}

CLIは /opt/homebrew/bin/codex から起動しているが、リンク先はnpmパッケージの @openai/codex/bin/codex.js だった。
デーモンはそれとは別の ~/.codex/packages/app-server-daemon/releases/ にあるパッケージから動いていた。

手元の ~/.codex/app-server-daemon/daemon-updater.stderr.log には、自動更新で選ばれた版と再起動の記録が残っていた。

日時(JST)更新ログの内容
2026年10月9日午前4時44分定期更新で0.162.0を選択し、サーバーを再起動
2026年10月10日午前5時49分定期更新で0.162.1を選択し、サーバーを再起動

この環境でもデーモンが独立して更新される動作が確認できた。

デーモン更新が失敗する別の報告

0.162.1の修正は、既定の機能設定の違いによる起動時の警告を出さないようにしたものだ。
一方で、CLIを更新しても古いサーバーが残り、案内されたデーモン更新コマンドも使えないという別の報告がある。

Issue報告された組み合わせ更新・再起動で起きた問題
#46468npm版CLI 0.155.0、サーバー 0.154.0updateは未対応、restartは管理対象のサーバーではないとして拒否
#47482スタンドアロン版CLI 0.156.0、サーバー 0.155.0案内されたデーモンの更新が未対応になり、CLIを開き直しても警告が残る

この2件は2026年10月12日時点で未解決のまま残っている。
Issue #51758の修正とは別問題として扱う必要がある。

CLIで管理するデーモンに、現在のCLIパッケージをコピーして揃える操作として、0.162.1には次のコマンドが用意されている。

codex app-server daemon update --from-cli

CLIの実装コードでは、コピーした版を固定することと、再起動によって作業が中断される場合があると通知している。

固定した版から通常の更新へ戻す場合は、codex app-server daemon update を実行する。
更新後は codex app-server daemon version で選択されたパッケージと稼働中のサーバーの両方を確認できる。