Codex CLI 服务器无痕运行教程:API Key 不落盘,退出即清理

📅 2026/7/1 7:25:47
Codex CLI 服务器无痕运行教程:API Key 不落盘,退出即清理
Linux 终端临时运行 Codex CLI不写配置、不保存历史、退出自动清理前言在服务器或容器中使用 Codex CLI 时有时不希望执行全局安装也不希望 API Key、配置文件、npm 缓存和 Codex 会话长期保存在系统中。本文介绍一种临时运行方案具有以下特点不全局安装 Codex CLIAPI Key 不直接写入命令行API Key 不进入 Bash 历史记录不创建长期使用的~/.codex/config.tomlnpm 缓存、Codex 配置和会话统一存放到临时目录退出 Codex 后自动删除临时文件支持自定义 OpenAI 兼容接口可选全自动执行模式需要注意的是这种方式只能尽量减少本地文件痕迹并不能实现法证意义上的“完全无痕”。一、检查 Node.js 环境Codex CLI 可以通过 npm 和 npx 临时运行因此需要先确认服务器已经安装 Node.js。在 Linux 终端中执行node-vnpm-vnpx-v正常情况下会分别输出 Node.js、npm 和 npx 的版本号例如v20.11.1 10.2.4 10.2.4如果出现node: command not found说明当前系统尚未安装 Node.js需要先安装 Node.js 后再继续。二、检查临时目录空间最开始可能会考虑使用/dev/shm因为它通常是内存文件系统。但是很多 Docker 容器中的/dev/shm默认只有 64 MB很容易出现空间不足。执行df-h/dev/shm /tmp$PWD示例输出Filesystem Size Used Avail Use% Mounted on shm 64M 0 64M 0% /dev/shm overlay 200G 2.2G 198G 2% / /dev/vdc 196G 5.4G 191G 3% /mnt/workspace可以看到/dev/shm只有 64 MB不适合下载 Codex npm 包/tmp所在分区有接近 198 GB 可用空间当前工作区也有足够空间因此本文选择使用/tmp创建临时目录。如果使用/dev/shm时出现以下错误npm ERR! code ENOSPC npm ERR! syscall write npm ERR! nospc ENOSPC: no space left on device说明不是 npm 或 API Key 的问题而是/dev/shm空间不足。可以先清理之前失败创建的目录rm-rf/dev/shm/codex-run-*三、进入不保存历史记录的临时 Shell执行HISTFILE/dev/nullbash--noprofile--norc该命令会启动一个新的 Bash ShellHISTFILE/dev/null不将命令写入历史文件--noprofile不读取登录配置文件--norc不读取.bashrc进入后终端提示符可能变成bash-5.0$这属于正常现象。需要注意关闭历史文件并不代表所有操作都绝对不会被记录。如果服务器启用了堡垒机审计、SSH 录屏、auditd或其他系统级监控管理员仍然可能看到相关操作。四、临时启动 Codex CLI复制并执行下面整段脚本(set-Eeuopipefailumask077TMPROOT$(mktemp-d/tmp/codex-run-XXXXXX)cleanup(){unsetOPENAI_API_KEYrm-rf--$TMPROOT}trapcleanup EXIT HUP INTTERMexportTMPDIR$TMPROOT/tmpexportnpm_config_cache$TMPROOT/npm-cacheexportCODEX_HOME$TMPROOT/codex-homemkdir-p$TMPDIR$npm_config_cache$CODEX_HOMEread-rsp请输入 API Key: OPENAI_API_KEYprintf\nexportOPENAI_API_KEY npx--yes--packageopenai/codexlatest codex\-cmodel_providerproxy\-cmodelgpt-5.5\-creview_modelgpt-5.5\-cmodel_reasoning_effortxhigh\-chistory.persistencenone\-canalytics.enabledfalse\-cmodel_providers.proxy.nameOpenAI Proxy\-cmodel_providers.proxy.base_urlhttp://43.155.161.229:8080\-cmodel_providers.proxy.wire_apiresponses\-cmodel_providers.proxy.env_keyOPENAI_API_KEY)执行后会出现请输入 API Key:此时粘贴 API Key然后按回车。输入过程中终端不会显示星号也不会显示任何字符这是read -s的正常行为。五、脚本工作原理1. 使用子 Shell 隔离运行环境最外层使用(...)括号中的命令会在子 Shell 中运行。Codex 退出后子 Shell 随之结束内部设置的环境变量不会继续保留在外层终端中。2. 开启严格错误处理set-Eeuopipefail各参数作用如下-E让错误陷阱在函数和子 Shell 中生效-e命令执行失败时立即退出-u使用未定义变量时报错-o pipefail管道中任意命令失败时整个管道视为失败这样可以避免脚本在异常状态下继续执行。3. 限制临时文件权限umask077这会让新创建的文件和目录默认仅当前用户可访问。通常对应目录权限700 文件权限6004. 创建随机临时目录TMPROOT$(mktemp-d/tmp/codex-run-XXXXXX)系统会创建类似下面的临时目录/tmp/codex-run-a8Kd92随机后缀可以避免多个任务之间发生目录冲突。5. 设置退出清理函数cleanup(){unsetOPENAI_API_KEYrm-rf--$TMPROOT}清理函数会完成两件事删除当前子 Shell 中的OPENAI_API_KEY删除整个 Codex 临时目录然后通过下面的命令注册清理行为trapcleanup EXIT HUP INTTERM无论是正常退出、按CtrlC还是终端收到中断信号脚本都会尽量执行清理函数。6. 将 npm 缓存放入临时目录exportnpm_config_cache$TMPROOT/npm-cache正常情况下npm 会在用户目录中创建缓存例如~/.npm通过重新设置npm_config_cache本次运行产生的 npm 缓存会被写入/tmp/codex-run-xxxxxx/npm-cache退出后统一删除。7. 将 Codex 数据放入临时目录exportCODEX_HOME$TMPROOT/codex-homeCodex 的配置、状态和会话数据会被引导到临时目录而不是默认的~/.codex这样可以避免在用户主目录中长期保留 Codex 文件。8. 安全读取 API Keyread-rsp请输入 API Key: OPENAI_API_KEY参数含义-r不处理反斜杠转义-s静默输入不在终端显示-p显示输入提示读取完成后执行exportOPENAI_API_KEY这样 Codex 子进程可以通过环境变量读取密钥。相比下面这种写法exportOPENAI_API_KEYsk-xxxxxx使用read -s可以避免 API Key 直接出现在命令历史中。9. 使用 npx 临时运行 Codexnpx--yes--packageopenai/codexlatest codex参数说明--yes自动确认 npm 临时安装提示--packageopenai/codexlatest临时下载最新 Codex CLIcodex运行包中的 Codex 命令这种方式不会执行npminstall-gopenai/codex因此不会将 Codex 全局安装到系统。不过Codex 运行期间仍然需要把 npm 包下载到临时目录。退出后该临时目录会自动删除。六、自定义模型与代理接口脚本中使用了自定义模型供应商-cmodel_providerproxy并配置-cmodel_providers.proxy.nameOpenAI Proxy-cmodel_providers.proxy.base_urlhttp://43.155.161.229:8080-cmodel_providers.proxy.wire_apiresponses-cmodel_providers.proxy.env_keyOPENAI_API_KEY各项含义如下配置项作用model_providerproxy使用名为proxy的自定义供应商nameOpenAI Proxy自定义供应商显示名称base_urlOpenAI 兼容接口地址wire_apiresponses使用 Responses API 协议env_keyOPENAI_API_KEY从环境变量读取 API Key模型配置如下-cmodelgpt-5.5-creview_modelgpt-5.5-cmodel_reasoning_effortxhigh如果代理服务不支持这些模型名称需要根据代理平台实际提供的模型名称进行修改。七、关闭 Codex 本地历史记录脚本中设置-chistory.persistencenone用于关闭 Codex 的本地对话历史持久化。同时设置-canalytics.enabledfalse用于关闭分析数据选项。即使设置了这些参数代理服务器、网络网关或服务提供方仍然可能保存请求日志因此它们不能保证请求在服务端完全不被记录。八、退出 Codex可以在 Codex 中输入/exit也可以按CtrlDCodex 退出后脚本会自动执行unsetOPENAI_API_KEYrm-rf--$TMPROOT临时目录会被删除例如/tmp/codex-run-a8Kd92可以在外层 Shell 中检查ls-ld/tmp/codex-run-*如果没有其他运行中的 Codex 临时任务通常会显示ls: cannot access /tmp/codex-run-*: No such file or directory九、开启全自动执行模式如果希望 Codex 执行命令时不再询问授权可以在codex后加入--dangerously-bypass-approvals-and-sandbox完整位置如下npx--yes--packageopenai/codexlatest codex\--dangerously-bypass-approvals-and-sandbox\-cmodel_providerproxy\-cmodelgpt-5.5\-creview_modelgpt-5.5\-cmodel_reasoning_effortxhigh\-chistory.persistencenone\-canalytics.enabledfalse\-cmodel_providers.proxy.nameOpenAI Proxy\-cmodel_providers.proxy.base_urlhttp://43.155.161.229:8080\-cmodel_providers.proxy.wire_apiresponses\-cmodel_providers.proxy.env_keyOPENAI_API_KEY这个参数会跳过审批和沙箱保护Codex 可以直接修改文件删除文件执行终端命令安装依赖运行项目脚本因此只建议在以下环境中使用临时容器隔离服务器已备份项目明确信任的代码仓库不要在包含重要文件、生产数据或敏感凭据的环境中随意启用。十、常见问题问题一codex: command not found报错bash: codex: command not found原因是 Codex CLI 没有安装或者不在PATH中。本文使用下面的方式临时运行因此不需要全局安装npx--yes--packageopenai/codexlatest codex问题二ENOSPC: no space left on device报错npm WARN tar TAR_ENTRY_ERROR ENOSPC: no space left on device npm ERR! code ENOSPC npm ERR! syscall write如果 npm 缓存目录位于/dev/shm通常是因为 Docker 默认的共享内存只有 64 MB。检查df-h/dev/shm /tmp解决方法是把临时目录从/dev/shm改为/tmp问题三输入 API Key 时没有显示这是正常现象。因为命令使用了read-s输入内容不会显示在屏幕上也不会显示星号。粘贴完成后直接按回车即可。问题四退出后是否真的删除了可以检查find/tmp-maxdepth1-typed-namecodex-run-*-ls如果没有输出说明临时目录已经删除。不过如果进程被强制执行kill -9Shell 无法捕获该信号trap可能来不及执行。此时可以手动清理rm-rf/tmp/codex-run-*问题五是否绝对不会留下任何痕迹不能保证绝对无痕。本文方案主要避免API Key 写入 Bash 历史API Key 写入 Codex 配置文件Codex 全局安装npm 缓存长期保留Codex 会话文件长期保留环境变量在退出后继续存在但以下位置仍可能保存记录SSH 堡垒机终端录屏LinuxauditdDocker 宿主机审计网络代理日志API 中转服务日志云平台操作审计Shell 进程运行期间的内存服务器管理员读取的进程环境变量因此更准确的说法是“减少本地持久化痕迹”而不是“完全无痕”。十一、HTTP 接口的安全风险示例配置使用http://43.155.161.229:8080这是明文 HTTP而不是 HTTPS。使用 HTTP 意味着以下内容可能以明文形式在网络中传输API Key提示词项目代码片段模型返回内容文件内容终端执行上下文建议将接口部署为https://your-domain.example.com并配置有效的 TLS 证书。如果只能使用 HTTP应确保它运行在可信的内网、VPN 或加密隧道中并明确了解其中风险。十二、完整操作流程总结第一步检查环境node-vnpm-vnpx-v第二步检查磁盘空间df-h/dev/shm /tmp$PWD第三步进入无历史临时 ShellHISTFILE/dev/nullbash--noprofile--norc第四步执行临时运行脚本(set-Eeuopipefailumask077TMPROOT$(mktemp-d/tmp/codex-run-XXXXXX)cleanup(){unsetOPENAI_API_KEYrm-rf--$TMPROOT}trapcleanup EXIT HUP INTTERMexportTMPDIR$TMPROOT/tmpexportnpm_config_cache$TMPROOT/npm-cacheexportCODEX_HOME$TMPROOT/codex-homemkdir-p$TMPDIR$npm_config_cache$CODEX_HOMEread-rsp请输入 API Key: OPENAI_API_KEYprintf\nexportOPENAI_API_KEY npx--yes--packageopenai/codexlatest codex\-cmodel_providerproxy\-cmodelgpt-5.5\-creview_modelgpt-5.5\-cmodel_reasoning_effortxhigh\-chistory.persistencenone\-canalytics.enabledfalse\-cmodel_providers.proxy.nameOpenAI Proxy\-cmodel_providers.proxy.base_urlhttp://43.155.161.229:8080\-cmodel_providers.proxy.wire_apiresponses\-cmodel_providers.proxy.env_keyOPENAI_API_KEY)第五步退出在 Codex 中输入/exit或者按CtrlD脚本会自动清除 API Key并删除本次运行产生的临时目录。结语通过npx、临时 Shell、CODEX_HOME、npm 临时缓存和trap清理机制可以在 Linux 服务器或 Docker 容器中临时运行 Codex CLI同时尽量减少本地持久化文件。该方案适用于临时服务器Docker 容器公共计算节点不能全局安装软件的环境希望退出后自动清理的开发场景不过安全性不仅取决于本地文件还取决于网络传输、代理服务、服务器审计和平台日志。生产环境中应优先使用 HTTPS、短期密钥、最小权限和可信代理服务。文章标签Linux Codex OpenAI Node.js npm npx Docker 服务器 AI编程 命令行工具