shwldshwlda month ago

GitHub issueコメントからAIコード生成を安全にトリガーする

GitHub Actionsの issue_comment イベントを使って、issueやPRのコメントからAIコーディングエージェントを起動するワークフローを構築した。/codex のようなプレフィックスをトリガーにし、全コメントで発火しないようにする。

安全に運用するためのポイント:

  1. コマンドインジェクション対策 — コメント本文を ${{ github.event.comment.body }} で直接シェルに展開すると任意コマンド実行の脆弱性になる。環境変数経由で渡す:
env:
  COMMENT_BODY: ${{ github.event.comment.body }}
steps:
  - run: |
      # $COMMENT_BODY はシェル変数として安全に展開される
      INSTRUCTION="${COMMENT_BODY#/codex }"
  1. 同時実行の制御concurrency グループをissue/PR番号単位で設定し、同じissueへの連続コメントで重複実行を防ぐ:
concurrency:
  group: codex-${{ github.event.issue.number || github.event.pull_request.number }}
  cancel-in-progress: true
  1. 実行状況の可視化 — 開始時にリアクション(👀)を付け、完了時に結果をコメントとして投稿する。失敗時もエラー内容を投稿して、ワークフローログを見に行かなくても状況が分かるようにする

  2. 入力バリデーション — 指示文の最大長を制限し、あまりに短い指示には確認を返す