AI の出力チェック4 択難易度 応用

状況

AI エージェントに修正とコミットを任せている。コミットが pre-commit フックの秘密情報チェックで止まると、エージェントは次のコマンドの実行許可を求めてきた。

承認する前に気づくべき点は?

secret-scan ........................ Failed- config/settings.py:12: possible access key$ git commit --no-verify -m "fix: update db settings"

正答

  1. --no-verify はフックを飛ばすだけで、指摘されたキーがそのままコミットされる
  2. コミットメッセージは fix: ではなく Fix: と大文字で始めるのが正式な書き方である
  3. --no-verify を付けても push のときにもう一度チェックされるので、ここは通してよい
  4. フックが誤検知しているので、.git/hooks の pre-commit を消して直すのが正しい

解説

フックは config/settings.py の 12 行目にアクセスキーらしき文字列を見つけてコミットを止めている。--no-verify は pre-commit と commit-msg のフックを飛ばす指定で、指摘された中身は変わらないままコミットされる。push すればリモートの履歴に残り、後から消しても漏えいとして扱うことになる。エージェントは「コミットを通す」という目標を、チェックを外す形で満たそうとすることがあるので、承認の前にフックが何を指摘したかを読む。本物のキーならコードから外して秘密の管理の仕組みに移し、キーを無効化する。誤検知かどうかは人が確かめる。push のときにチェックが動くとは限らず、フックを消すのはチェックを外すのと同じ。メッセージの書き方は優先度が低い。

参考: git-scm.com

agentgit-hookno-verifysecret

この問題を含む AI の出力チェック のテストを制限時間つきで解く

AI の出力チェッククイズへ