Skip to main content

SessionConfig

SessionConfigクラスで様々な設定が可能です。 Copilot::run(prompt: '...', config: $config)やCopilot::start(function (CopilotSession $session) { ... }, config: $config)のように使用します。 単純にモデルを指定したいだけのようなSessionConfigクラスを使うまでもない時は配列での指定も可能です。Copilot::run(prompt: '...', config: ['model' => 'auto'])

検出ルート

skillDirectories、agentDirectories、hookDirectories、instructionDirectories は、それぞれスキル・カスタムエージェント・ファイルフック・カスタム指示の検出専用ルートです。これらを指定しても、エージェントに一般的なファイルアクセス権限は付与されません。通常のファイルアクセス先を追加する場合は additionalDirectories を使います。 検出ルートは enableConfigDiscovery の有効・無効にかかわらず指定できます。相対パスは指定時の有効な workingDirectory を基準に一度だけ解決され、後から作業ディレクトリが変わってもルートは移動しません。省略または null は既定の検出元を変更せず、[] はSDKが明示したルートだけをクリアします。スキル・エージェント・フック・指示ファイルそれぞれのソース無効化設定や Managed Settings は引き続き適用されます。 セッション再開時にはResumeSessionConfigクラスを使用します。SessionConfigとほとんど同じですが少しだけ違います。ResumeSessionConfigは設定を変えたい項目のみ指定します。他は新規セッション開始時の設定が引き継がれます。 SDKは同じセッションオプションを作成時と再開時の両方のRPCペイロードに送信します。これにはBYOKのプロバイダーとモデル、メモリ、enableMcpApps、interactiveUser、enableGitHubCacheStore、検出ルート、そしてonMcpAuthRequest・onExitPlanModeRequest・onAutoModeSwitchRequestなどのハンドラーが含まれます。再開時はResumeSessionConfigまたは同じキーを持つ配列で指定してください。クロージャーやプロバイダーオブジェクトは永続化されないため、再開のたびに再度指定する必要があります。

キャンバスプロバイダー

キャンバスは実験的機能です。
canvasesでキャンバスを宣言し、canvasHandlerでopenとactionのリクエストを処理します。エージェントがキャンバスを開いたりアクションを呼び出したりすると、ランタイムはreverse-RPCでハンドラーを呼び出します。requestCanvasRenderer: trueを指定するとレンダラーとしてオプトインし、ランタイムはこの接続用のキャンバスエージェントツールをモデルに提供します。キャンバスを表示できないSDK呼び出し元がクリーンな状態を保つため、デフォルトはoffです。
関連オプション:
  • requestExtensions: true は拡張機能サーフェスへのオプトインです。ランタイムは拡張機能管理ツールをこの接続のセッションに接続します。デフォルトはoffです。
  • extensionInfo: new ExtensionInfo(source: 'github-app', name: 'my-extension') は、この接続上のキャンバスプロバイダーのための安定した拡張機能IDを設定します。ランタイムは接続ごとのIDの代わりに${source}:${name}を使用します。配列での指定も可能です。
Canvas を再開する場合も、canvases と canvasHandler を再度指定します。canvasHandler は PHP プロセス内でのみ使用され、RPC payload には宣言メタデータだけが送られます。ResumeSessionConfigではopenCanvasesも指定できます。セッションが中断された時に開いていたキャンバスのスナップショットを渡すと、ランタイムはキャンバスの状態を再ハイドレートできるため、再度開く必要がありません。開いている状態は $session->openCanvases() で取得でき、session.canvas.opened / session.canvas.closed イベントに合わせて更新されます。

SessionFsプロバイダー

スキルとファイルシステムのコールバック

