跳转到正文
报告库
用途分类 / 开发辅助

Respond To Pr Comments In Blocklist Skill 安全审计

作者说它能做什么(原文)

Interactively walk a user through PR review comments one at a time, collect a per-comment decision, then post agent-authored replies on GitHub and resolve the review threads once the user approves a preview. Use only when the user wants to reply to or resolve review threads on GitHub. Skip when the user only wants comments fetched or displayed (use `pr-comments`), or only wants the code changes ma

第三方安全检查结论

发现安全风险

已检查文件
1
发现的风险
2
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
低风险

发布失败或中断时,回复正文临时文件可能留在本机

原文依据:4 处
发现了什么

流程把回复正文和 JSON 负载写入临时文件,但只在 GitHub 命令之后执行普通的 `rm -f`,没有退出陷阱或失败清理步骤。命令报错、代理终止或进程被中断时,清理命令可能不会运行。

为什么需要注意

尚未发布的回复、引用的审查内容或用户提供的理由可能继续保存在临时目录中,并受该机器临时目录权限和清理策略保护。

活动流程把回复正文及其 JSON 负载写入临时文件,且删除操作排在网络发布命令之后。若执行在删除前被中断,正文可能残留在系统临时目录;内容可能包含尚未公开的代码审阅说明。源码未展示退出陷阱或等效的保证清理机制。用户可要求使用保证执行的清理机制,并限制临时文件权限和保留时间。

SKILL.md:185来自说明文档打开原文件
For review comments, post replies with the REST API endpoint. Write the reply body to a temporary JSON file and pass it with `--input` instead of putting the response text directly in command-line arguments:```shREPLY_BODY_FILE="$(mktemp)"cat > "$REPLY_BODY_FILE"REPLY_PAYLOAD_FILE="$(mktemp)"python3 - "$REPLY_BODY_FILE" "$REPLY_PAYLOAD_FILE" <<'PY'import jsonimport sysfrom pathlib import Pathbody_file = Path(sys.argv[1])payload_file = Path(sys.argv[2])payload_file.write_text(json.dumps({"body": body_file.read_text()}))PYGH_PAGER="" gh api \  --method POST \  /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies \  --input "$REPLY_PAYLOAD_FILE"rm -f "$REPLY_BODY_FILE" "$REPLY_PAYLOAD_FILE"```
查看另外 3 个位置
SKILL.md:207来自说明文档打开原文件
For PR-level comments or review-body comments that cannot be directly threaded, post a normal PR comment and quote or link to the original comment:```shREPLY_BODY_FILE="$(mktemp)"cat > "$REPLY_BODY_FILE"GH_PAGER="" gh pr comment {pull_number} --body-file "$REPLY_BODY_FILE"rm -f "$REPLY_BODY_FILE"```
SKILL.md:188来自说明文档打开原文件
```shREPLY_BODY_FILE="$(mktemp)"cat > "$REPLY_BODY_FILE"REPLY_PAYLOAD_FILE="$(mktemp)"python3 - "$REPLY_BODY_FILE" "$REPLY_PAYLOAD_FILE" <<'PY'import jsonimport sysfrom pathlib import Pathbody_file = Path(sys.argv[1])payload_file = Path(sys.argv[2])payload_file.write_text(json.dumps({"body": body_file.read_text()}))PYGH_PAGER="" gh api \  --method POST \  /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies \  --input "$REPLY_PAYLOAD_FILE"rm -f "$REPLY_BODY_FILE" "$REPLY_PAYLOAD_FILE"```
SKILL.md:210来自说明文档打开原文件
```shREPLY_BODY_FILE="$(mktemp)"cat > "$REPLY_BODY_FILE"GH_PAGER="" gh pr comment {pull_number} --body-file "$REPLY_BODY_FILE"rm -f "$REPLY_BODY_FILE"```
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

强制使用 Warp Agent 身份,可能造成错误的作者归属

原文依据:4 处
发现了什么

所有可能发布的回复都必须标为 `[Warp Agent]`,提交也必须加入 `Warp Agent <agent@warp.dev>` 共同作者信息。该要求不检查实际执行此 Skill 的代理是否属于 Warp,因此可能生成事实不符的身份和贡献记录。

为什么需要注意

审查者和未来查看 Git历史的人可能误判是谁撰写回复或参与修改,削弱审计记录、责任归属和基于身份作出的信任判断。

该 Skill 明确要求所有拟发布回复使用 `[Warp Agent]` 前缀,并在用户选择提交时把 `Warp Agent <agent@warp.dev>` 记为共同作者,但没有要求确认实际代理身份或贡献归属。即使发布和提交均需用户批准,这些固定署名仍可能让审阅者或提交历史错误地认为 Warp Agent 是执行者或共同作者。用户可要求作者将署名改为实际代理身份,或允许预览时删除不准确的署名。

SKILL.md:112来自说明文档打开原文件
For draft replies, be concise and concrete. Prefer replies that say what changed or why the comment is intentionally not addressed. Prefix every draft reply that may be posted to GitHub with `[Warp Agent]` so reviewers can clearly see the response was agent-authored. If the fix has already been committed and pushed before replies are posted, include a link to the commit that resolved the comment so the response is auditable.
查看另外 3 个位置
SKILL.md:157来自说明文档打开原文件
3. Stage the intended changes, commit in a non-interactive command, and push the current branch to `origin`.4. Include `Co-Authored-By: Warp Agent <agent@warp.dev>` in the commit message (never in a PR description), and do not add it again if the commit already has one.5. If commit or push fails, stop before posting GitHub replies and report the failure.
SKILL.md:181来自说明文档打开原文件
Use the GitHub CLI only after approval. Clear the pager for all `gh` commands.Before running any GitHub CLI command that posts a reply or PR comment, verify the outgoing body begins with `[Warp Agent]`. If it does not, add the prefix before posting.
SKILL.md:183来自说明文档打开原文件
Before running any GitHub CLI command that posts a reply or PR comment, verify the outgoing body begins with `[Warp Agent]`. If it does not, add the prefix before posting.
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

