Skip to content

fix: complete SENSITIVE_ENV_KEYS to cover all runtime API keys#171

Merged
Svtter merged 1 commit into
mainfrom
fix/review-suggestions
Jun 3, 2026
Merged

fix: complete SENSITIVE_ENV_KEYS to cover all runtime API keys#171
Svtter merged 1 commit into
mainfrom
fix/review-suggestions

Conversation

@Svtter

@Svtter Svtter commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

From PR #170 review suggestions.

SENSITIVE_ENV_KEYS was missing MINIMAX_API_KEY, XIAOMI_API_KEY, and USE_GITHUB_TOKEN — all set by run-github-opencode.py at runtime. This meant extra-env overrides of these keys would silently succeed without the ::warning:: that other sensitive keys trigger.

Add MINIMAX_API_KEY, XIAOMI_API_KEY, USE_GITHUB_TOKEN to SENSITIVE_ENV_KEYS
so that extra-env overrides of these keys trigger the existing ::warning::.
@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

无遗漏

PR 描述明确指出需要将 MINIMAX_API_KEYXIAOMI_API_KEYUSE_GITHUB_TOKEN 三个运行时设置的敏感环境变量补全到 SENSITIVE_ENV_KEYS 集合中,以使 extra-env 覆盖这些 key 时能够触发 ::warning:: 警告。

经核查当前文件 github-run-opencode/run-github-opencode.py:17-21,三个 key 全部已加入集合:

  • USE_GITHUB_TOKEN(在 line 18)
  • MINIMAX_API_KEY(在 line 20)
  • XIAOMI_API_KEY(在 line 20)

::warning:: 触发逻辑在 line 487-488 已存在并对集合内任何 key 生效,运行时设置这三个 key 的代码(line 437、442、443)也确认它们确实是运行时变量。所有 spec 项均已实现,无遗漏。

New%20session%20-%202026-06-03T10%3A33%3A34.808Z
opencode session  |  github run

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

可合并

本 PR 将 SENSITIVE_ENV_KEYS 集合补全为与 set_env() 调用列表对齐,新增 USE_GITHUB_TOKENMINIMAX_API_KEYXIAOMI_API_KEY 三项。变更小、聚焦、风格一致,CI 通过;性能、架构、耦合度均无问题。四个 reviewer 一致判定"无阻塞项"。

阻塞项:无

建议项(按共识程度排序):

  • 已确认(quality + architecture 交叉验证)—— 霰弹式修改 / 缺单一事实源SENSITIVE_ENV_KEYSset_env(...) 调用点(run-github-opencode.py:437,442,443)、supports_model_with_available_key 的模型前缀分支分散在三处且手维护,本次 PR 正是该模式"易遗漏"的具体表现。后续可考虑抽出 PROVIDER_ENV_VARS 之类的数据驱动映射,并由其派生出 set_env / 敏感键集合 / key 检查;同时补充一致性测试(静态扫描 set_env( 调用的 key 列表与集合作比较)以防止再次漂移。

  • 额外覆盖风险(architecture)GITEA_TOKENrun-github-opencode.py:285)同样由 GITHUB_RUN_OPENCODE_GITEA_TOKEN 注入运行时环境但未纳入 SENSITIVE_ENV_KEYS,存在与本次修复同性质的覆盖风险,建议一并评估纳入。

  • 额外覆盖风险(quality):内部配置变量 OPENCODE_ARGSOPENCODE_WORKING_DIRECTORYOPENCODE_ATTEMPTSOPENCODE_RETRY_*OPENCODE_CONFIG_CONTENT 等亦未在 SENSITIVE_ENV_KEYS 中,extra-env 覆盖不会产生警告(run-github-opencode.py:485-486 仅对 GITHUB_RUN_OPENCODE_ 前缀告警)。若本 PR 范围仅限"运行时 API 密钥"可暂不处理,否则可考虑对 OPENCODE_ 前缀引入同类警告。

  • 告警强度(security):当前 SENSITIVE_ENV_KEYS 仅触发 ::warning::run-github-opencode.py:487-488),不阻断覆盖。对 GITHUB_TOKEN 与各 *_API_KEY 等高风险键,可评估引入强校验或阻断逻辑。

  • 文档/语义(security):建议在文档中说明 MINIMAX_API_KEY / XIAOMI_API_KEY 对应的模型前缀(run-github-opencode.py:54-57minimax / xiaomi),便于审计追踪与命名一致性。


📋 各 Reviewer 详细审查结果
quality

可合并

本 PR 在 SENSITIVE_ENV_KEYS 集合中补全了三个之前遗漏的运行时变量(USE_GITHUB_TOKENMINIMAX_API_KEYXIAOMI_API_KEY),使得通过 extra-env 输入误覆盖这些敏感变量时能给出 ::warning:: 警告,与上下文 set_env() 的调用列表(run-github-opencode.py:437,442,443)保持一致。改动小、聚焦、风格与原文件一致,CI 中 smoke-actions 与 AI Code Review 均通过。