skillProviderを使うと、アプリケーションが管理するソースからスキルを読み込めます。コールバックはそのセッションに属し、Copilotランタイムにはシリアライズされません。クラウドセッションではカスタムスキルプロバイダーはサポートされていません。
SkillProviderCallOptions::$signalでコールバックのキャンセルトークンを取得できます。キャンセルは協調的に行われるため、コールバック側でシグナルを監視し、保留中の処理を自らキャンセルしてください。コールバック配列の代わりにRevolution\Copilot\Contracts\SkillProviderを実装することもできます。 sessionFsProviderも同じセッション単位の設定を使用します。テキスト用のコールバックはreadFile(path)とwriteFile(path, content, mode)です。バイナリファイルをサポートするにはreadFileBytes(path)とwriteFileBytes(path, bytes, mode)の両方を指定するか、SessionFsBinaryProviderを実装します。これらのコールバックは元のバイト列をそのまま受け取り・返し、JSON-RPC上のbase64エンコードはSDKが処理します。ファイルシステムへのアクセスは、アプリケーションが公開を意図したパスに限定してください。

sessionFsでセッション状態全体を委譲する

クライアントオプションsessionFs(session_fsでも可)を指定すると、Copilot CLIのセッション状態(session-stateファイルやセッションごとのSQLiteデータベース)を独自のストレージへ委譲できます。この場合、すべてのセッション設定でcreateSessionFsProviderが必須です。createSession()とresumeSession()の両方で、セッションのIDが確定した後・ランタイムへのリクエスト送信前に呼び出されます。
Copilotファサードを使う場合はconfig/copilot.phpでsession_fsを設定します。initialCwd、sessionStatePath、conventions(posixまたはwindows)は必須です。項目が不足している場合やconventionsの値が不正な場合はInvalidArgumentExceptionになります。 createSessionFsProviderはClosureで、SessionConfigとResumeSessionConfigの配列/fromArray()/toArray()でも使えます。返すプロバイダーはオブジェクトでもcallableの配列でも構いません。オプションの機能ごとにインターフェースがあります。 プロバイダーが宣言したcapabilitiesを満たさない場合はInvalidArgumentExceptionになります。プロバイダーがサポートしていない操作を呼び出すとUNKNOWNエラーが返ります。プロバイダーは例外をスローして失敗を通知します。codeがENOENT(またはerrno 2)の例外はENOENTになり、それ以外はUNKNOWNになります。transaction()からSessionFsSqliteTransactionFailureをスローするとerrorClass(busyOrLocked、fatal、postCommitAmbiguous)を通知できます。 クライアントオプションsessionFsが無い場合、createSessionFsProviderは呼び出されず、従来のsessionFsProvider(readFile/writeFile)がそのまま使えます。

マルチテナント向け empty モード

クライアント設定のmodeをemptyにすると、Copilot CLI のホスト環境やセッション間状態に依存する機能を既定で無効にします。省略時は従来どおりcopilot-cliです。empty モードでは永続化先としてbase_directory、session_fs、または外部サーバーのurlのいずれかを指定してください。
empty モードでは各セッションにavailableToolsの指定が必要です。ToolSetを使うとソース修飾付きのツールフィルター(builtin:、custom:、mcp:)を組み立てられます。BuiltInTools::Isolatedは、ホストのファイルシステム・環境・ネットワーク・セッション間アクセスを持たない、単一セッション内で完結する組み込みツールだけを許可します。
ツール名は/^[a-zA-Z0-9_-]+$/に一致するか、ワイルドカード*である必要があります。それ以外の場合、ToolSetはInvalidArgumentExceptionをスローします。 empty モードではセッションテレメトリー、永続 MCP OAuth token storage、embedding retrieval/cache、instruction discovery、file hooks、host git operations、session store、GitHub cache store、skills、memory、experimental mode が安全側の既定値になります。明示したセッション設定はこれらの既定値より優先されます。systemMessageのreplaceはそのまま利用でき、それ以外のモードではenvironment_contextセクションを除去します。CLI プロセスではCOPILOT_DISABLE_KEYTAR=1を設定します。

GitHub cache store

enableGitHubCacheStore: trueを指定すると読み取り専用のGitHub cache storeを要求します。ただし、github_sqlツールが登録されるのはCLIのGITHUB_CACHE_STORE feature flagが有効な場合のみです。
クラウド実行は Cloud Sessions、Plugin Directory は Plugin Directories を参照してください。
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年10月19日