メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://kawax.biz/llms.txt

Use this file to discover all available pages before exploring further.

Cloud Sessions

Cloud Sessions は、ローカルの Copilot CLI プロセスではなく GitHub 側のホスト環境でセッションを実行する機能です。Mission Control 上でタスクが予約され、クラウド側の copilot-agent が接続して処理を進めます。 通常の Remote Sessions は「ローカルで動くセッションを GitHub Web/モバイルから見えるようにする」機能です。実行場所自体を GitHub ホスト環境にしたい場合は Cloud Sessions を使います。

前提条件

  • ユーザーが Cloud Agent を利用できる Copilot 権限を持っている
  • GitHub トークン、またはログイン済み Copilot CLI ユーザーで認証できる
  • 可能なら GitHub リポジトリ情報を関連付ける
  • 組織ポリシーでクラウド実行とリモート閲覧が許可されている

基本的な使い方

SessionConfigcloudCloudSessionOptions を指定します。リポジトリ情報は SDK 型としては任意ですが、Mission Control とクラウドエージェントに文脈を渡すため指定することを推奨します。
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Support\PermissionHandler;
use Revolution\Copilot\Types\CloudSessionOptions;
use Revolution\Copilot\Types\CloudSessionRepository;
use Revolution\Copilot\Types\SessionConfig;

Copilot::start(function (CopilotSession $session): void {
    $session->sendAndWait(prompt: 'READMEを要約して');
}, config: new SessionConfig(
    onPermissionRequest: PermissionHandler::approveSafety(),
    cloud: new CloudSessionOptions(
        repository: new CloudSessionRepository(
            owner: 'myorg',
            name: 'myrepo',
            branch: 'main',
        ),
    ),
));
配列でも指定できます。
Copilot::run(
    prompt: 'このリポジトリのテスト方針を確認して',
    config: [
        'cloud' => [
            'repository' => [
                'owner' => 'myorg',
                'name' => 'myrepo',
                'branch' => 'main',
            ],
        ],
    ],
);

最初のプロンプトを送るタイミング

Cloud Session は 2 段階で初期化されます。session.create は Mission Control でタスクが予約された時点で戻りますが、クラウド側の copilot-agent が接続して session.start を発行するまで少し時間があります。 最初のプロンプトを確実に届けるには、先にイベントを購読し、producercopilot-agentsession.start を確認してから送信してください。
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Support\PermissionHandler;
use Revolution\Copilot\Types\CloudSessionOptions;
use Revolution\Copilot\Types\CloudSessionRepository;
use Revolution\Copilot\Types\SessionConfig;

$config = new SessionConfig(
    streaming: true,
    onPermissionRequest: PermissionHandler::approveSafety(),
    cloud: new CloudSessionOptions(
        repository: new CloudSessionRepository(owner: 'myorg', name: 'myrepo'),
    ),
);

Copilot::start(function (CopilotSession $session): void {
    $cloudAgentStarted = false;

    foreach ($session->stream(timeout: 30.0) as $event) {
        if (
            $event->is(SessionEventType::SESSION_START)
            && $event->data('producer') === 'copilot-agent'
        ) {
            $cloudAgentStarted = true;
            break;
        }
    }

    if (! $cloudAgentStarted) {
        throw new RuntimeException('Cloud session did not become ready.');
    }

    $session->sendAndWait(prompt: 'READMEを要約して');
}, config: $config);
実アプリでは、キューや非同期処理側で session.start 確認後にプロンプトを送る構成にすると扱いやすいです。

Remote Sessions との違い

機能実行場所主な用途
Remote Sessionsローカルまたは自前サーバーWeb/モバイルから既存セッションを閲覧・操作する
Cloud SessionsGitHub ホスト環境ユーザー端末や自前サーバーで Copilot CLI を動かさずに処理する

注意点

  • Cloud Sessions は権限と組織ポリシーの影響を受けます
  • streaming: true にすると assistant.message_delta などのリアルタイムイベントを受け取れます
  • 権限リクエストの扱いは通常セッションと同じです。Laravel 版の Facade 経由ではデフォルトで deny-all なので、必要に応じて PermissionHandler::approveSafety() などを指定してください

参考

最新情報は GitHub リポジトリ を参照してください。
Last modified on May 31, 2026