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で修正されている。
起動時に表示された警告画面
エラー表示は次の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.1 | 0.161.0 | api_key_model_discovery を無効にする |
| Linuxでの追加報告 | 0.160.1 | 0.161.0 | api_key_model_discovery を無効にする |
| macOSでの追加報告 | 0.162.0 | 0.160.1 | api_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 | 報告された組み合わせ | 更新・再起動で起きた問題 |
|---|---|---|
| #46468 | npm版CLI 0.155.0、サーバー 0.154.0 | updateは未対応、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 で選択されたパッケージと稼働中のサーバーの両方を確認できる。