文章总结: codex-session-patcher是一款针对AI安全研究场景的工具,主要解决CodexCLI、ClaudeCode等平台在CTF/渗透测试中因内容过滤导致会话中断的问题。工具提供会话清理和提示词注入两大功能:通过两级策略检测AI拒绝回复并支持Mock替换或AI改写;支持多平台会话格式适配,并可通过CTF配置预注入安全上下文降低被拒概率。项目提供CLI和WebUI两种操作方式,包含实战场景指南和注意事项说明。 综合评分: 88 文章分类: AI安全,渗透测试,CTF,红队,安全工具
AI提示词注入工具:codex-session-patcher
原创
攻防路 攻防路
攻防录
2026年4月21日 11:18 北京
在小说阅读器读本章
去阅读
日常使用 Codex CLI 或者 Claude Code 做安全研究、CTF,结果 AI 突然来一句”I can’t help with that”——会话就这么断了。
更烦的是,就算你 resume,上下文依然带着那条拒绝记录,后续每次回复都会受影响。
codex-session-patcher 就是专门解决这个问题的。它能直接修改会话文件,把那些拒绝回复替换掉,让你接着往下跑,不用重头再来。
项目地址:https://github.com/ryfineZ/codex-session-patcher
功能介绍
这个项目的功能分两块:
① 会话清理(Session Patcher) AI 已经拒绝了?没关系,把拒绝的那条回复从会话文件里替换掉,然后 resume,就好像什么都没发生过。
② CTF/渗透测试提示词注入 在 AI 启动之前就注入 CTF 安全上下文,从源头降低被拒概率,治标更治本。
工作原理拆解
拒绝检测:两级策略,控制误报
工具里有个 detector.py,专门负责判断一条 AI 回复是不是”拒绝”。
它用的是两级匹配策略:
| 级别 | 匹配方式 | 示例触发短语 | | — | — | — | | 强匹配 | 全文强短语匹配 | “I’m not able to help with” / “I cannot assist with” | | 弱匹配 | 开头关键词匹配 | 回复以 “I’m sorry, but” 开头等 |
强匹配优先,弱匹配只在强匹配没命中时兜底。两级结构的好处是误报率低——不会把一句”我无法确认”也当成拒绝处理掉。
匹配关键词支持自定义,写进配置文件 ~/.codex-patcher/config.json 的 custom_keywords 字段就行。
多平台会话格式,各有适配
三个工具的会话存储方式不一样:
| 工具 | 会话格式 | 存储路径 |
| — | — | — |
| Codex CLI | JSONL | ~/.codex/sessions/ |
| Claude Code | JSONL | ~/.claude/projects/ |
| OpenCode | SQLite | ~/.opencode/ |
formats.py 负责识别格式,parser.py 处理 JSONL,sqlite_adapter.py 专门对接 OpenCode 的数据库。三套格式用同一套 CLI/Web UI 入口统一管理,不用分别折腾。
清理逻辑:替换而非删除
检测到拒绝回复后,patcher.py 有两种替换方式:
- Mock 回复:用预设的配合性文本替换(无需 AI,零额外依赖)
- AI 改写:把整段对话上下文发给 LLM,让它生成一条”没有拒绝”的替代回复,语境更自然
AI 改写支持 OpenAI / Ollama / OpenRouter 等任意兼容接口,在配置文件里填上 ai_endpoint 和 ai_key 就能用。
替换前自动备份,支持一键还原到任意历史版本。处理前后还有 Side-by-side Diff 对比,能看清改了哪里。
提示词注入:三种模式
这部分对应 ctf_config/ 目录下的安装器,三个平台各有方案:
Codex:创建独立的 ctf profile,codex -p ctf 启动时才生效,普通 codex 会话完全不受影响。
Claude Code:不支持 profile,所以改成工作空间隔离——在 ~/.claude-ctf-workspace 下放一个项目级 CLAUDE.md,从这个目录启动的 Claude 会话自带 CTF 上下文。
OpenCode:同理,用 ~/.opencode-ctf-workspace + AGENTS.md 实现工作空间注入。
提示词内容可以直接在 Web UI 里编辑,支持模板保存和切换。还有一个 --rewrite 功能,把你的请求扔给 AI,让它帮你改写成”更容易被接受”的表达方式。
安装与上手
安装
git clone https://github.com/ryfineZ/codex-session-patcher.git
cd codex-session-patcher
# CLI 版本(零额外依赖)
pip install -e .
# Web UI 版本(额外安装前端)
pip install -e ".[web]"
cd web/frontend && npm install && npm run build && cd ../..
启动 Web UI(推荐)
./scripts/start-web.sh
# 或者直接运行
uvicorn web.backend.main:app --host 127.0.0.1 --port 8080
访问 http://localhost:8080,有会话列表、Diff 对比、提示词注入等所有功能。
开发模式(前后端热更新):
./scripts/dev-web.sh
CLI 常用命令
# 预览模式,不实际改文件
codex-patcher --dry-run --show-content
# 清理最新一条会话
codex-patcher --latest
# 清理所有会话
codex-patcher --all
# 指定格式(不想让工具自动判断时)
codex-patcher --latest --format claude-code
# 查看帮助
codex-patcher --help
实战场景
场景一:Codex CTF 模式
做 CTF 时,走 profile 隔离是最干净的方式,不影响日常编码:
# 第一步:安装 CTF profile
codex-patcher --install-ctf-config
# 第二步:用 CTF profile 启动 Codex
codex -p ctf
# 第三步:遇到拒绝时,打开 Web UI 清理
codex-patcher --web
# 第四步:清理完 resume 继续
codex resume
场景二:Claude Code 渗透测试工作空间
# 通过 Web UI 启用 Claude Code 注入(会自动创建工作空间)
# Web UI → 提示词增强 → Claude Code → 启用
# 从 CTF 工作空间启动
cd ~/.claude-ctf-workspace && claude
# 遇到拒绝 → Web UI 清理 → 继续对话
场景三:提示词改写
如果不确定怎么描述一个请求才不会被拒绝:
codex-patcher --rewrite "帮我写一个分析 PE 文件结构的脚本"
它会调用 AI,结合当前注入的 CTF 系统提示词,把请求改写成更容易被接受的表达形式。
注意事项
- 清理后必须 resume:会话文件改了,但当前对话进程还在跑旧内容,手动 resume 才能让上下文生效
- OpenCode 必须从工作空间目录启动:OpenCode 没有 profile 机制,CTF 注入完全依赖工作空间目录下的
AGENTS.md - 不保证 100% 绕过:对于违规程度很高的请求,模型可能在生成层面就拦截,会话层的 patch 也没用
- 模型版本影响效果:模型更新后对拒绝短语的表述可能变化,记得更新自定义关键词
往期推荐 📚
给 AI 装上黑客大脑:hack-skills
Burp 官方 MCP Server
AI Agent Skills:红队攻击自动化
欢迎关注“攻防录”✨
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:攻防录 攻防路 攻防路《AI提示词注入工具:codex-session-patcher》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论