Gemini CLIにHooks機能が導入され、エージェントのライフサイクルにおける特定のポイントでカスタムスクリプトを実行できる。

主な特徴:

  • コンテキストの追加
    • gitのコミットログやJiraチケットなどをリクエスト処理前に注入できる。
  • アクションの検証
    • 危険な操作(APIキーの書き込みなど)をブロックしたり、要件を満たすまで再試行させたりできる。
  • ポリシーの適用
    • 組織全体のセキュリティ要件などを自動適用できる。
  • ログ
    • ツール使用状況を追跡できる。
  • 通知
    • アイドル状態や確認待ちなどのステータス変更を通知できる。

活用例(シークレットスキャン): BeforeTool フックで、AI が機密データをコードベースへ書き込むのを止められる。

設定例(.gemini/settings.json):

json
{
  "hooks": {
    "BeforeTool": [
      {
        "matcher": "write_file|replace",
        "hooks": [
          {
            "name": "secret-scanner",
            "type": "command",
            "command": "$GEMINI_PROJECT_DIR/.gemini/hooks/block-secrets.sh",
            "description": "Prevent committing secrets"
          }
        ]
      }
    ]
  }
}

注意点: Hooksは同期的に実行されるため、処理が遅延するとエージェントの応答も遅れる点に注意が必要である。 実行にはユーザー権限が使用されるため、プロジェクトレベルのHooksを有効にする際はソースを確認することが推奨される。

#参考文献