怎么删除 Codex CLI 的会话,以及会失去什么
它们是 ~/.codex/sessions 下的 rollout 文件,一个会话一个,而提示词历史是另一个文件
Codex 会把每个会话在进行时写到磁盘上。存储位置是 ${CODEX_HOME:-~/.codex},里面有两样彼此独立的东西:rollout,也就是对话;以及 history.jsonl,也就是你敲过的提示词。删其中一个不会碰另一个——这正是人们容易弄错的地方。
怎么删除 Codex 的会话
现在的 Codex 有一个针对单个会话的命令 codex delete <id>,以及 codex archive <id>,把一个会话藏起来而不删除。除此之外,会话就是文件。路径按日期分,所以一天的工作就是一个目录;而超过一周的 rollout 已经被压缩成 .jsonl.zst,以 .jsonl 结尾的模式匹配不到它。
# 有什么,最新在前 ls -t ~/.codex/sessions/*/*/*/rollout-*.jsonl* | head # 一个会话 rm ~/.codex/sessions/2026/09/15/rollout-*<id>.jsonl* # 一天 rm -rf ~/.codex/sessions/2026/09/15 # 所有会话,包括被 Codex 归档的 rm -rf ~/.codex/sessions ~/.codex/archived_sessions # 你的提示词,上面的命令都碰不到 rm ~/.codex/history.jsonl
如果设置了 CODEX_HOME,以上路径都跟着它走。在 Xcode 里跑的 Codex 有自己独立的一套,位于 ~/Library/Developer/Xcode/CodingAssistant/codex,删掉命令行的会话不会动它。
一个 rollout 里有什么
JSON Lines,随会话进行不断追加。第一条记录是 session_meta,带着会话 id 和工作目录;其余是事件,事件的 payload 里有角色和内容。因为文件是在会话进行时追加的,被打断的会话最后一行可能是断的——读它的程序要能容忍这一点,rm 则无所谓。
它是纯文本,而且是逐字的:命令打印进对话里的任何东西都在文件里。像对待你的 shell 历史一样对待这个目录。格式登记表记录了每个字段。
你会失去什么
rollout 是之后任何对自己工作的搜索要读的东西——包括 codex resume,它列出的就是磁盘上有的东西。删掉它们,智能体做过什么的记录也就跟着没了:命令、它们的输出、以及那些编辑,没有一样能从摘要里还原。
deja 会把这些文件连同这台机器上其他每个智能体的历史一起建索引,所以在 Codex 里做出的决定能回答在 Claude Code 或 Cursor 里提出的问题。已经索引过的会话,在文件没了之后仍然搜得到;只有 deja forget 会有意丢掉一个。在裸 deja 打开的界面里,被删掉的会话在 Deleted 标签下,按 R 会把它写回去,让 codex resume 重新打开它,带回的是对话,不包括工具调用。这是「删之前先建索引」的理由,不是「留着几个 GB」的理由。
阅读和搜索 Codex 的历史 · 每个智能体把历史存在哪里 · Claude Code 的同一个问题 · 让 Codex 也能召回其余的