场景

希望 Codex 执行任意一次性任务(提交、检查、生成变更等),且不保存会话数据到用户目录。

核心命令

codex exec --ephemeral -C /home/dev/vanotes -a never -s workspace-write \
"<你的一次性任务指令>"

示例:只提交文档变更

codex exec --ephemeral -C /home/dev/vanotes -a never -s workspace-write \
"只提交文档变更(*.md):先检查 git status;只 add 文档文件;commit 后 push;不要提交 .claude/ 和任何凭据。"

在 ~/.bashrc 添加别名(推荐)

如果你已经有 env-noproxy 函数,可直接加入:

alias once-codex='env-noproxy codex exec --ephemeral -a never -s workspace-write'

如果没有 env-noproxy,可用完整写法:

alias once-codex='env -u http_proxy -u https_proxy -u all_proxy -u no_proxy -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY -u NO_PROXY codex exec --ephemeral -a never -s workspace-write'

重载并验证:

source ~/.bashrc
alias once-codex

使用方式:

once-codex "<你的一次性任务指令>"

关键点

  • --ephemeral 仅用于 codex exec,表示当前任务不持久化会话文件。
  • 交互式 codex 顶层命令不支持 --ephemeral。
  • 该模式适合一次性自动化动作,执行后不能 resume 这次会话。

更严格隔离(不触碰 ~/.codex)

如果希望连 ~/.codex 都不使用,可把 HOME 指到临时目录:

tmp=$(mktemp -d)
HOME="$tmp" OPENAI_API_KEY="$OPENAI_API_KEY" \
codex exec --ephemeral -C /home/dev/vanotes \
"只提交文档变更(*.md):先检查 git status;只 add 文档文件;commit 后 push;不要提交 .claude/ 和任何凭据。"
rm -rf "$tmp"

注意事项

  • 使用临时 HOME 时,若依赖 ChatGPT 登录态(~/.codex/auth.json),可能无法复用认证;建议使用 OPENAI_API_KEY。
  • 提交前让 Codex 明确限制 git add 范围,可减少误提交风险。
  • 生产环境建议保留安全约束,不要默认使用高风险参数。