
2026/10/13 3:29
デフォルトで Codex CLI は永続的かつ自己更新される背景ダエモンをインストールします。
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
Codex CLI バージョン 0.157.0 以降、npm を介して Linux システム(WSL2 など)にインストールするユーザー向けに、対話型セッションを開始すると、ツールは永続的なバックグラウンドデモン (
codex app-server --managed-daemon) を自動的に起動します。このデモンは ~/.codex に約 374 MB の独立したプラットフォームパッケージをコピーし、そのバージョンをパッケージマネージャでインストールされた CLI と切り離し、ラッパーから固定された環境(例:HTTPS_PROXY)を保持します。バックエンドは起動後 5 分経過後にアップデートの有無をチェックし、以降隔 1 時間ごとにチェックを行います。また、60 秒のドレイン期間後にアクティブなターンを強制終了させます。さらに、--remote モードでのフックはセッションの作業ディレクトリではなくデモンの現在の作業ディレクトリを受け取り、生成されたプロセスがクライアントターミナルを特定する能力を失うという問題が発生します (#37537)。
ユーザーから大きな不満が生じているのは、メインのデモン (
codex app-server daemon stop) を停止しても、アップデート処理 (pid-update-loop) が止まらず、手動での終結が必要となることです。そのため、ユーザーは daemon_auto_start をデフォルトでオプトインまたは明示的な同意を必要とするよう要望しています。自動開始を有効にしたままの場合には望ましい修正として、最後のクライアントが切断された時に終了し、パッケージマネージャ経由でインストールされている場合はコピーや自己アップデートを行わないことにすべきです。回避策としては、CLI コマンド (codex features disable daemon_auto_start, codex app-server daemon stop) を使用して機能を無効にし、手動でプロセスやファイルをクリーンアップする方法があります。今後の更新ではこれらの行動を是正し、ユーザーの制御を回復させるとともに、予期せぬリソース使用を防ぎ、npm パッケージの標準的なインストール慣行に沿うことを目指しています。本文
Codex CLI 版本 0.157.0:守护进程行为分析与临时解决方案
📌 基本环境信息
- 软件名称: Codex
- CLI 版本:
0.157.0 - 安装方式:
npm install -g @openai/codex - 运行环境: Linux (WSL2)
❓ 期望的新功能改进
用户希望调整以下默认行为,以优化 CLI 工具的直觉性和可控性:
- 关闭自动启动守护进程: 将
功能改为默认关闭(Opt-in 模式),或在启动前至少提示用户一次是否启用。daemon_auto_start - 后端版本解耦: 确保运行的是通过包管理器安装的本地二进制文件,而非被复制和自我更新的独立后端。
- 动态环境适配: 后端应继承当前会话的环境变量(如
),而非保留首次启动时的环境变量。HTTPS_PROXY - 正确的路径传递: 在远程模式 (
) 下,钩子应接收实际会话的工作目录 (cwd),而非守护进程的 cwd。--remote
🚨 自版本 0.157.0 起触发的自动行为
开启交互式会话即会自动执行以下操作:
-
启动持久化守护进程
- 命令:
codex app-server --managed-daemon - 特性: 独立运行,无 TTY 连接。
- 生命周期: 关闭所有窗口后仍继续运行(PID 1),需手动执行
或重启系统才能停止。codex app-server daemon stop
- 命令:
-
复制平台包
- 体积: 约 374 MB。
- 内容: 包含
,codex
, 以及捆绑的codex-code-mode-host
。bwrap/zsh/rg - 路径: 复制到
。~/.codex/packages/app-server-daemon/releases/<version>/ - 影响: 后端版本与 CLI 客户端版本解耦。即使更新 npm,后端仍停留在旧版本。
-
自动更新器运行
- 命令:
codex app-server daemon pid-update-loop - 逻辑: 启动后 5 分钟首次检查,之后每小时检查一次,下载并自动重启服务。
- 副作用:
- 更新过程会终止当前活跃的对话轮次。
- 清理预算耗尽 (60 秒) 后会强制结束会话。
- 此行为目前无法禁用 (参见 Issue #40969)。
- 命令:
-
环境变量与路径问题
- 代理丢失: 即使每次调用都设置
,守护进程仍保留首个会话的环境变量,后续配置失效。HTTPS_PROXY - 工作目录错误:
模式下,钩子接收的是守护进程的 cwd,而非实际会话的 cwd (Issue #42457)。--remote - 终端识别失效: App-server-daemon 启动的钩子无法识别客户端终端,导致面向终端的钩子失效 (Issue #37537)。
- 代理丢失: 即使每次调用都设置
🛠 临时解决方案:禁用自动守护进程
为避免上述问题,建议立即执行以下操作组合来禁用相关功能:
# 1. 通过 Codex 命令禁用标志 codex features disable daemon_auto_start # 2. 停止正在运行的 app-server 守护进程 codex app-server daemon stop # 3. 强制终止残留的更新循环进程 pkill -f 'app-server daemon pid-update-loop' # 注意:仅执行 `daemon stop` 无法立即杀死该更新器进程 (延迟约 70 秒) # 4. 清理复制的应用程序包目录 rm -rf ~/.codex/packages/app-server-daemon
效果: 执行上述操作后,新建的 TUI 会话将不再自动启动守护进程。
📋 相关 Issue 引用
- #40969: Auto-update 强制终止活跃轮次且无法禁用
- #41188: 关于支持外部管理的
可执行文件app-server-daemon - #46468: NPM 更新 CLI 后守护进程版本不匹配及手动重启失效问题
- #48050: Arch Linux 上使用包管理器安装时不再自动启动 (除非添加
)--no-daemon - #42457: 远程模式下钩子获取错误的 cwd
- #37537: App-server-daemon 钩子无法识别客户端终端