GitHub issueコメントからAIコード生成を安全にトリガーする
GitHub Actionsの issue_comment イベントを使って、issueやPRのコメントからAIコーディングエージェントを起動するワークフローを構築した。/codex のようなプレフィックスをトリガーにし、全コメントで発火しないようにする。
安全に運用するためのポイント:
- コマンドインジェクション対策 — コメント本文を
${{ github.event.comment.body }}で直接シェルに展開すると任意コマンド実行の脆弱性になる。環境変数経由で渡す:
env:
COMMENT_BODY: ${{ github.event.comment.body }}
steps:
- run: |
# $COMMENT_BODY はシェル変数として安全に展開される
INSTRUCTION="${COMMENT_BODY#/codex }"
- 同時実行の制御 —
concurrencyグループをissue/PR番号単位で設定し、同じissueへの連続コメントで重複実行を防ぐ:
concurrency:
group: codex-${{ github.event.issue.number || github.event.pull_request.number }}
cancel-in-progress: true
実行状況の可視化 — 開始時にリアクション(👀)を付け、完了時に結果をコメントとして投稿する。失敗時もエラー内容を投稿して、ワークフローログを見に行かなくても状況が分かるようにする
入力バリデーション — 指示文の最大長を制限し、あまりに短い指示には確認を返す