阻塞项:无

建议项:

  • OPENCODE_ARGSOPENCODE_WORKING_DIRECTORYOPENCODE_ATTEMPTSOPENCODE_RETRY_*OPENCODE_CONFIG_CONTENT 等内部配置变量目前不在 SENSITIVE_ENV_KEYS 中,且 extra-env 处理只会对 GITHUB_RUN_OPENCODE_ 前缀发出警告(run-github-opencode.py:485-486),因此用户经 extra-env 覆盖 OPENCODE_* 不会产生提示。若本 PR 的目标仅限"运行时 API 密钥",可不在此处处理;如想完整防御,可后续 PR 引入对 OPENCODE_ 前缀的同类警告。
  • 该集合无任何自动化测试覆盖,未来若需保证 set_env(...)SENSITIVE_ENV_KEYS 之间不再漂移,可考虑加一条小型一致性测试(例如静态扫描 set_env( 调用的 key 列表与集合作比较)。
security

安全无虞

此 PR 在 SENSITIVE_ENV_KEYS 集合中新增 USE_GITHUB_TOKENMINIMAX_API_KEYXIAOMI_API_KEY 三项。变更扩大了 extra-env 输入对敏感变量覆盖的告警范围(run-github-opencode.py:487-488),属于安全加固,未引入新的攻击面、注入风险或鉴权问题。完整文件复核未发现 OWASP Top 10 相关缺陷。

阻塞项:无

建议项:

  • SENSITIVE_ENV_KEYS 当前仅发出警告(run-github-opencode.py:487-488),不阻断覆盖。建议对高风险键(如 GITHUB_TOKEN 与各 *_API_KEY)考虑强校验或阻断逻辑,避免 extra-env 误覆盖。
  • 新增键的语义建议在文档中说明对应模型前缀(run-github-opencode.py:54-57minimax / xiaomi),便于审计追踪与命名一致性。
performance

性能良好
本次 PR 仅扩展了模块级常量 SENSITIVE_ENV_KEYS(从 6 个键增加到 9 个,并调整顺序),用于在 extra-env 解析时对敏感键做 O(1) 集合成员检查(run-github-opencode.py:487)。该集合在模块加载时构造一次,被 in 操作符读取,不存在遍历、拷贝或重复计算。增加 3 个字符串字面量对内存/CPU/IO 均无可观测影响。

阻塞项:无
建议项:无

architecture

架构有疑虑

本次 PR 仅修改 SENSITIVE_ENV_KEYS 集合,补充了三项此前遗漏的敏感环境变量(USE_GITHUB_TOKENMINIMAX_API_KEYXIAOMI_API_KEY),并对集合内顺序做了微调。变更本身是局部、定向的修复,与现有写法保持一致。

架构层面的分析

  • 耦合度SENSITIVE_ENV_KEYS 是一组独立字符串字面量,与具体模块无强耦合,新增条目零成本。
  • 模块归属/分层:集合位于入口脚本顶部常量区,符合既有放置习惯,无越层。
  • 接口设计:作为 extra-env 覆盖检测的输入,抽象层级合理。
  • 霰弹式修改(Shotgun surgery):每个新增 provider env 变量需要在三处保持同步——set_env(...)supports_model_with_available_key 的前缀分支、以及 SENSITIVE_ENV_KEYS。本次 PR 正是这种"易遗漏"模式的真实写照:上次新增 MINIMAX/XIAOMI 时漏注册到敏感集合,本次才补回。集合是手维护的"影子数据",是 extra-env 安全告警正确性的隐性前提。
  • 一致性:补回的三个键都已在 _main()set_env,改动与现有调用点对齐。

阻塞项:无

建议项:

  • SENSITIVE_ENV_KEYS 当前与 set_env("XXX", ...) 调用点以及 supports_model_with_available_key 的模型前缀分支分散在三处,缺乏单一事实源;建议未来抽出一个 PROVIDER_ENV_VARS 之类的数据驱动映射,由该结构派生出 set_env、敏感键集合、key 检查等逻辑,避免再次出现"新增 provider 时漏注册到敏感集合"的同类问题。
  • 顺带核查:GITEA_TOKENrun-github-opencode.py:285)也是从 GITHUB_RUN_OPENCODE_GITEA_TOKEN 注入到运行时环境且未加入 SENSITIVE_ENV_KEYS,存在与本次修复同性质的覆盖风险,可一并评估是否纳入。

@Svtter Svtter merged commit cb97896 into main Jun 3, 2026
3 checks passed
@github-actions github-actions Bot mentioned this pull request Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant