跳转到正文
报告库
用途分类 / 其他用途

Gws Gmail Watch Skill 安全审计

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

Gmail: Watch for new emails and stream them as NDJSON.

第三方安全检查结论

发现安全风险

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

默认会把完整新邮件流式输出到终端或调用方

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

消息格式默认是 `full`,而该命令会把新邮件作为 NDJSON 流输出。完整邮件可能包含正文、发件人、收件人及其他私人内容;终端记录、代理上下文或流水线日志可能进一步保存这些内容。

为什么需要注意

运行该命令可能使邮件内容出现在屏幕、日志、命令调用方或接收该数据流的其他程序中,扩大敏感邮件的可见范围。

文档将该技能定义为把新邮件流式输出为 NDJSON,并明确 `--msg-format` 默认为 `full`。因此,在用户运行该命令且未改用 metadata/minimal 等格式时,完整消息数据可能进入终端、调用方或其日志。这符合监看邮件的功能目的,但确实会扩大私人邮件内容的暴露面;现有证据未证明内容已被记录或外传。

SKILL.md:18来自说明文档打开原文件
Watch for new emails and stream them as NDJSON
查看另外 1 个位置
SKILL.md:36来自说明文档打开原文件
| `--poll-interval` | — | 5 | Seconds between pulls || `--msg-format` | — | full | Gmail message format: full, metadata, minimal, raw || `--once` | — | — | Pull once and exit |
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

可将每封邮件持久化为单独的本地 JSON 文件

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

`--output-dir` 会把每封消息写入指定目录,示例还展示了写入 `./emails`。这些文件可能包含完整邮件内容,但文档没有说明文件权限、加密、自动清理或重复文件处理方式。

为什么需要注意

邮件副本可能长期留在工作区,随后被备份、同步、索引、提交到版本库或被同一设备上的其他主体读取。

`--output-dir` 是用户主动选择的可选功能,不是默认写盘;启用后,文档明确称每封邮件会成为该目录中的独立 JSON 文件,示例使用 `./emails`。若消息格式仍为默认的 `full`,这些文件可能保存完整消息,并受该目录的访问权限、备份和保留策略影响。文档片段没有证明文件权限不安全,也未说明覆盖或去重行为。

SKILL.md:36来自说明文档打开原文件
| `--poll-interval` | — | 5 | Seconds between pulls || `--msg-format` | — | full | Gmail message format: full, metadata, minimal, raw || `--once` | — | — | Pull once and exit |
查看另外 2 个位置
SKILL.md:39来自说明文档打开原文件
| `--cleanup` | — | — | Delete created Pub/Sub resources on exit || `--output-dir` | — | — | Write each message to a separate JSON file in this directory |
SKILL.md:47来自说明文档打开原文件
gws gmail +watch --subscription projects/p/subscriptions/my-subgws gmail +watch --project my-project --cleanup --output-dir ./emails```
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

创建的云端 Pub/Sub 资源默认会持续保留

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

文档说明 `--cleanup` 才会在退出时删除已创建资源,并明确指出不使用该参数时资源会为重连而持续存在。主题还涉及 Gmail 推送权限。

为什么需要注意

用户停止本地监听后,云项目中仍可能保留具有 Gmail 推送权限的主题或订阅,增加长期权限、管理和潜在费用负担。

文档明确表示,只有使用可选的 `--cleanup` 才会在退出时删除该命令创建的 Pub/Sub 资源;否则资源会为重连而保留。这种持久化与 Gmail 监看功能相符,但可能留下持续占用配额、产生费用或保有推送权限的云资源。用户可在不需要重连时要求使用 cleanup,或使用其已审查的现有 topic/subscription;证据没有说明实际创建了哪些资源或已产生费用。

SKILL.md:30来自说明文档打开原文件
|------|----------|---------|-------------|| `--project` | — | — | GCP project ID for Pub/Sub resources || `--subscription` | — | — | Existing Pub/Sub subscription name (skip setup) |
查看另外 4 个位置
SKILL.md:32来自说明文档打开原文件
| `--subscription` | — | — | Existing Pub/Sub subscription name (skip setup) || `--topic` | — | — | Existing Pub/Sub topic with Gmail push permission already granted || `--label-ids` | — | — | Comma-separated Gmail label IDs to filter (e.g., INBOX,UNREAD) |
SKILL.md:38来自说明文档打开原文件
| `--once` | — | — | Pull once and exit || `--cleanup` | — | — | Delete created Pub/Sub resources on exit || `--output-dir` | — | — | Write each message to a separate JSON file in this directory |
SKILL.md:53来自说明文档打开原文件
- Gmail watch expires after 7 days — re-run to renew.- Without --cleanup, Pub/Sub resources persist for reconnection.- Press Ctrl-C to stop gracefully.
SKILL.md:31来自说明文档打开原文件
| `--project` | — | — | GCP project ID for Pub/Sub resources || `--subscription` | — | — | Existing Pub/Sub subscription name (skip setup) || `--topic` | — | — | Existing Pub/Sub topic with Gmail push permission already granted || `--label-ids` | — | — | Comma-separated Gmail label IDs to filter (e.g., INBOX,UNREAD) |
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

5 个说明模块

该 Skill 调用 `gws gmail +watch` 持续监听新邮件,并将结果作为 NDJSON 流输出;除非使用 `--once`,文档没有说明它会自行停止。

查看原文
SKILL.md:18来自说明文档打开原文件
Watch for new emails and stream them as NDJSON
SKILL.md:23来自说明文档打开原文件
```bashgws gmail +watch```
SKILL.md:37来自说明文档打开原文件
| `--msg-format` | — | full | Gmail message format: full, metadata, minimal, raw || `--once` | — | — | Pull once and exit || `--cleanup` | — | — | Delete created Pub/Sub resources on exit |

该 Skill 依赖未随证据提供的共享认证与安全说明,并在该文件缺失时要求运行生成命令。因此,仅凭本次材料无法审核实际认证范围、全局参数、安全规则或生成内容。

查看原文
SKILL.md:16来自说明文档打开原文件
> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it.
SKILL.md:58来自说明文档打开原文件
- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth- [gws-gmail](../gws-gmail/SKILL.md) — All send, read, and manage email commands
从这里开始 · 工作说明SKILL.md
gws-gmail-watch
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文

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

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:22来自说明文档打开原文件
```bashgws gmail +watch
SKILL.md:43来自说明文档打开原文件
```bashgws gmail +watch --project my-gcp-project
读取了多少行
60
文件校验值(用于核对版本)
6f18bf757d55efa688543d64f3ee19d972f14bd913571df62006dc81eb650095