Stroq 0.30 上手:体检编程 Agent 会话里有没有密钥外泄,装上本地钩子拦住危险命令,再用 36 个公开攻击回放验证策略
按 Stroq 官方首页、文档、session-secret-scan、GitHub README / GUIDE 与 npm 包装页(0.30.0 实测):用 Node.js 22 安装 @stroq/cli,确认版本并查看命令分组;在没有历史会话的机器上跑体检卡片,用内置样例 sent --try 看「密钥被发到另一家公司」的报告;在实验目录预览并写入 Claude Code 钩子,用 doctor 自检,把官方第 01 号场景喂给钩子并看到 deny-encoded-exec;回放全部 36 个攻击场景(15 拦截、21 询问、0 放行),用 inspect 查出演示仓库的 core.fsmonitor,再用 exposure 与 policy check 核对本机覆盖面与默认 21 条策略。
入门·3 课时·70 分钟·图文实操
免费学习无需登录

你将学会
- 安装 Stroq 并确认版本
- 跑会话体检卡片
- 用内置样例看密钥外泄报告
- 为 Claude Code 写入本地钩子
- 喂事件验证拦截并查看审计
- 回放 36 个公开攻击场景
- 在打开仓库前检查敌意 git 配置
适合谁
- 正在使用 Claude Code、Cursor 或 Codex 的开发者
- 想在本机拦住 Agent 危险命令的人
- 打开别人发来的仓库之前想先检查的人
课前准备
- 会用终端和 npm 或 npx
- 本机有 Node.js 22 或更高
- 不要求已经有 Agent 历史会话
课程目录
3 课时 · 70 分钟- 01装好 Stroq,跑会话体检卡片,用内置样例看密钥外泄报告确认 Node.js 22,安装 @stroq/cli 0.30.0 并核对版本;查看 help 命令分组;在没有历史会话的机器上跑体检卡片;用 sent --try 看官方内置的「密钥被发到另一家公司」报告,理解五档含义与「只打印名字、不打印值」。图文20 分钟开始本课
- 02在实验目录写入 Claude Code 钩子,喂一条投毒 README 事件并看到拦截用 init --dry-run 预览将写入的钩子 JSON,再写入项目级 .claude/settings.json;用 doctor 确认 0.30.0、622 条规则与自检通过;把官方第 01 号场景的 PostToolUse 与 PreToolUse 事件喂给钩子,看到会话被标成 suspect、curl 管道被 deny-encoded-exec 拒绝,再用 why、log、verify 核对审计链。图文25 分钟开始本课
- 03回放 36 个攻击场景,检查陌生仓库,映射本机暴露面用 attack 回放 36 个场景,得到 15 拦截、21 询问、0 放行;构造一份带 core.fsmonitor 的演示仓库并用 inspect 查出它会在 git status 时执行;导出 inspect --env 的两行抵消变量;用 exposure --share 看本机哪些 Agent 还未覆盖,用 policy check 确认默认 21 条策略。图文25 分钟开始本课
课程说明
Stroq 是给命令行编程 Agent 用的本地安全工具(Apache-2.0,无需账号、钩子热路径不联网)。它要回答的问题很直接:你的 Agent 到底听谁的。很多事故并不是你下了错误指令,而是 Agent 读到一段网页、一条 GitHub Issue 或一个 MCP 返回结果,里面藏着冲着自动化工具写的话,Agent 照做后运行了陌生的 npx 包,或把 .env 里的密钥用 curl 发了出去。Stroq 先读取本机已有的 Claude Code、Codex CLI 与 Cursor 会话记录,对照你机器上的密钥文件,用密钥名(从不打印值)报告它们有没有出现在工具参数里;再用两道本地钩子在下一步动作执行前按确定性策略放行、询问或拒绝,并把每次决定写进带哈希链的审计日志。2026 年 11 月 5 日发布的 0.30.0 版把会话密钥体检、钩子拦截、36 个公开攻击回放、陌生仓库检查与本机暴露面映射收成一条 CLI。
本课按 Stroq 官方首页、文档、session-secret-scan 页、GitHub README / GUIDE 与 npm 包装页整理。2026-11-09(Asia/Shanghai)在一台 Linux x86_64 云主机上,用 Node.js v22.21.1 安装 @stroq/cli 0.30.0,全部关键命令都实跑过:确认版本、查看命令列表、在没有 Agent 会话的机器上跑体检卡片、用内置样例 sent --try 看密钥外泄报告、在实验目录里预览并写入 Claude Code 钩子、用 doctor 自检、把官方攻击语料里的「读到投毒 README → 执行 curl 管道给 sh」事件喂给钩子并看到 deny-encoded-exec、用 why / log / verify 核对审计链、回放全部 36 个攻击场景(15 拦截、21 询问、0 放行,耗时 1.14 秒)、用 inspect 查出一份演示仓库的 core.fsmonitor、以及 exposure --share 与 policy check。「对照结果」都是真实输出,只做了节选。没有实测的有三项:本机没有 Claude Code / Codex 历史会话,所以真实 stroq sent(非 --try)与 replay --last 只能演示「找不到会话」;没有打开 stroq console 图形界面(无图形环境);没有跑 attack --fuzz 的 500 种变形,课内已注明。
| 课时 | 你会做完的事 | 需要什么 |
|---|---|---|
| 1 | 装好 Stroq 0.30.0,跑会话体检卡片,用内置样例看密钥外泄报告长什么样 | 终端,Node.js 22 或更高 |
| 2 | 在实验目录预览并写入 Claude Code 钩子,用 doctor 自检,手动喂一条「读到投毒说明 → 执行远程脚本」事件并看到拦截 | 同上;一个空的实验目录 |
| 3 | 回放 36 个公开与合成攻击场景,检查一份带敌意 git 配置的演示仓库,映射本机 Agent 暴露面 | 同上 |
适合
- 已经在用 Claude Code、Cursor、Codex CLI 或其他编程 Agent,想知道会话里有没有密钥外泄的人
- 希望在下一步危险命令真正执行之前,用本地、不调用大模型的策略拦住它的开发者
- 需要在打开别人发来的仓库之前,先看它会不会在
git status时偷偷跑代码的人
先修
- 会用终端和 npm(或 npx)
- 本机有 Node.js 22 或更高(官方要求;测试机系统自带的是 20,已换成 22.21.1)
- 不要求已经装过 Claude Code:没有历史会话也可以用内置样例与攻击回放学完全部步骤
你会学到
- 用 npx 或本地安装确认 Stroq 0.30.0,并看懂命令分组
- 用体检卡片查看近 30 天会话;用
sent --try看「密钥被发到另一家公司」的报告长什么样 - 用
init --dry-run预览钩子,再写入项目级.claude/settings.json,用doctor核对 - 把 hook 事件从标准输入喂给 Stroq,亲眼看到它按来源拦住
curl | sh,并用why指出是哪次 Read - 用
attack在沙箱里回放 36 个场景,验证默认策略是 15 拦截、21 询问、0 放行 - 用
inspect在打开仓库之前发现core.fsmonitor这类会在git status时执行的配置,并用inspect --env导出抵消变量
官方资料
- 产品首页:https://stroq.dev/
- 文档:https://stroq.dev/docs/
- 会话密钥扫描:https://stroq.dev/session-secret-scan/
- GitHub:https://github.com/AGGIB/Stroq
- CLI README:https://github.com/AGGIB/Stroq/blob/main/packages/cli/README.md
- 完整指南 GUIDE:https://github.com/AGGIB/Stroq/blob/main/docs/GUIDE.md
- npm 包装:https://www.npmjs.com/package/@stroq/cli
- 站内工具页:https://www.kun.net/tools/stroq/
绑定工具: Stroq(https://www.kun.net/tools/stroq/ )