安全决策报告
pre-compact-resume-card
Claude会话恢复卡片工具,读取转录文件并生成状态摘要,无外部通信和凭证访问,git操作超出文档声明属于轻微阴影功能但用途合法。
为什么得出这个结论
0/4 个维度触发 通过
声明与实际能力
声明资源与推断能力基本一致。
通过
隐藏执行与外联
当前没有明显的高危外联或执行信号。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
文档-行为差异(轻微阴影) +15
pre-compact.sh 读取 git branch/commit/status 但 SKILL.md 完全未提及 git 操作;session-start.sh 显示 git log 但也未声明
访问工作区内部文件 +7
写入 .claude/session-resume-card.md、thinking/session-logs/,访问 .claude/*.jsonl,属于本地文件系统操作,未越权
最关键的证据
低危 文档欺骗
未声明的 git 状态读取操作
pre-compact.sh 在行 44-47 执行 git branch/show-current/rev-parse --short HEAD/git status --short;session-start.sh 行 14 执行 git log --oneline。这些 git 操作完全未在 SKILL.md 中声明。
scripts/pre-compact.sh:44 在 SKILL.md 的 'What It Does' 部分补充说明会读取 git branch/commit/status 用于会话状态摘要
提示 文档欺骗
未声明的 CLAUDE_PROJECT_DIR 环境变量读取
两个脚本均读取 CLAUDE_PROJECT_DIR 环境变量来定位项目目录,但文档未提及任何环境变量依赖。
scripts/pre-compact.sh:4 文档中注明依赖 CLAUDE_PROJECT_DIR 环境变量
提示 文档欺骗
未声明的内部路径写入
写入 .claude/session-resume-card.md 和 thinking/session-logs/ 目录,文档仅模糊说 'write resume card' 未指明路径。
scripts/pre-compact.sh:57 文档中明确 resume card 写入位置
声明能力 vs 实际能力
文件系统 通过
声明 READ+WRITE
→ 推断 READ+WRITE
SKILL.md 声明文件读写;scripts/pre-compact.sh:57-60 写 .claude/session-resume-card.md,scripts/pre-compact.sh:22-25 备份 transcript 到 thinking/session-logs/ 命令执行 通过
声明 WRITE
→ 推断 WRITE
bash scripts 执行,SKILL.md 明确声明 PreCompact/SessionStart 钩子注册使用 bash 环境变量 通过
声明 NONE
→ 推断 READ
pre-compact.sh:4, session-start.sh:2 读取 CLAUDE_PROJECT_DIR 环境变量,文档未声明 网络访问 通过
声明 NONE
→ 推断 NONE
无任何网络请求 剪贴板 通过
声明 NONE
→ 推断 NONE
未使用 数据库 通过
声明 NONE
→ 推断 NONE
未使用 可疑产物与外联
没有提取到明显 IOC。
依赖与供应链
没有结构化依赖告警。
文件构成
4 个文件 · 234 行
Shell 2 个文件 · 180 行Markdown 1 个文件 · 48 行JSON 1 个文件 · 6 行
需关注文件 · 1
scripts/pre-compact.sh 未声明的 git 状态读取操作 · 未声明的 CLAUDE_PROJECT_DIR 环境变量读取 · 未声明的内部路径写入
其他文件 · SKILL.md · session-start.sh · settings-example.json
安全亮点
纯本地操作,无任何网络请求,无外部 IP 通信
无凭证收割:代码未访问 ~/.ssh、~/.aws、.env 等敏感路径
无代码混淆:所有代码明文可读,无 base64/eval
无持久化机制:仅通过正规 Claw 钩子注册,无 crontab/rc.local 等后门
无敏感文件外传:session-resume-card.md 仅包含会话状态摘要,无凭证或密钥
session-start.sh 读取的 memory/MEMORY.md、brain/*.md 等均为项目内部文件,范围合理
备份目录有上限控制(保留最近 30 个 session 日志),防止磁盘耗尽