GitHub連携と自動同期
エージェントの作業ファイルは、GitHub リポジトリと双方向に連携できます。できることは3つです。
| 操作 | 向き | 内容 |
|---|---|---|
| Clone(取り込み) | GitHub → エージェント | リポジトリの内容を作業ディレクトリへ反映します |
| コミット&プッシュ | エージェント → GitHub | アプリやエージェントが編集した内容を同じブランチへ書き戻します |
| push で自動同期 | GitHub → エージェント(自動) | リポジトリへ push が入るたび、作業ディレクトリを自動で最新化します(Vercel の自動デプロイと同じ使用感) |
設定はすべて、エージェント編集画面の**「コンテキスト」タブ → GitHub 連携パネル**で行います。
連携できる場所は2つ(ルート)
| ルート | 場所 | 用途 |
|---|---|---|
| プロジェクトルート | 作業ディレクトリ(エージェントの実行場所) | スキル・参照資料・成果物などの作業一式 |
| ホームディレクトリ | サンドボックスの $HOME | ~/.claude/CLAUDE.md などのグローバル設定 |
それぞれ独立にリポジトリ・ブランチ・PAT・自動同期を設定できます(同じリポジトリを両方に向けることも可能です)。
GitHub PAT と必要な権限
PAT(Personal Access Token)はルート(リポジトリ)ごとに設定し、Clone 実行時に自動保存されます(暗号化保存・画面には末尾4桁のみ表示。空欄なら保存済みをそのまま使用)。
| 用途 | Fine-grained PAT | Classic PAT |
|---|---|---|
| 公開リポジトリの Clone のみ | 不要 | 不要 |
| プライベートリポジトリの Clone | Contents: Read | repo |
| コミット&プッシュ | Contents: Read and Write | repo |
| push 自動同期(Webhook 自動登録) | Webhooks: Read and write | repo |
ヒント
GitHub → Settings → Developer settings → Personal access tokens(Fine-grained 推奨)で、対象リポジトリに上記権限を付けたトークンを発行してください。
Clone(取り込み)と保護パス
- プロジェクトルートへの Clone は、作業ディレクトリをリポジトリの内容で置き換えます(未プッシュの変更は失われます)。
- ホームディレクトリへの Clone は**オーバーレイ(マージ)**です。
$HOMEは消さず、リポジトリと同名のファイルだけ上書きされます。 - 「Clone で保護するパス」(1行=1パス)を指定すると、プロジェクトルートの Clone もオーバーレイになり、指定したディレクトリ/ファイルは一切上書き・削除されずに残ります(例: エージェントが育てた
project-referenceを守ったままスキルだけ更新する)。
コミット&プッシュ
- 同じブランチへ直接コミット&プッシュします(force push はしません)。
- リポジトリが取り込み後に他所で更新されていると非 fast-forward で弾かれます(409)。その場合は Clone し直してから再度プッシュしてください。
- ホームディレクトリのプッシュでは、キャッシュや秘密情報(
.sshや認証ファイル等)は自動で除外されます。
push で自動同期(自動デプロイ)
GitHub 連携パネルの**「push で自動同期」トグルを ON にするだけ**で使えます。ON にすると、保存済みの PAT を使ってサーバーが GitHub リポジトリへ Webhook を自動登録するため、GitHub 側での手動設定は不要です。
- 対象ブランチ(未設定ならリポジトリの既定ブランチ)へ push が入るたび、そのルートが最新へ自動 Clone されます。保護パスはそのまま維持されます(オーバーレイ)。
- 別ブランチ・タグの push は無視されます。プロジェクトルートとホームが同じリポジトリ・同じブランチを向いていれば、両方が同期されます。
- トグルを OFF にすると GitHub 側の Webhook も自動で削除されます(同じリポジトリを別ルートが使用中の場合は残します)。
- 受信は署名(HMAC)を必須検証しており、URL を再発行しても Webhook は自動で追随します。
注意
PAT に Webhook の権限(上の表を参照)が無いと自動登録に失敗します。その場合も自動同期自体は有効化でき、画面に表示される URL を GitHub リポジトリの Settings → Webhooks へ手動登録すれば同じように動きます(Content type は application/json、イベントは push のみ)。
重要
自動同期は push のたびにサンドボックスを起動して Clone します。保護パス以外の作業中の変更は上書きされるため、エージェントに育てさせたいファイルは「Clone で保護するパス」に入れておくか、こまめにコミット&プッシュしてください。