AIの鬼
#新モデル Zenn AI

Claude Code Hooksのgit add -A事故とcheckpoint.js肥大化、実際の修正コード

Claude Code Hooksのgit add -A事故とcheckpoint.js肥大化、実際の修正コード(内容を表す図ではないイメージ画像)
イメージ

3週間前に書いたClaude CodeのHook実装ガイドのコードがもう古くなっていた。載せたコードが書き換えられていた理由は、あの実装のままだと事故るからだ。Hookは「一度書いたら動き続けるスクリプト」だと思っていたが、運用スケールが増えるたびに最初の前提が崩れていく。インフラコードは成果物と違い「動いているから触らない」対象になりやすいのに、実は最も想定外の壊れ方をしやすい。

最初の事故は、セッション終了時にHANDOFFやoutput配下の変更をgit pushするスクリプトで起きた。判定は「これらに変更があるか」なのに、実行は「git add -A」——全ファイルをステージする。判定と実行の範囲がズレていた。複数セッションが同時に動くVPSでは、あるセッションがHANDOFFを更新した瞬間、別セッションが編集中だったサーバーコードも一緒にステージされ、本番リポジトリに乗ってしまった。書きかけのコードが誰にも気づかれないうちに載る。「git add -Aを避けて対象を明示する」という教訓は社内記録に残っていたが、インフラコード自体がレビュー対象から外れていたため見落とされていた。修正後は対象をgit statusから明示的に絞り込むようにした。

もう一つの事故は、チェックポイントファイルが1.27MBまで育っていたこと。発言のたびに1行ずつ追記する設計で、複数セッションが毎日追記し続けた結果だ。大きさそのものより、Editツールが毎回全文読み込みするため、エディタが遅くなった。対策として、300KBを超えたら自動でアーカイブに退避し、直近60KB分だけを本体に残すようにした。さらに、追記専用のスクリプトを作り、AIはこれをコマンド化して呼ぶだけにした。2つの事故の共通点は「最初は正しかった」こと。git add -Aも逐次追記も、最初の数週間は問題なく動いていた。壊れたのは、セッション数や稼働日数が増えてからだ。つまり、インフラコードは「完成品」ではなく「運用とともに進化する存在」だということ。一人の企業でもツールが毎日回るようになると、書きっぱなしのコードはいつか事故を起こす。

※ 上記は配信元記事をもとにAIの鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。

御社でもAIを使ってみませんか
まずはここから 御社でもAIを使ってみませんか? 御社の実際の業務を題材に、AIで何ができるかを一緒に考えます。 「ChatGPTの使い方」を教えるだけの研修ではありません。 AI研修・AI活用相談 →