コンテンツにスキップ
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 を環境変数で渡す構成が安全