AIエージェントのgit操作を止めていなかったフック

English

この記事の目次

本記事の概要

AIエージェントのgitコマンドを実行の前に検査するフックは、実行環境から呼ばれたコマンドを止めていなかった。このフックは個人会社で開発しているサービスにあり、コマンドを環境変数から読んでいた。AIエージェントの実行環境は、その環境変数を設定せず、入力を標準入力のJSONで渡す。このため、フックはどのコマンドも終了コード0で通した。修正のコミットのメッセージにも、すべてのコマンドを通したと書いてある。

フックが動いていないことは、ブランチが切り替わった事故で初めて分かった。導入のコミットのメッセージには、手動で試験した7つの場合が期待どおりだったと書いてある。ただし、どの方法で入力を渡したかは記録に無い。修正のコミットで加わったテストは、本物のスクリプトを起動して標準入力にJSONを渡す。

入力を読めないときに終了コード0で通すフックは、止めるべきコマンドが来るまで、動いていないことが見えない。導入したときの試験で入力をどう渡したかは、推定でしか言えない。導入の時点の実行環境がこの環境変数を設定していた可能性も残る。また、修正の後のフックも、JSONを解釈できないときはコマンドを通す。

記事から得られること

AIエージェントの実行環境のフックで、AIエージェントの操作を止める仕組みを作る人に向けた記事である。

この記事の根拠は3つある。2つのリポジトリにあるgitの履歴と、AIエージェントの実行環境の公式ドキュメントと公開の変更履歴と、既刊記事の本文である。公式ドキュメントは2026-10-14と2026-10-28に、変更履歴は2026-10-14に確認した。2つのリポジトリは、個人会社で開発しているサービスのリポジトリと、個人のメモリとルールの変遷のリポジトリである。