Zenn Dev Karaage0703 Articles F317cc3a51fba1
GitHub AppをAIエージェントに使わせる方法
- URL: https://zenn.dev/karaage0703/articles/f317cc3a51fba1
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: AIエージェントにGitHubを操作させる際の認証方法として、個人アカウントや PAT に代わる GitHub App の利用手順を解説している。GitHub App は権限をリポジトリ単位・操作単位で絞り込めるうえ、Installation Access Token は 1 時間で失効するため漏洩リスクが低い。コミットやPRがBot名義になることで操作の追跡も容易になる。Python の PyGithub を使ったトークン取得・自動再取得の実装例や、gh CLI との統合ラッパー、コンテナ運用の考え方まで網羅されている。
詳細
- 認証方式3種の比較: gh CLI 個人ログイン(手軽だが全権限を渡す)、Fine-grained PAT(リポジトリ単位可だが静的トークン)、GitHub App(動的トークン・Bot名義・最小権限)
- GitHub App 作成手順: Settings → Developer settings で登録、権限は Contents/Issues/Pull requests を用途別に設定、「Only on this account」を選択
- 秘密鍵(.pem)を生成し、chmod 600 で保護。App ID と Installation ID をメモ
- PyGithub でのトークン取得は3行: Auth.AppAuth → GithubIntegration → get_access_token(installation_id)
- トークンの寿命は1時間。長時間稼働 bot では GitHubAppAuth クラスで「残り5分未満になったら再取得」するキャッシュ実装を推奨
- gh CLI との統合: GH_TOKEN 環境変数に取得トークンを渡すラッパースクリプト(gh-app)で既存の gh コマンドをそのまま流用できる
- git commit 時のユーザー設定: APP_ID+APP_NAME[bot]@users.noreply.github.com 形式が GitHub 推奨
- コンテナ運用: .pem ファイルを読み取り専用でマウントし、GITHUB_APP_ID/INSTALLATION_ID を環境変数で渡す構成が安全