Claude Code 会话留存默认仅 30 天
作者发现 Claude Code 默认在 30 天后清理本地会话记录,影响旧会话恢复,提示词历史和项目自动记忆则分别保留。文中指出可通过设置调整后续留存期限,但无法恢复已删除内容。
AI 深度解读
Claude Code 的旧会话可能早已被清理,而你直到想找回一次排障过程时才发现。作者在工作服务器上查到,最早的提问记录还在,完整回答和工具执行过程却只剩最近 30 天。
这篇提醒的价值不只是一个保留天数配置,而是区分三件事:输入历史、完整会话和项目记忆各自保存什么。延长保存期限能留下决策依据,也会让工具读过的凭据在磁盘上停留更久。
为什么问题还在,回答却找不到了
按原文描述,Claude Code 会把完整会话写到 ~/.claude/projects/,包括用户消息、模型回答、每次工具调用及其结果。/resume 读取这些文件,才能恢复旧会话。
默认保留期是 30 天。到期清理后,会话从 /resume 消失,关联的子代理记录和并行任务遗留的孤立 git worktrees 也会被清理。作者说自己没有看到提醒;原文没有提供清理触发时机的更多细节。
但几类数据另算:
history.jsonl保存用户输入,适用 HIPAA 设置的账户存在例外,因此问题还在,不代表回答也在。- Auto memory 保存的项目笔记不在这轮清理范围内,但它不是完整对话的备份。
- 从
v2.1.248起,Claude Desktop 和 Cowork 会话不因年龄被清理,除非设置了desktopSessionCleanupPeriodDays。

作者服务器上的第一次提问日期是 5 月 26 日,磁盘上最早的完整会话却是 9 月 11 日。这个区别很容易误导人:能查到早期输入,并不能证明早期会话仍然完整。
怎样确认保留情况,延长后又有什么代价
作者在 10 月 11 日检查服务器,共有 724 个会话文件,占用 861 MB。其中,最近一周有 181 个,前一周有 62 个,第三周有 338 个,更早的有 143 个,没有任何文件超过 30 天。

下面三条命令分别检查保留期配置、会话文件总数和超过 30 天的文件数:
grep cleanupPeriodDays ~/.claude/settings.json
find ~/.claude/projects -name '*.jsonl' | wc -l
find ~/.claude/projects -name '*.jsonl' -mtime +30 | wc -l
重点看第三行,但别把输出为零直接当作删除证据。作者将其视为清理已经发生的信号;严格说,它只能证明当前目录没有符合条件的旧文件,还需要结合持续使用时间和文件迁移情况判断。第一条命令也只是文本搜索,不能独立证明最终生效配置。
要延长保留期,原文给出的配置是在 ~/.claude/settings.json 中加入:
{
"cleanupPeriodDays": 3650
}
注意 cleanupPeriodDays 的数值:3650 大约是十年;已有配置文件应合并这个字段。原文还强调,0 不代表永久保存,它无法通过校验,最小值是 1。
延长保留期只能影响之后的清理,已经删除的会话不会回来。
磁盘也是成本。作者一个月的记录占用 861 MB,粗估一年约 10 GB,但他运行了大量代理,这个数字不能直接套到一般团队。
更需要考虑的是内容。会话文件是未加密的纯文本;工具读取 .env,或者命令输出凭据,都可能把对应值写进记录。延长保留期,也是在延长这些敏感内容的存留时间。
原文建议用权限规则禁止读取凭据文件,并避免把 ~/.claude/projects/ 纳入未加密备份。如果希望减少记录,CLAUDE_CODE_SKIP_PROMPT_HISTORY 可停止写入会话和输入历史,--no-session-persistence 可对单次 -p 运行关闭持久化,claude purge 则用于清除一个项目已保存的内容。
我的判断
作者说得对的一点是:开发者很容易把「能继续聊」误当成「历史会一直保留」。排查旧问题、追溯实现原因,依赖的是完整会话,只有输入历史或项目笔记并不够。
不过,724 个文件和 861 MB 是单台服务器的观察。被删记录中是否包含关键排障过程,作者明确说已经无法检查,只能推测。原文也没有提供不同保留期限的对照数据。
还有一个配置上的分歧:示例写的是 3650 天,结尾作者选择的却是 365 天。可以理解为前者展示如何长期保存,后者才是他的取舍,读者不宜直接照抄十年。
完整会话适合追溯过程,稳定的项目文档更适合保存已经确认的决策。
对于重要实现原因,把结论整理进仓库文档,通常比长期保存所有工具输出更方便团队查阅。但文档无法替代原始排障轨迹,两者用途不同。
能拿来做什么
- 如果你长期用 Claude Code 排查前端或 Node 问题,先检查当前配置和最早会话日期,再按实际回溯需求选择期限。
- 每次完成复杂排障后,把根因、采用方案和验证方式整理进项目文档,避免关键依据只留在
/resume中。 - 提高保留天数前,检查工具是否会读取
.env或输出凭据,同时确认会话目录的备份方式。 - 对无需回溯的单次
-p任务,可以考虑--no-session-persistence;需要清理项目记录时,再按原文提到的claude purge处理。