こんにちは、SRE の多田です。
今日は GitHub Agentic Workflows の活用事例についてお話しします。
少し前に GitHub が Agentic Workflows を Technical Preview として公開しましたね。
みなさんはもう既に使われていたりしますでしょうか?
ちなみに Agentic Workflow が何かということや、既存の GitHub Actions との違いなどはここでは説明しません。
上記 Changelog や公式ドキュメントの FAQ などを参照ください。
公式でも活用事例なども合わせて公開してくれていますが、他に良い活用先はないだろうかと模索している方も多いかと思います。
私も探していたところなのですが、タイムリーでまさにうってつけなようなものがありました。
以下の記事で紹介されていますが、我々のチームではセキュリティの観点から GuardDuty や Amazon Inspector を導入しています。
つい最近には多くのアカウントでこれらの機能を有効化しました。
しかし、Amazon Inspector などの検知は対応することが望ましいですが、それなりな量の検出がされることもあり、対応に工数を割かれることも懸念です。
昨今は Coding Agent もあるので、検知内容を入力として Pull Request を作成させるなども良いでしょう。
しかし、そのような作業こそまさに Agentic Workflow でカバーできるのではと思いました。
つまり dependabot の Inspector 版を Agentic Workflow で実現しようということです。
Agentic Workflow を作成するための Agent が公式で用意されています。
CLI から gh aw extensions を使ってできますが、GitHub 上からも作成することができます。
Agentic Workflow を作成したい Repository の Agent Session で以下のプロンプトを投げ込みましょう。
Initialize this repository for GitHub Agentic Workflows using https://raw.githubusercontent.com/github/gh-aw/main/install.md
Agent Session が完了すると Pull Request が作成されます。
しかし以下のような Warning が出ていることもあります。
設定によっては出てない場合もあるでしょう。
Warning が出ていない場合はそのまま Merge して大丈夫です。

この Warning は書かれているとおりで Copilot Agent によるネットワークアクセスは Firewall で制限されていてデフォルトで許可されている箇所以外はブロックされます。
Warning に記載がある api.github.com を Repository Settings → Copilot → Coding agent → Custom allowlist から追加すれば OK です。
Warning が残っている状態で進めるのは不安が残るので、私は許可した上で再度 Pull Request を再作成しました。


ここまでで準備は完了です。
Agent Session で作成した Agent を指定した上で作成したい Agentic Workflow の仕様を指示しましょう。

詳細なプロンプトは割愛させていただきますが
- OIDC 認証で AWS へアクセスする
- AWS_REGION、AWS_ROLE_ARN は Repository variables から提供する
- Amazon Inspector の High 以上の検出結果について、Repository のコードが修正対象となる場合には修正 Pull Request を作成する
- 1 検出に対して 1 Pull Request とすること
- 修正が困難な場合には Pull Request ではなく Issue を起票すること
- Pull Request ないし Issue が起票済みのものに関しては再起票しないこと
- Schedule で定期実行すること
- workflow_dispatch で手動実行できること
などを指示しました。
この Agentic Workflow を Amazon Inspector を有効にしているチームの Repository に導入することで対応負荷が軽くなることを期待しています。
Agentic Workflow はこのような非決定論的なアクションに対して、今までの Actions では構築が大変だったものが、公式の仕組みでセキュリティガードレールも提供された上で簡易に構築できるようになったのは非常にありがたいと思います。
まだ他にも有効活用できるシチュエーションがありそうなので模索していきたいですね!