AI coding tools
Spec Kit 0.14、エージェントワークフローを再現可能なBundleとしてパッケージ化し、リモートカタログのダウンロード境界を厳格化
GitHubの仕様駆動開発ツールSpec Kit 0.14では、バージョン管理可能なBundle、Pythonスクリプトパス、再現可能なビルドが追加された。直後にリリースされた0.14.2では、shell実行パラメーターの削除と入力検証の強化も行われ、エージェントワークフローがパッケージのサプライチェーンやコマンドインジェクションの問題に直面し始めていることを示している。

GitHubは7月23日にSpec Kit 0.14.0をリリースし、翌日には0.14.2へ更新した。今回注目すべきなのは、新たなプロンプト一式の追加ではなく、仕様駆動開発コンポーネントの配布方法がさらにパッケージ化された点だ。Bundleでは、`bundle.yml`を使用してextensions、presets、workflows、stepsを単一のバージョン付きZIP成果物にまとめられる。インストール時には、ピン留めされたバージョンを展開し、integrationの競合を検査するとともに、後から更新または削除できるよう各コンポーネントの取得元を記録する。
0.14.0では`py`スクリプトタイプも正式に導入され、従来はShellとPowerShellで個別に保守されていた一部の処理がPythonへ移植された。Bundleのビルドでは、標準的なPOSIXパスに基づいてメンバーを並べ替えることで、同一の入力から異なるマシン上で異なるハッシュが生成される可能性を抑えている。エージェント設定のレビュー、ワークフローのCIへの組み込み、複数のコーディングエージェント間での仕様統一が必要なチームにとって、再現可能な成果物はプロンプトファイルを直接コピーするよりも、署名、キャッシュ、変更差分の比較を容易にする。
セキュリティも今回の主要テーマだ。0.14.0では、リモートcatalogに対して上限付きのHTTP読み取りを採用し、リダイレクトをその都度検証することで、信頼されたURLから意図しないホストへ転送されることを防いでいる。0.14.2ではさらに、`run_command()`から`shell`パラメーターを削除し、malformed hostやmappingではないworkflow inputsなどを適切に失敗として処理する仕組みを追加した。ただし、これらの修正によってBundleが完全なサンドボックスになったわけではない。ドキュメントには、失敗後の復旧はbest-effortであり、ディスクに部分的な状態が残る可能性があると明記されている。また、バージョンのピン留めが再適用されるのは初回インストール時または明示的な更新時に限られ、同名のコンポーネントがすでに存在する場合、`install`を実行しただけではバージョン比較は行われない。
エンジニアリングチームは次の段階として、クリーン環境とアップグレード環境で同一のファイルツリーが得られるかをテストし、コミュニティcatalogを通常のプロンプト一覧ではなく、ソフトウェアサプライチェーンとして扱うべきだ。Bundleがshellやエージェントツールを実行する場合は、引き続き外側にコンテナ、ネットワーク制限、人による承認を設定する必要がある。