gh CLI を使って Pull Request を作成できます。
リポジトリリソースのライフサイクルは、所有する Session と共有されます。URL や mount_path を変更する必要がある場合は、新しい Session を作成してください。実行中の Session ではマウント済みリポジトリを差し替えられません。
ワークフロー
GitHub トークンを準備する
タスクに必要なリポジトリスコープ(読み取り、書き込み、Pull Request 作成など)を付与した GitHub Personal Access Token(fine-grained PAT を推奨)を生成します。このトークンはすべての GitHub リポジトリリソースで必須のフィールドです。
Session 作成時にリポジトリをマウントする
create-Session リクエストの
resources に type: "github_repository" のエントリを追加し、URL と PAT を含めます。リポジトリの clone はコンテナの一時ディスク上に存在します。24 時間操作がないと、プラットフォームがディスクを回収する場合があります。Session は会話を再開できますが、ディスク上の未コミットの変更は失われます。Container reference — File persistence を参照してください。
リポジトリリソースのフィールド
GitHub リポジトリリソースは以下のフィールドを使用します。Session 作成時に渡してください。| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | はい | "github_repository" でなければなりません |
url | string | はい | リポジトリ URL(例:https://github.com/your-org/your-repo) |
mount_path | string | いいえ | コンテナ内で clone するパス。デフォルトはリポジトリ名から導出されるパス |
authorization_token | string | はい | リポジトリの clone とプッシュに使用する GitHub Personal Access Token |
authorization_token は作成リクエストまたはトークンローテーションのリクエストでのみ渡します。Session 詳細や Session リソースを取得しても返されません。Session ごとに最小権限の PAT を使用し、終了したら失効させてください。Session 作成時に GitHub リポジトリをマウントする
Create Session を呼び出し、resources[] 内にリポジトリを含めます。
resources 配列には正規化されたマウント記述が含まれます。トークンは返されません。
複数のリポジトリをマウントする
1 回のリクエストで、異なるmount_path の下に複数のリポジトリをアタッチできます。たとえばフロントエンドとバックエンドのコードを同じ Session に取り込む場合などです。
トークン権限モデル
GitHub には 2 種類の PAT があります。fine-grained PAT(推奨)と classic PAT です。どちらを選んでも、最小権限の原則に従い、タスクに必要なスコープのみを付与してください。推奨される権限
以下の表は、一般的な Agent のアクションと fine-grained PAT のリポジトリ権限の対応を示しています。classic PAT の場合はrepo スコープが相当します。
| Agent のアクション | fine-grained PAT の権限(Repository permissions) |
|---|---|
| プライベートリポジトリの clone / 読み取り | Contents: Read |
| ブランチの作成とプッシュ | Contents: Read & Write |
| Pull Request の作成 / コメント | Pull requests: Read & Write |
| Issue の読み取り | Issues: Read |
| Issue の作成 / コメント | Issues: Read & Write |
| リポジトリメタデータの読み取り(常に必須) | Metadata: Read |
セキュリティガイダンス
- Session 作成リクエストのボディや
resourcesを含むレスポンスは、ログ・スクリーンショット・バージョン管理に残さないでください。これらには平文の PAT が含まれます。 - タスクが終了したら、GitHub の設定で速やかに PAT を失効させてください。fine-grained PAT は短い
Expiration値もサポートします。 - パブリックリポジトリでも PAT は必須です。パブリックの場合は、露出面を最小化するために読み取り専用で短命なトークンを使うことを推奨します。
- 環境ごと(開発と本番)に異なる PAT を使い、監査証跡が意味を保つようにしてください。
Pull Request ワークフロー
マウント済みのリポジトリディレクトリ内で、Agent はgit と gh コマンドを直接実行できます。ランタイムイメージには git と gh CLI の両方が同梱されており、プラットフォームはリポジトリリソースの authorization_token を自動的に GH_TOKEN としてコンテナに渡します。gh のインストールやトークンの手動エクスポートは不要です。「編集 -> プッシュ -> PR 作成」の一連のフローを実行するには:
- Agent で
agent_toolset_20260401ツールセットを有効化し、少なくともBash、Read、Write、Editを含めます。Agent ツール を参照してください。 - ユーザーメッセージでタスク、リポジトリパス、対象ブランチを明確に指定します。
/app/your-repo にリポジトリをマウントした Session ID sess_019e5ce0bf9074b69c3481e93771a522 を前提としています。
プラットフォームはリポジトリリソースの
authorization_token からコンテナ内の GH_TOKEN を自動構成するため、gh pr create はそのまま動作します。その PAT に Pull requests: Read & Write がないと PR 作成は失敗します。推奨される権限 に記載のスコープを事前に PAT へ付与しておいてください。Agent 構成のベストプラクティス
- コード検索と修正をカバーするため、Agent の
toolsでBash、Read、Write、Edit、Glob、Grepを有効化します。 - Agent の
systemプロンプトでマウントパスを明示します。例:「Your working directory is/app/your-repo. Run allgitandghcommands inside this folder.」 - 長いタスクでは、未コミットの変更が残らないよう、各ターンの最後に
git statusを実行させます。 - Session をまたいで成果物を引き継ぐには、重要な出力(パッチ、レポート)を Files API でアップロードさせてください。アップロードしていない中間ファイルは、24 時間操作がないとコンテナディスクの回収時に失われます。
FAQ
Q: リポジトリが巨大です。clone を高速化するには? A: リポジトリリソースは現在フル clone を使用しており、リソースオブジェクトに shallow-clone のスイッチはありません。非常に大きな monorepo の場合は、タスクのスコープを絞るか、関連するサブディレクトリ/ファイルを Files API で補助的なコンテキストとしてアップロードしてください。 Q: PAT が期限切れまたは失効した場合は? A: 以降の git /gh の呼び出しは 401 を返します。新しい PAT で新しい Session を作成してください。プッシュしていないローカルの変更がある場合は、まず Agent に git diff のパッチを出力させ、Files API でアップロードして保全してください。
Q: プライベートな fork や組織内部のリポジトリはサポートされますか?
A: はい。PAT が対象リポジトリに Contents: Read を持っていれば可能です。組織が SSO を強制している場合は、clone する前に PAT を認可(Authorize ボタン)する必要があります。
Q: git サブモジュールはサポートされますか?
A: リポジトリリソースに専用のサブモジュールフィールドはありません。サブモジュールが必要な場合は、Agent にリポジトリ内で git submodule update --init --recursive を実行させ、PAT がすべてのサブモジュールリポジトリへの読み取りアクセスを持つことを確認してください。
Q: 実行中の Session でリポジトリを差し替えられますか?
A: いいえ。特定のリポジトリマウントで Session を作成すると、そのマウントは更新呼び出しで置き換えられません。別のリポジトリや mount_path が必要な場合は新しい Session を作成してください。
Q: Agent は変更を自動的に GitHub にプッシュしますか?
A: いいえ。Agent がターン内で git push を実行しない限り、編集はコンテナの一時ディスク上に残ります。ユーザーメッセージで「ブランチをプッシュする」「PR を作成する」と明示してください。
Q: GitHub Enterprise Server (GHES) はサポートされますか?
A: GitHub リポジトリリソースは url、mount_path、authorization_token のみを公開しており、専用の GHES 構成フィールドはありません。GitHub Enterprise Server の場合は、GHES エンドポイントがプラットフォームから到達可能であること、トークンがそのホストで gh/git と動作することを確認してください。
次のステップ
- Sessions — 作成時にリソースをアタッチ — リソースマウントの概要
- API — Create a session — Session 作成の完全なリクエストボディ
- Skills — コードレビューや PR ワークフローを再利用する
- Container reference — ディレクトリ構成とディスクの挙動