Skip to content

配布手順を最新Releaseと固定依存の検証へ更新 - #164

Merged
shinya0x00 merged 4 commits into
mainfrom
codex/security-release-2.0.9
Aug 8, 2026
Merged

配布手順を最新Releaseと固定依存の検証へ更新#164
shinya0x00 merged 4 commits into
mainfrom
codex/security-release-2.0.9

Conversation

@ao-codex-agent

@ao-codex-agent ao-codex-agent Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

目的

前回のCodex Security scanで確認した、mutableなinstallerと未検証archiveをuser-level Skill scopeへ取り込む導入経路を閉じる。現行repositoryに実行コードの脆弱性はないが、供給物が改変された場合にAgent scopeへ永続的なSkill injectionを許す余地があった。このPRはcomponent repositoryのdirect installを残したまま、最新の安定版GTP 2.x Releaseを自動追従しつつ、導入手順の検証をfail-closedにする。collection側は変更しない。

変更内容

  • README.mdの共通準備を、GitHubのreleases/latestを一度だけ解決してtagを固定し、そのtagのRelease archiveとSHA256SUMSを検証する方式へ変更。v2.0.9のURL・archive名・hashを手順に埋め込まない。
  • Node.js 22.20.0以上のguard、set -eu、archive内の二つのSKILL.md確認、v2.x以外を拒否するtag検証を追加。
  • skills v1.5.21本体とruntime依存7個(tar@7.5.22yaml@2.9.0@isaacs/fs-minipass@4.0.1chownr@3.0.0minipass@7.1.3minizlib@3.1.0yallist@5.0.0)をexact version・SHA-512で検証する手順を維持。
  • 検証済みの8個のローカルtarballを絶対pathでnpm exec --offlineへ渡す。未検証zip、tag名だけのarchive、検証失敗後の継続実行は使わない。
  • DESIGN.mdのDistribution境界と、gtp/decisions/distribution.mdgtp/decisions/skill-installation-scope.mdの採用手段・変更履歴を最新Release方式へ揃える。

根本原因

READMEは「GTP 2.xのReleaseを選ぶ」と説明していたのに、直下のURL・archive名・source hashがすべてv2.0.9固定だった。別Releaseを選ぶと、選択内容と実際に検証・導入するarchiveが食い違う。さらに従来の手順は、一時directoryでnpm exec --package="./..."を実行しており、npmが解決するprefixとtarballの相対pathがずれていた。grep、hash検証、npm packの失敗を停止させる明示的なfail-closed制御もなく、CLI本体だけを固定してruntime依存の取得経路を残していた。

利用者への影響

component direct installは、最新の安定版GTP 2.x Releaseを自動で選び、そのtagのarchiveとSHA256SUMSを検証する。Node.js 22.20.0以上とnpmが必要である。検証後のCLI起動は--offlineで行い、skills addのAgent選択と二つのSkillのuser-level copyは従来どおりである。collection releaseとcomponent repositoryのdirect installを同時に残す方針はこのPRでは変更しない。

releases/latestの解決と同じReleaseのSHA256SUMSを信頼する設計であり、Release権限そのものが侵害された場合まで防ぐ署名検証は含めていない。latest tagがGTP v2.x形式でなければ、手順は停止する。

検証

  • git diff --check
  • sed -n '82,144p' README.md | sh -n
  • releases/latestのredirect: v2.0.9へ解決、archive名を同tagから生成
  • 同tagのsource archiveをSHA-256検証: OK
  • CLI本体とruntime依存7個、計8個のSHA-512: すべてOK
  • 最新Releaseからの全準備とskills_add --agent codex --list: Found 2 skills(copyなし)
  • v3.0.0相当のtag guard: exit code 1

リリース

このPRのmerge後は、READMEをReleaseごとに書き換えず、次の最新安定版GTP 2.xが標準手順から自動追従される。collection側の更新は、このcomponent repositoryのRelease更新後に行う。

AO Codex Agent[bot] added 3 commits August 8, 2026 23:16
Decision-Ref: gtp/decisions/distribution.md
Decision-Ref: gtp/decisions/skill-installation-scope.md
CLI本体だけでなくruntime依存もexact version・SHA-512で検証し、検証済みtarballだけをofflineで実行する。Node.js 22.20.0以上を明示し、source archive・Skill構造・package hashの検証をfail-closedにする。

Decision-Ref: gtp/decisions/distribution.md

Decision-Ref: gtp/decisions/skill-installation-scope.md
@ao-codex-agent ao-codex-agent Bot changed the title 配布経路を固定版とハッシュ検証へ更新 配布手順を固定依存のoffline実行へ更新 Aug 8, 2026
releases/latestはtag解決にだけ使い、解決したtagのarchiveとSHA256SUMSをペアで検証する。固定CLIとruntime依存のoffline実行は維持する。

Decision-Ref: gtp/decisions/distribution.md

Decision-Ref: gtp/decisions/skill-installation-scope.md
@ao-codex-agent ao-codex-agent Bot changed the title 配布手順を固定依存のoffline実行へ更新 配布手順を最新Releaseと固定依存の検証へ更新 Aug 8, 2026
@shinya0x00
shinya0x00 marked this pull request as ready for review August 8, 2026 23:42
@shinya0x00
shinya0x00 merged commit db51cec into main Aug 8, 2026
@shinya0x00
shinya0x00 deleted the codex/security-release-2.0.9 branch August 8, 2026 23:42
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