SessionConfig
Met de klasseSessionConfig zijn allerlei instellingen mogelijk.
Je gebruikt deze als Copilot::run(prompt: '...', config: $config) of Copilot::start(function (CopilotSession $session) { ... }, config: $config).
Wanneer je bijvoorbeeld alleen een model wilt opgeven en de klasse SessionConfig overbodig is, kun je ook een array gebruiken: Copilot::run(prompt: '...', config: ['model' => 'auto'])
De optie remoteSession is verwijderd in de officiële SDK 1.0.26. SessionConfig en ResumeSessionConfig accepteren deze niet meer.
Discovery roots
skillDirectories, agentDirectories, hookDirectories en instructionDirectories zijn roots die alleen voor discovery dienen voor skills, custom agents, file hooks en custom instructions.
Ze geven de agent geen algemene toegang tot bestanden.
Gebruik additionalDirectories om gewone locaties voor bestandstoegang toe te voegen.
Je kunt discovery roots instellen, ongeacht of enableConfigDiscovery is ingeschakeld.
De SDK lost relatieve paden eenmalig op, ten opzichte van de effectieve workingDirectory op het moment dat je ze instelt.
De roots verschuiven niet als de werkdirectory later verandert.
Als je een key weglaat of null doorgeeft, blijven de standaard discovery-bronnen ongewijzigd.
Als je [] doorgeeft, worden alleen de roots gewist die de SDK expliciet heeft ingesteld.
Uitschakelinstellingen per bron en Managed Settings voor skills, agents, hooks en instructions blijven van toepassing.
Vertrouwen van de werkdirectory
SteltrustWorkingDirectory in om de werkdirectory bij het aanmaken van een session als vertrouwd te markeren.
WorkingDirectoryTrust::Sessionvertrouwt de directory alleen voor de huidige session.WorkingDirectoryTrust::Userslaat het vertrouwen op, zodat latere sessions de directory ook vertrouwen.
trustWorkingDirectory is alleen beschikbaar bij het aanmaken van een session. ResumeSessionConfig accepteert deze optie niet.
Injectiemodus voor memory
MemoryConfiguration regelt memory over sessions heen.
De optie mode bepaalt waar de runtime memory injecteert:
MemoryMode::SystemPrompt(system-prompt) injecteert memory in de systeemprompt. Dit is de standaard als jemodeweglaat.MemoryMode::UserPrompt(user-prompt) injecteert memory in het gegenereerde gebruikersbericht.
Managed Settings uitsluiten
GebruikexcludedManagedSettings om de setting-paden op te geven die de runtime moet weglaten uit de Managed Settings die hij ophaalt.
Dit heeft geen invloed op instellingen die je rechtstreeks injecteert met managedSettings.
Geef excludedManagedSettings opnieuw mee in ResumeSessionConfig als de uitsluiting na het hervatten moet blijven gelden.
ResumeSessionConfig. Deze is grotendeels gelijk aan SessionConfig, maar wijkt op enkele punten af. In ResumeSessionConfig geef je alleen de instellingen op die je wilt wijzigen. De rest wordt overgenomen van de configuratie bij het starten van de nieuwe session.
De SDK verstuurt dezelfde session-opties in zowel de create- als de resume-RPC-payload.
Dit omvat BYOK-providers en -modellen, memory, enableMcpApps, interactiveUser, autopilot, sandboxConfig, excludedManagedSettings, discovery roots en handlers zoals onMcpAuthRequest, onExitPlanModeRequest en onAutoModeSwitchRequest.
Geef ze bij het hervatten mee in ResumeSessionConfig of in een array met dezelfde keys.
Closures en provider-objecten worden niet opgeslagen, dus lever ze bij elke resume opnieuw aan.
Autopilot-voortzetting
Gebruikautopilot om het beleid voor automatische voortzetting in de Autopilot-modus in te stellen.
Dit wijzigt de modus van de session zelf niet.
Nieuwe SDK-sessions hebben automatische voortzetting standaard ingeschakeld, met maxContinues op 5.
Stel maxContinues in op 0 om de reguliere automatische voortzetting uit te schakelen.
autopilot mee in ResumeSessionConfig of in een array.
Bij een warme resume blijft de huidige waarde behouden voor elk veld dat je weglaat.
Geef de instellingen na een herstart van de runtime (koude resume) opnieuw mee.
Sandbox-configuratie
GebruiksandboxConfig om de CLI-sandbox voor een session te configureren.
De SDK stuurt deze mee in zowel de create- als de resume-request.
Voor compatibiliteit met bestaande code accepteert de SDK ook sandbox als alias.
Als je beide instelt, heeft een sandboxConfig die niet null is voorrang.
auth en credentials om processen in de sandbox toegang te geven tot credentials zonder de waarden ervan bloot te stellen:
authschakelt het injecteren van credentials voorgitenghin.credentials.envVarskoppelt de naam van een omgevingsvariabele aan de HTTPS-hosts (injectHosts) die de gemaskeerde waarde mogen ontvangen. Zet de waarde van de credential zelf niet in de config.
SandboxConfig, SandboxConfigAuth, SandboxCredentialsConfig, SandboxMaskedEnvVar, SandboxConfigUserPolicyExperimental en SandboxConfigUserPolicyExperimentalSeatbelt uit de namespace Revolution\Copilot\Types\Rpc.
Regels voor het toestaan en blokkeren van netwerkverkeer zijn afhankelijk van de functies en versie van de CLI-sandbox.
Canvas providers
Declareer canvases metcanvases en verwerk open- en action-requests met een canvasHandler.
De runtime roept je handler aan via reverse RPC wanneer de agent een canvas opent of een van de bijbehorende actions aanroept.
Stel requestCanvasRenderer: true in om je aan te melden als renderer, zodat de runtime de canvas-agenttools voor deze verbinding aan het model beschikbaar stelt.
Dit staat standaard uit, zodat SDK-aanroepers die geen canvases kunnen weergeven hier geen last van hebben.
requestExtensions: truemeldt je aan voor het extension-oppervlak. De runtime koppelt dan tools voor extensionbeheer aan sessions op deze verbinding. Standaard uitgeschakeld.extensionInfo: new ExtensionInfo(source: 'github-app', name: 'my-extension')stelt een stabiele extension-ID in voor canvas providers op deze verbinding. De runtime gebruikt${source}:${name}in plaats van de ID per verbinding. Je kunt ook een array doorgeven.
canvases en canvasHandler opnieuw mee.
De canvasHandler draait alleen binnen het PHP-proces. De SDK verstuurt alleen de declaratiemetadata in de RPC-payload.
ResumeSessionConfig accepteert ook openCanvases, een snapshot van de canvases die open waren toen de session stopte.
De runtime gebruikt deze om de canvas-status te herstellen, zodat je ze niet opnieuw hoeft te openen.
Vraag de momenteel geopende canvases op met $session->openCanvases(). De SDK houdt deze lijst gesynchroniseerd met de events session.canvas.opened en session.canvas.closed.
Session filesystem providers
Skill- en filesystem-callbacks
GebruikskillProvider om skills te laden uit een bron die door je applicatie wordt beheerd.
De callbacks horen bij die session en worden niet geserialiseerd naar de Copilot-runtime.
Cloud sessions ondersteunen geen custom skill providers.
SkillProviderCallOptions::$signal geeft toegang tot het annuleringstoken van de callback.
Annulering is coöperatief. Je callbacks moeten het signaal in de gaten houden en lopend werk zelf annuleren.
In plaats van de callback-array kun je ook Revolution\Copilot\Contracts\SkillProvider implementeren.
sessionFsProvider gebruikt dezelfde configuratie op session-niveau.
De tekst-callbacks zijn readFile(path) en writeFile(path, content, mode).
Voor ondersteuning van binaire bestanden geef je zowel readFileBytes(path) als writeFileBytes(path, bytes, mode) op, of implementeer je SessionFsBinaryProvider.
Deze callbacks ontvangen en retourneren de originele bytes. De SDK regelt de base64-codering op de JSON-RPC-verbinding.
Beperk bestandstoegang tot de paden die je applicatie bewust beschikbaar wil stellen.
Alle session-status delegeren met sessionFs
Stel de clientoptie sessionFs (alias session_fs) in om de volledige session-status van de Copilot CLI, inclusief session-state-bestanden en de SQLite-database per session, naar je eigen opslag te verplaatsen.
Als je deze instelt, moet elke session-config een createSessionFsProvider-factory opgeven.
De SDK roept de factory aan voor zowel createSession() als resumeSession(), nadat de session-ID bekend is en voordat de request naar de runtime wordt verstuurd.
Copilot-facade session_fs in via config/copilot.php.
initialCwd, sessionStatePath en conventions (posix of windows) zijn verplicht.
Ontbrekende velden of een ongeldige waarde voor conventions leiden tot een InvalidArgumentException.
createSessionFsProvider is een Closure. Het werkt ook met arrays, fromArray() en toArray() op SessionConfig en ResumeSessionConfig.
De provider die de factory retourneert, kan een object of een array met callables zijn. Elke optionele capability heeft een eigen interface:
Als de provider niet voldoet aan de opgegeven capabilities, gooit de SDK een
InvalidArgumentException.
Het aanroepen van een bewerking die de provider niet ondersteunt, levert een UNKNOWN-fout op.
Providers melden fouten door een exception te gooien. Een exception met code ENOENT (of errno 2) wordt ENOENT. Al het andere wordt UNKNOWN.
Gooi SessionFsSqliteTransactionFailure vanuit transaction() om een errorClass te rapporteren (busyOrLocked, fatal of postCommitAmbiguous).
Zonder de clientoptie sessionFs roept de SDK createSessionFsProvider nooit aan, en blijft de bestaande sessionFsProvider (readFile en writeFile) gewoon werken.
Empty-modus voor multi-tenant apps
Stel de client-mode in op empty om functies die afhankelijk zijn van de hostomgeving van de Copilot CLI of van status over sessions heen standaard uit te schakelen.
De standaardwaarde is copilot-cli, waarmee het bestaande gedrag behouden blijft.
In de empty-modus moet je één opslagdoel instellen: base_directory, session_fs of een externe server-url.
availableTools instellen.
Gebruik ToolSet om toolfilters met bronvermelding te bouwen (builtin:, custom:, mcp:).
BuiltInTools::Isolated staat alleen ingebouwde tools toe die beperkt blijven tot één session, zonder toegang tot het filesystem van de host, de omgeving, het netwerk of andere sessions.
/^[a-zA-Z0-9_-]+$/ of de wildcard * zijn. Anders gooit ToolSet een InvalidArgumentException.
De empty-modus past veilige standaardwaarden toe op session-telemetrie, persistente opslag van MCP OAuth-tokens, embedding-retrieval en -cache, instructie-discovery, file hooks, git-bewerkingen op de host, de session store, skills, memory en de experimentele modus.
Session-opties die je expliciet instelt, hebben voorrang op deze standaardwaarden.
De GitHub cache store is geen standaardwaarde van de empty-modus en ook geen session-optie. De SDK verstuurt enableGitHubCacheStore niet meer in create- of resume-requests van sessions en negeert de key als deze nog in een array-config staat.
systemMessage in de replace-modus wordt ongewijzigd gebruikt. Andere modi verwijderen de sectie environment_context.
De SDK stelt ook COPILOT_DISABLE_KEYTAR=1 in voor het CLI-proces.
Zie Cloud sessions voor uitvoering in de cloud en Plugin directories voor plugin directories.
Raadpleeg de GitHub-repository voor de meest actuele informatie.