8 个说明模块

该 Skill 会逐条收集用户对可操作审查意见的决定,并按所选模式修改代码;它要求保留无关的本地改动,并在最终发布前检查差异和运行相关验证。

查看原文
SKILL.md:118来自说明文档打开原文件
- In one-by-one mode, edit and validate each accepted fix before continuing to the next comment.- In batch mode, wait until all comment decisions are collected, then make all accepted edits together.When making changes:- Apply only changes related to the selected PR comments.- Preserve unrelated local changes.- Follow repository-specific coding, testing, and style rules.- Run the narrowest useful validation after each one-by-one fix, and run final validation after all fixes are applied.- If a requested fix is unsafe, ambiguous, or conflicts with another comment, stop and ask the user before editing.
SKILL.md:131来自说明文档打开原文件
After all accepted fixes are applied:1. Review `git diff` to confirm the changes match the collected decisions.2. Run relevant formatting, linting, typechecking, build, or tests based on the repository's conventions and the files changed.3. If validation cannot be run, explain why in the final summary and include that caveat in the preview.Do not commit changes unless the user explicitly asks.

该 Skill 能把修改提交并推送到当前分支的 `origin`,但仅在展示相关选择并由用户选择提交和推送后执行;失败时要求停止发布 GitHub 回复。

查看原文
SKILL.md:141来自说明文档打开原文件
After validation and before posting any GitHub replies or resolving review threads, ask whether the user wants to commit the changes and push them to `origin`. This order ensures reviewers see pushed code before they see agent-authored comment responses.If there are no working tree changes from addressing comments, skip the commit/push question and continue to the GitHub reply preview.Call `ask_user_question` with options like:- `Commit and push these changes to origin before posting replies`- `Do not commit or push; continue to the GitHub reply preview`- `Stop before posting GitHub replies`- `Other...`
SKILL.md:152来自说明文档打开原文件
If the user chooses to commit and push:1. Review `git status` and the final diff so only intended comment-response changes are included.2. Ask for or propose a concise commit message if one is not already clear; preserve the `Other...` option for custom commit instructions.3. Stage the intended changes, commit in a non-interactive command, and push the current branch to `origin`.4. Include `Co-Authored-By: Warp Agent <agent@warp.dev>` in the commit message (never in a PR description), and do not add it again if the commit already has one.5. If commit or push fails, stop before posting GitHub replies and report the failure.

GitHub 回复和审查线程解决属于外部账户写操作。该 Skill 要求先展示逐条预览,再获得明确批准;无法可靠匹配元数据时要求改为报告限制,不进行猜测。

查看原文
SKILL.md:162来自说明文档打开原文件
After the commit/push decision is complete, and before posting anything to GitHub, show a preview grouped by comment. For each comment include:- comment URL or short identifier- action: reply only, resolve only, reply and resolve, or no GitHub action- reply body- commit link, when a pushed commit exists for the fix- validation relevant to that commentThen call `ask_user_question` to ask whether to proceed:- `Post replies and resolve approved threads`- `Edit the draft responses first`- `Do not post anything`- `Other...`If the user chooses to edit, collect their edits, update the preview, and ask for approval again. Do not post until the user selects the approval option.
SKILL.md:248来自说明文档打开原文件
Resolve an approved thread with:```shGH_PAGER="" gh api graphql \  -f threadId="$THREAD_ID" \  -f query='mutation($threadId: ID!) { resolveReviewThread(input: { threadId: $threadId }) { thread { id isResolved } } }'```If a comment cannot be replied to or resolved through the available metadata, report the limitation and suggest a manual GitHub action instead of guessing.
从这里开始 · 工作说明SKILL.md
respond-to-pr-comments-in-blocklist
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 5 个章节,可在原文件中查看。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

读取文件
SKILL.md:189来自说明文档打开原文件
REPLY_BODY_FILE="$(mktemp)"cat > "$REPLY_BODY_FILE"REPLY_PAYLOAD_FILE="$(mktemp)"
SKILL.md:198来自说明文档打开原文件
payload_file = Path(sys.argv[2])payload_file.write_text(json.dumps({"body": body_file.read_text()}))PY
SKILL.md:211来自说明文档打开原文件
REPLY_BODY_FILE="$(mktemp)"cat > "$REPLY_BODY_FILE"GH_PAGER="" gh pr comment {pull_number} --body-file "$REPLY_BODY_FILE"
修改文件
SKILL.md:198来自说明文档打开原文件
payload_file = Path(sys.argv[2])payload_file.write_text(json.dumps({"body": body_file.read_text()}))PY
SKILL.md:204来自说明文档打开原文件
  --input "$REPLY_PAYLOAD_FILE"rm -f "$REPLY_BODY_FILE" "$REPLY_PAYLOAD_FILE"```
SKILL.md:213来自说明文档打开原文件
GH_PAGER="" gh pr comment {pull_number} --body-file "$REPLY_BODY_FILE"rm -f "$REPLY_BODY_FILE"```
读取了多少行
268
文件校验值(用于核对版本)
864831a5bf3d2613a6832fa10df5aa77aa798a71a578aeb203c1d1ff8ef09db3