@github/copilot-sdk 1.0.20 → 1.0.21-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,32 @@ export type JsonValue = null | boolean | number | string | JsonValue[] | {
16
16
  */
17
17
  /** @experimental */
18
18
  export type AuthInfo = HMACAuthInfo | EnvAuthInfo | TokenAuthInfo | TokenProviderAuthInfo | CopilotApiTokenAuthInfo | UserAuthInfo | AccountAuthInfo | GhCliAuthInfo | ApiKeyAuthInfo;
19
+ /**
20
+ * Authentication type
21
+ *
22
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
23
+ * via the `definition` "AuthInfoType".
24
+ */
25
+ /** @experimental */
26
+ export type AuthInfoType =
27
+ /** Authentication provided by a GitHub App HMAC credential. */
28
+ "hmac"
29
+ /** Authentication resolved from environment-provided credentials. */
30
+ | "env"
31
+ /** Authentication from an interactive user sign-in. */
32
+ | "user"
33
+ /** Authentication from a selected provider-owned account, without a GitHub credential. */
34
+ | "account"
35
+ /** Authentication delegated to the GitHub CLI. */
36
+ | "gh-cli"
37
+ /** Authentication from an API key credential. */
38
+ | "api-key"
39
+ /** Authentication from a GitHub token. */
40
+ | "token"
41
+ /** Authentication from an SDK GitHub token callback. */
42
+ | "token-provider"
43
+ /** Authentication from a Copilot API token. */
44
+ | "copilot-api-token";
19
45
  /**
20
46
  * The provider kind stamped on a signed-in account.
21
47
  *
@@ -369,32 +395,6 @@ export type LoginProviderKind =
369
395
  | "proxima"
370
396
  /** Microsoft Entra sign-in that derives a GitHub (EMU) credential. */
371
397
  | "entra";
372
- /**
373
- * Authentication type
374
- *
375
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
376
- * via the `definition` "AuthInfoType".
377
- */
378
- /** @experimental */
379
- export type AuthInfoType =
380
- /** Authentication provided by a GitHub App HMAC credential. */
381
- "hmac"
382
- /** Authentication resolved from environment-provided credentials. */
383
- | "env"
384
- /** Authentication from an interactive user sign-in. */
385
- | "user"
386
- /** Authentication from a selected provider-owned account, without a GitHub credential. */
387
- | "account"
388
- /** Authentication delegated to the GitHub CLI. */
389
- | "gh-cli"
390
- /** Authentication from an API key credential. */
391
- | "api-key"
392
- /** Authentication from a GitHub token. */
393
- | "token"
394
- /** Authentication from an SDK GitHub token callback. */
395
- | "token-provider"
396
- /** Authentication from a Copilot API token. */
397
- | "copilot-api-token";
398
398
  /**
399
399
  * One step in an interactive login flow. The consumer acts on the step and calls advance to proceed. Browser-open is encoded as two distinct steps by design: `open-url` is CONSUMER-driven (the provider surfaces the authorize URL and the consumer opens it — github.com/GHEC web), while `needs-interaction` is PROVIDER-driven (the provider opens the browser or broker UI itself and does not surface a URL — Entra).
400
400
  *
@@ -5276,6 +5276,38 @@ export type SkillInstallationResult = {
5276
5276
  */
5277
5277
  /** @experimental */
5278
5278
  export type SlashCommandInvocationResult = SlashCommandTextResult | SlashCommandAgentPromptResult | SlashCommandCompletedResult | SlashCommandSelectSubcommandResult | SlashCommandAddTimelineEntryResult | SlashCommandShowDialogResult | SlashCommandSetModelResult | SlashCommandSetPlanModelResult;
5279
+ /**
5280
+ * What the one-time staff log-level migration did.
5281
+ *
5282
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5283
+ * via the `definition` "StaffLogLevelMigrationStatus".
5284
+ */
5285
+ /** @experimental */
5286
+ export type StaffLogLevelMigrationStatus =
5287
+ /** The account is not a staff account, so the migration does not apply and nothing was recorded. */
5288
+ "ineligible"
5289
+ /** The migration already ran; the stored completion timestamp is returned unchanged. */
5290
+ | "current"
5291
+ /** The migration ran now. The persisted settings may have changed, so the host should adopt the returned settings when they are present. */
5292
+ | "refreshed";
5293
+ /**
5294
+ * What the one-time staff update-channel migration did.
5295
+ *
5296
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5297
+ * via the `definition` "StaffUpdateChannelMigrationStatus".
5298
+ */
5299
+ /** @experimental */
5300
+ export type StaffUpdateChannelMigrationStatus =
5301
+ /** The account is not a staff account, so the migration does not apply and nothing was recorded. */
5302
+ "ineligible"
5303
+ /** The migration already ran within the cutoff window; the stored completion timestamp is returned unchanged. */
5304
+ | "current"
5305
+ /** The persisted update channel was changed to stable. Only this outcome requires the host to reload its configuration. */
5306
+ | "migrated"
5307
+ /** The persisted channel was already stable, so nothing changed, but the migration is now recorded as done. */
5308
+ | "completed"
5309
+ /** The account is on the experimental channel, which the migration deliberately leaves alone, and the migration is recorded as done. */
5310
+ | "excluded-experimental";
5279
5311
  /**
5280
5312
  * Subagent settings to apply, or null to clear the live session override
5281
5313
  *
@@ -5891,6 +5923,62 @@ export type WorkspacesWorkspaceDetailsHostType =
5891
5923
  "github"
5892
5924
  /** Workspace repository is hosted on Azure DevOps. */
5893
5925
  | "ado";
5926
+ /**
5927
+ * True when this process can offer installing the sandbox credential-proxy certificate authority into OS trust.
5928
+ *
5929
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5930
+ * via the `definition` "SandboxProxyCaCheckInstallationSupportResult".
5931
+ */
5932
+ /** @experimental */
5933
+ export type SandboxProxyCaCheckInstallationSupportResult = boolean;
5934
+ /**
5935
+ * True when the sandbox configuration uses the credential proxy and can need certificate-authority setup.
5936
+ *
5937
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5938
+ * via the `definition` "SandboxProxyCaCheckRelevanceResult".
5939
+ */
5940
+ /** @experimental */
5941
+ export type SandboxProxyCaCheckRelevanceResult = boolean;
5942
+ /**
5943
+ * True when an OS-level sandbox can run on this host.
5944
+ *
5945
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5946
+ * via the `definition` "SandboxCheckPlatformSupportResult".
5947
+ */
5948
+ /** @experimental */
5949
+ export type SandboxCheckPlatformSupportResult = boolean;
5950
+ /**
5951
+ * True when the sandbox on this host can reach host loopback directly.
5952
+ *
5953
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5954
+ * via the `definition` "SandboxCheckWindowsHostLoopbackSupportResult".
5955
+ */
5956
+ /** @experimental */
5957
+ export type SandboxCheckWindowsHostLoopbackSupportResult = boolean;
5958
+ /**
5959
+ * The user-facing refusal, including the platform remedy and the documentation link.
5960
+ *
5961
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5962
+ * via the `definition` "SandboxGetUnsupportedMessageResult".
5963
+ */
5964
+ /** @experimental */
5965
+ export type SandboxGetUnsupportedMessageResult = string;
5966
+ /**
5967
+ * The user-facing notice that a saved sandbox setting is inert for this session.
5968
+ *
5969
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5970
+ * via the `definition` "SandboxGetUnsupportedSettingDisabledNoticeResult".
5971
+ */
5972
+ /** @experimental */
5973
+ export type SandboxGetUnsupportedSettingDisabledNoticeResult = string;
5974
+ /**
5975
+ * True when the command stays available while enforcement is blocked.
5976
+ *
5977
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
5978
+ * via the `definition` "SandboxCheckEnforcementCommandResult".
5979
+ */
5980
+ /** @experimental */
5981
+ export type SandboxCheckEnforcementCommandResult = boolean;
5894
5982
  /**
5895
5983
  * List of all authenticated users
5896
5984
  *
@@ -6573,6 +6661,33 @@ export interface ApiKeyAuthInfo {
6573
6661
  host: string;
6574
6662
  copilotUser?: CopilotUserResponse;
6575
6663
  }
6664
+ /**
6665
+ * Credential-free authentication identity safe to expose to hosts and user interfaces.
6666
+ *
6667
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
6668
+ * via the `definition` "AuthIdentity".
6669
+ */
6670
+ /** @experimental */
6671
+ export interface AuthIdentity {
6672
+ type: AuthInfoType;
6673
+ /**
6674
+ * Authentication host
6675
+ */
6676
+ host: string;
6677
+ /**
6678
+ * Authenticated login, when available
6679
+ */
6680
+ login?: string;
6681
+ /**
6682
+ * Name of the environment variable that supplied the credential, when applicable
6683
+ */
6684
+ envVar?: string;
6685
+ /**
6686
+ * Opaque SDK GitHub credential registration backing this identity. Routing metadata only; never a credential.
6687
+ */
6688
+ registrationId?: string;
6689
+ copilotUser?: CopilotUserResponse;
6690
+ }
6576
6691
  /**
6577
6692
  * Current authentication state
6578
6693
  *
@@ -6883,6 +6998,12 @@ export interface AgentInfo {
6883
6998
  * Authored base prompt for the agent. Runtime prompt assembly may add dynamic context at invocation time. Omitted from `session.agent.list` unless `includePrompt` is true.
6884
6999
  */
6885
7000
  prompt?: string;
7001
+ /**
7002
+ * Declarative hook actions keyed by event name, executed only while this agent is active.
7003
+ */
7004
+ hooks?: {
7005
+ [k: string]: JsonValue[] | undefined;
7006
+ };
6886
7007
  }
6887
7008
  /**
6888
7009
  * Agents available to the session.
@@ -7116,6 +7237,10 @@ export interface AgentReloadResult {
7116
7237
  */
7117
7238
  /** @experimental */
7118
7239
  export interface AgentsDiscoverRequest {
7240
+ /**
7241
+ * Explicit discovery-only agent roots, separate from customAgents and filesystem grants. Available without ambient discovery, subject to managed/source disables. Relative paths resolve against the request's effective working directory when supplied. Null and omission are equivalent; an empty array contributes no explicit roots.
7242
+ */
7243
+ agentDirectories?: string[];
7119
7244
  /**
7120
7245
  * Optional list of project directory paths to scan for project-scoped agents. When omitted or empty, only user/plugin/remote-independent agents are returned (no project scan).
7121
7246
  */
@@ -7173,6 +7298,10 @@ export interface AgentSetPromptRequest {
7173
7298
  */
7174
7299
  /** @experimental */
7175
7300
  export interface AgentsGetDiscoveryPathsRequest {
7301
+ /**
7302
+ * Explicit discovery-only agent roots to enumerate, including configured missing directories. Relative paths resolve against the request's effective working directory when supplied. These are not filesystem grants or preferred creation targets. Null and omission are equivalent.
7303
+ */
7304
+ agentDirectories?: string[];
7176
7305
  /**
7177
7306
  * Optional list of project directory paths. When omitted or empty, only the user-level directory is returned.
7178
7307
  */
@@ -7200,33 +7329,6 @@ export interface ProviderDescriptor {
7200
7329
  */
7201
7330
  available: boolean;
7202
7331
  }
7203
- /**
7204
- * Credential-free authentication identity safe to expose to hosts and user interfaces.
7205
- *
7206
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
7207
- * via the `definition` "AuthIdentity".
7208
- */
7209
- /** @experimental */
7210
- export interface AuthIdentity {
7211
- type: AuthInfoType;
7212
- /**
7213
- * Authentication host
7214
- */
7215
- host: string;
7216
- /**
7217
- * Authenticated login, when available
7218
- */
7219
- login?: string;
7220
- /**
7221
- * Name of the environment variable that supplied the credential, when applicable
7222
- */
7223
- envVar?: string;
7224
- /**
7225
- * Opaque SDK GitHub credential registration backing this identity. Routing metadata only; never a credential.
7226
- */
7227
- registrationId?: string;
7228
- copilotUser?: CopilotUserResponse;
7229
- }
7230
7332
  /**
7231
7333
  * Credential-free identity metadata.
7232
7334
  *
@@ -12094,6 +12196,10 @@ export interface HistoryTruncateResult {
12094
12196
  */
12095
12197
  /** @experimental */
12096
12198
  export interface HooksDiscoverRequest {
12199
+ /**
12200
+ * Explicit discovery-only file-hook roots, separate from callback hooks and filesystem grants. Available without ambient discovery or repository file-hook enablement, subject to managed/hook disables. Relative paths resolve against the request's effective working directory when supplied. Null and omission are equivalent; an empty array contributes no explicit roots.
12201
+ */
12202
+ hookDirectories?: string[];
12097
12203
  /**
12098
12204
  * Optional project directory paths whose trusted repository and project-expanded plugin hooks should be discovered. When omitted or empty, user, managed-policy, and globally enabled installed or explicit plugin hooks are returned without project expansion.
12099
12205
  */
@@ -13187,6 +13293,10 @@ export interface InstructionDiscoveryPathList {
13187
13293
  */
13188
13294
  /** @experimental */
13189
13295
  export interface InstructionsDiscoverRequest {
13296
+ /**
13297
+ * Explicit discovery-only instruction roots using existing SDK instruction formats, not filesystem grants. Available without ambient discovery, subject to instruction/managed disables. Relative paths resolve against the request's effective working directory when supplied. Null and omission are equivalent; an empty array contributes no explicit roots.
13298
+ */
13299
+ instructionDirectories?: string[];
13190
13300
  /**
13191
13301
  * Optional list of project directory paths to scan for repository/working-directory instruction sources. When omitted or empty, only user-level and plugin instruction sources are returned (no project scan).
13192
13302
  */
@@ -13204,6 +13314,10 @@ export interface InstructionsDiscoverRequest {
13204
13314
  */
13205
13315
  /** @experimental */
13206
13316
  export interface InstructionsGetDiscoveryPathsRequest {
13317
+ /**
13318
+ * Explicit discovery-only instruction roots to enumerate, including configured missing directories. Relative paths resolve against the request's effective working directory when supplied. These are not filesystem grants or preferred creation targets. Null and omission are equivalent.
13319
+ */
13320
+ instructionDirectories?: string[];
13207
13321
  /**
13208
13322
  * Optional list of project directory paths. When omitted or empty, only the user-level targets are returned.
13209
13323
  */
@@ -17134,6 +17248,64 @@ export interface ModelCapabilitiesOverrideLimitsVision {
17134
17248
  */
17135
17249
  max_prompt_image_size?: number;
17136
17250
  }
17251
+ /**
17252
+ * Host presentation state the reasoning-summaries policy depends on.
17253
+ *
17254
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
17255
+ * via the `definition` "ModelGetReasoningSummariesRequest".
17256
+ */
17257
+ /** @experimental */
17258
+ export interface ModelGetReasoningSummariesRequest {
17259
+ /**
17260
+ * The host's persisted `showReasoning` user setting, omitted when unset.
17261
+ */
17262
+ persistedShowReasoning?: boolean;
17263
+ /**
17264
+ * Whether the host is currently showing reasoning summaries. Defaults to false.
17265
+ */
17266
+ summariesVisible?: boolean;
17267
+ }
17268
+ /**
17269
+ * Reasoning-summaries presentation policy for the session's current model.
17270
+ *
17271
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
17272
+ * via the `definition` "ModelGetReasoningSummariesResult".
17273
+ */
17274
+ /** @experimental */
17275
+ export interface ModelGetReasoningSummariesResult {
17276
+ /**
17277
+ * False until the session has a model catalog and a selected model. This read never resolves the catalog itself, and the runtime emits no readiness notification, so repeating this call alone leaves `ready` false indefinitely on a session that has neither listed models nor run a turn. `session.model.list` is the prerequisite and the signal: it resolves and caches the catalog for the session, so a successful return means the next read is ready. The exception is a session that resolves models without a Copilot catalog, that is a BYOK registry or an alternate provider: `session.model.list` returns an empty list without caching a catalog, so `ready` stays false and this policy is unavailable there. While false, every model-policy field is false and `visibility` is omitted; `experimentSettled` is independent of readiness and still reports the assignment state.
17278
+ */
17279
+ ready: boolean;
17280
+ /**
17281
+ * Whether the session's reasoning-summaries experiment assignment has settled. False means this read does not wait for a pending assignment and reports the experiment-derived fields conservatively: `showHiddenHint` is false and `visibility` falls back to `persistedShowReasoning`, or is omitted when none was supplied. A host that wants the assigned answer re-reads until this is true.
17282
+ */
17283
+ experimentSettled: boolean;
17284
+ /**
17285
+ * Whether turns on this session produce reasoning summaries, honouring an explicit session reasoning-summary override.
17286
+ */
17287
+ sessionShowsSummaries: boolean;
17288
+ /**
17289
+ * Whether the selected model shows reasoning summaries by default.
17290
+ */
17291
+ modelDefaultShowsSummaries: boolean;
17292
+ /**
17293
+ * Whether the selected model emits reasoning headers.
17294
+ */
17295
+ showReasoningHeaders: boolean;
17296
+ /**
17297
+ * Default reasoning visibility, and only meaningful once `ready` is true: false when the session produces no summaries, else the persisted setting, else the experiment's default. While `ready` is true it is omitted only when all three are unavailable, that is when the session produces summaries, no `persistedShowReasoning` was supplied, and `experimentSettled` is false. While `ready` is false there is no model policy to report and this field is always omitted, so an absent value alone does not imply a pending experiment.
17298
+ */
17299
+ visibility?: boolean;
17300
+ /**
17301
+ * Whether to show the hint that reasoning summaries are hidden. Always false while `experimentSettled` is false.
17302
+ */
17303
+ showHiddenHint: boolean;
17304
+ /**
17305
+ * Whether the supplied `persistedShowReasoning` setting only restates the model default. This reports a redundancy, not a standing instruction to delete the setting: it stays true for as long as the setting and the model default agree, including for a user who later chose that value deliberately. It exists for a one-time migration of a legacy setting written before the model default made it redundant, so a host that acts on it owns the cleanup and must gate it behind its own persisted `done` marker, delete only a setting whose value still matches the one it read, and never repeat the deletion on a later launch. Under an off-by-default reasoning-summaries experiment an explicit `showReasoning: true` opt-in also reads as redundant on a summary-producing model, so an ungated host would keep deleting that opt-in and hide summaries again on every launch.
17306
+ */
17307
+ clearRedundantSetting: boolean;
17308
+ }
17137
17309
  /**
17138
17310
  * List of Copilot models available to the resolved user, including capabilities and billing metadata.
17139
17311
  *
@@ -19341,6 +19513,27 @@ export interface PermissionsConfigureResult {
19341
19513
  */
19342
19514
  success: boolean;
19343
19515
  }
19516
+ /**
19517
+ * The policy questions a host asks before granting elevated permissions.
19518
+ *
19519
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
19520
+ * via the `definition` "PermissionsEvaluateManagedPolicyResult".
19521
+ */
19522
+ /** @experimental */
19523
+ export interface PermissionsEvaluateManagedPolicyResult {
19524
+ /**
19525
+ * True when managed policy forbids bypass-permissions mode, so allow-all style flags must not take effect.
19526
+ */
19527
+ bypassPermissionsDisabled: boolean;
19528
+ /**
19529
+ * True when a managed policy exists but this build could not determine its meaning. Hosts fail closed on it rather than assuming permission was granted.
19530
+ */
19531
+ policyUndetermined: boolean;
19532
+ /**
19533
+ * True when the managed layer supplies permission rules that the session must enforce.
19534
+ */
19535
+ permissionRulesActive: boolean;
19536
+ }
19344
19537
  /**
19345
19538
  * Indicates whether the operation succeeded.
19346
19539
  *
@@ -19612,6 +19805,44 @@ export interface PermissionUrlsSetUnrestrictedModeParams {
19612
19805
  */
19613
19806
  enabled: boolean;
19614
19807
  }
19808
+ /**
19809
+ * A complete JSON snapshot to write under the runtime's per-path file lock.
19810
+ *
19811
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
19812
+ * via the `definition` "PersistenceWriteRawJsonLockedRequest".
19813
+ */
19814
+ /** @experimental */
19815
+ export interface PersistenceWriteRawJsonLockedRequest {
19816
+ /**
19817
+ * Absolute path of the file to replace. Parent directories are created when missing.
19818
+ */
19819
+ path: string;
19820
+ /**
19821
+ * The serialized JSON document to write. It replaces the file's contents entirely; nothing is merged.
19822
+ */
19823
+ dataJson: string;
19824
+ /**
19825
+ * Comment lines to emit above the document, for a format that tolerates them. Omit for strict JSON.
19826
+ */
19827
+ fileHeader?: string | null;
19828
+ }
19829
+ /**
19830
+ * The outcome of a locked snapshot write.
19831
+ *
19832
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
19833
+ * via the `definition` "PersistenceWriteRawJsonLockedResult".
19834
+ */
19835
+ /** @experimental */
19836
+ export interface PersistenceWriteRawJsonLockedResult {
19837
+ /**
19838
+ * Whether the file now holds the requested contents.
19839
+ */
19840
+ success: boolean;
19841
+ /**
19842
+ * Why the write failed. Absent when `success` is true. A lock the runtime could not acquire in time reports here rather than raising.
19843
+ */
19844
+ error?: string | null;
19845
+ }
19615
19846
  /**
19616
19847
  * Optional message to echo back to the caller.
19617
19848
  *
@@ -21717,6 +21948,19 @@ export interface RemoteSessionRepository {
21717
21948
  */
21718
21949
  branch?: string;
21719
21950
  }
21951
+ /**
21952
+ * The stored sandbox settings to resolve against the defaults.
21953
+ *
21954
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
21955
+ * via the `definition` "SandboxApplyDefaultsRequest".
21956
+ */
21957
+ /** @experimental */
21958
+ export interface SandboxApplyDefaultsRequest {
21959
+ /**
21960
+ * The sandbox settings as stored in the settings file. An empty object resolves to the defaults alone.
21961
+ */
21962
+ stored: JsonValue;
21963
+ }
21720
21964
  /**
21721
21965
  * Resolved sandbox configuration.
21722
21966
  *
@@ -21980,6 +22224,19 @@ export interface SandboxDisableForSessionResult {
21980
22224
  */
21981
22225
  enabled: boolean;
21982
22226
  }
22227
+ /**
22228
+ * The documentation URL a host cites when it declines or downgrades a sandbox setting.
22229
+ *
22230
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22231
+ * via the `definition` "SandboxDocsUrlResult".
22232
+ */
22233
+ /** @experimental */
22234
+ export interface SandboxDocsUrlResult {
22235
+ /**
22236
+ * Documentation URL describing the sandbox and the settings that control it.
22237
+ */
22238
+ url: string;
22239
+ }
21983
22240
  /**
21984
22241
  * Managed sandbox enforcement state for a session.
21985
22242
  *
@@ -22109,17 +22366,86 @@ export interface SandboxProxyCaStatus {
22109
22366
  canInstall: boolean;
22110
22367
  }
22111
22368
  /**
22112
- * Register an absolute-time scheduled prompt.
22369
+ * The stored sandbox proxy password, if one is present.
22113
22370
  *
22114
22371
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22115
- * via the `definition` "ScheduleAddAtRequest".
22372
+ * via the `definition` "SandboxProxySecretGetResult".
22116
22373
  */
22117
22374
  /** @experimental */
22118
- export interface ScheduleAddAtRequest {
22375
+ export interface SandboxProxySecretGetResult {
22119
22376
  /**
22120
- * Epoch milliseconds when the prompt should fire.
22377
+ * The stored password. Absent when no entry exists in either the keychain or the on-disk fallback store.
22121
22378
  */
22122
- at: number;
22379
+ value?: string;
22380
+ }
22381
+ /**
22382
+ * Where this runtime keeps the sandbox proxy password.
22383
+ *
22384
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22385
+ * via the `definition` "SandboxProxySecretLocation".
22386
+ */
22387
+ /** @experimental */
22388
+ export interface SandboxProxySecretLocation {
22389
+ /**
22390
+ * Absolute path of the credential store holding the sandbox proxy password. The proxy password belongs to no MCP server, so it is kept in its own directory rather than in the MCP secret store.
22391
+ */
22392
+ configDir: string;
22393
+ /**
22394
+ * Identifier of the proxy password entry within that store. Derived from the configuration directory, so two Copilot homes on one machine never share an entry. Use it to recognize a `${secret:…}` reference in stored settings as this runtime's own proxy password.
22395
+ */
22396
+ secretId: string;
22397
+ }
22398
+ /**
22399
+ * The sandbox proxy password to store.
22400
+ *
22401
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22402
+ * via the `definition` "SandboxProxySecretSaveRequest".
22403
+ */
22404
+ /** @experimental */
22405
+ export interface SandboxProxySecretSaveRequest {
22406
+ /**
22407
+ * The password to store for the sandbox proxy.
22408
+ */
22409
+ value: string;
22410
+ }
22411
+ /**
22412
+ * Where the sandbox proxy password was stored.
22413
+ *
22414
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22415
+ * via the `definition` "SandboxProxySecretSaveResult".
22416
+ */
22417
+ /** @experimental */
22418
+ export interface SandboxProxySecretSaveResult {
22419
+ /**
22420
+ * Whether the OS keychain accepted the value. False means it was written to the on-disk fallback store instead, which is still readable by `sandbox.proxySecret.get`.
22421
+ */
22422
+ storedInKeychain: boolean;
22423
+ }
22424
+ /**
22425
+ * The user's sandbox settings raised to the managed floor.
22426
+ *
22427
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22428
+ * via the `definition` "SandboxResolveFlooredConfigResult".
22429
+ */
22430
+ /** @experimental */
22431
+ export interface SandboxResolveFlooredConfigResult {
22432
+ /**
22433
+ * The floored sandbox config, normalized through the declared sandbox shape so only declared fields in a fixed order are present.
22434
+ */
22435
+ sandboxJson: JsonValue;
22436
+ }
22437
+ /**
22438
+ * Register an absolute-time scheduled prompt.
22439
+ *
22440
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
22441
+ * via the `definition` "ScheduleAddAtRequest".
22442
+ */
22443
+ /** @experimental */
22444
+ export interface ScheduleAddAtRequest {
22445
+ /**
22446
+ * Epoch milliseconds when the prompt should fire.
22447
+ */
22448
+ at: number;
22123
22449
  /**
22124
22450
  * Prompt text to enqueue when the schedule fires.
22125
22451
  */
@@ -23894,15 +24220,27 @@ export interface SessionOpenOptions {
23894
24220
  */
23895
24221
  allowAllMcpServerInstructions?: boolean;
23896
24222
  /**
23897
- * Additional directories to search for skills.
24223
+ * Explicit discovery-only skill roots, not filesystem grants. Available without enableConfigDiscovery, subject to skill/managed disables. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
23898
24224
  */
23899
24225
  skillDirectories?: string[];
24226
+ /**
24227
+ * Explicit discovery-only agent roots, separate from customAgents and filesystem grants. Available without enableConfigDiscovery, subject to managed/source disables. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
24228
+ */
24229
+ agentDirectories?: string[];
24230
+ /**
24231
+ * Explicit discovery-only instruction roots using existing SDK instruction formats, not filesystem grants. Available without enableConfigDiscovery, subject to instruction/managed disables. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
24232
+ */
24233
+ instructionDirectories?: string[];
24234
+ /**
24235
+ * Explicit discovery-only file-hook roots, separate from callback hooks and filesystem grants. Available without enableConfigDiscovery or enableFileHooks, which controls repository-origin hooks only; hook/managed disables still apply. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
24236
+ */
24237
+ hookDirectories?: string[];
23900
24238
  /**
23901
24239
  * Skill scan directories and descendants excluded from discovery. Supports `~`-relative paths.
23902
24240
  */
23903
24241
  ignoredSkillsLocations?: string[];
23904
24242
  /**
23905
- * Whether skill loading is enabled. When omitted, an SDK skill provider enables skills by default.
24243
+ * Whether skill loading is enabled. When omitted, explicit SDK skill roots or an SDK skill provider enable skills independently of enableConfigDiscovery.
23906
24244
  */
23907
24245
  enableSkills?: boolean;
23908
24246
  /**
@@ -25679,9 +26017,21 @@ export interface SessionUpdateOptionsParams {
25679
26017
  */
25680
26018
  allowAllMcpServerInstructions?: boolean;
25681
26019
  /**
25682
- * Additional directories to search for skills.
26020
+ * Explicit discovery-only skill roots, not filesystem grants. Available without enableConfigDiscovery, subject to skill/managed disables. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
25683
26021
  */
25684
26022
  skillDirectories?: string[];
26023
+ /**
26024
+ * Explicit discovery-only agent roots, separate from customAgents and filesystem grants. Available without enableConfigDiscovery, subject to managed/source disables. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
26025
+ */
26026
+ agentDirectories?: string[];
26027
+ /**
26028
+ * Explicit discovery-only instruction roots using existing SDK instruction formats, not filesystem grants. Available without enableConfigDiscovery, subject to instruction/managed disables. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
26029
+ */
26030
+ instructionDirectories?: string[];
26031
+ /**
26032
+ * Explicit discovery-only file-hook roots, separate from callback hooks and filesystem grants. Available without enableConfigDiscovery or enableFileHooks, which controls repository-origin hooks only; hook/managed disables still apply. Relative SDK paths resolve once when supplied against the request's effective workingDirectory; retained roots do not move on cwd changes. Null and omission are equivalent; [] clears only the explicit SDK contribution.
26033
+ */
26034
+ hookDirectories?: string[];
25685
26035
  /**
25686
26036
  * Skill scan directories and descendants excluded from discovery. Supports `~`-relative paths.
25687
26037
  */
@@ -25789,7 +26139,7 @@ export interface SessionUpdateOptionsParams {
25789
26139
  */
25790
26140
  organizationCustomInstructions?: string;
25791
26141
  /**
25792
- * Whether to enable loading of `.github/hooks/` filesystem hooks. Separate from the SDK callback hook mechanism.
26142
+ * Whether to enable repository-origin file hooks from `.github/hooks/` and trusted repository-configured roots. Does not control explicit hookDirectories or SDK callback hooks.
25793
26143
  */
25794
26144
  enableFileHooks?: boolean;
25795
26145
  /**
@@ -25801,7 +26151,7 @@ export interface SessionUpdateOptionsParams {
25801
26151
  */
25802
26152
  enableSessionStore?: boolean;
25803
26153
  /**
25804
- * Whether skill loading is enabled. Explicit false disables every source, including a bound SDK provider; changing the value invalidates the loaded skill snapshot. When omitted, creation falls back to enableConfigDiscovery unless an SDK skill provider is registered.
26154
+ * Whether skill loading is enabled. Explicit false disables every source, including explicit SDK roots and a bound SDK provider; changing the value invalidates the loaded skill snapshot. When omitted, creation falls back to enableConfigDiscovery unless explicit SDK skill roots or an SDK skill provider are supplied.
25805
26155
  */
25806
26156
  enableSkills?: boolean;
25807
26157
  contextTier?: OptionsUpdateContextTier;
@@ -26256,7 +26606,7 @@ export interface SkillsDiscoverRequest {
26256
26606
  */
26257
26607
  projectPaths?: string[];
26258
26608
  /**
26259
- * Optional list of additional skill directory paths to include
26609
+ * Explicit discovery-only skill roots, not filesystem grants. Available without ambient discovery, subject to skill/managed disables. Relative paths resolve against the request's effective working directory when supplied. Null and omission are equivalent; an empty array contributes no explicit roots.
26260
26610
  */
26261
26611
  skillDirectories?: string[];
26262
26612
  /**
@@ -26311,6 +26661,10 @@ export interface SkillSetEnabledRequest {
26311
26661
  */
26312
26662
  /** @experimental */
26313
26663
  export interface SkillsGetDiscoveryPathsRequest {
26664
+ /**
26665
+ * Explicit discovery-only skill roots to enumerate, including configured missing directories. Relative paths resolve against the request's effective working directory when supplied. These are not filesystem grants or preferred creation targets. Null and omission are equivalent.
26666
+ */
26667
+ skillDirectories?: string[];
26314
26668
  /**
26315
26669
  * Optional list of project directory paths. When omitted or empty, only personal and custom directories are returned.
26316
26670
  */
@@ -28364,220 +28718,655 @@ export interface UserSettingMetadata {
28364
28718
  isDefault: boolean;
28365
28719
  }
28366
28720
  /**
28367
- * Per-key metadata for every known user setting in settings.json, including settings left at their default. Excludes repository- and enterprise-managed overrides.
28721
+ * A single top-level setting subtree to validate and write.
28368
28722
  *
28369
28723
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28370
- * via the `definition` "UserSettingsGetResult".
28724
+ * via the `definition` "UserSettingsApplyTopKeyRequest".
28371
28725
  */
28372
28726
  /** @experimental */
28373
- export interface UserSettingsGetResult {
28727
+ export interface UserSettingsApplyTopKeyRequest {
28374
28728
  /**
28375
- * Every known user setting keyed by setting name, each with its effective value, default, and whether it is at the default.
28729
+ * Canonical path of the setting the caller is editing. Currently informational only.
28376
28730
  */
28377
- settings: {
28378
- [k: string]: UserSettingMetadata;
28379
- };
28731
+ canonicalPath: string[];
28732
+ /**
28733
+ * Top-level setting name to write.
28734
+ */
28735
+ topKey: string;
28736
+ /**
28737
+ * Value to write for the whole top-level key. Omitted when `delete` is true. Explicit null is preserved and validated as null.
28738
+ */
28739
+ value?: JsonValue | null;
28740
+ /**
28741
+ * True to remove the top-level key instead of writing it.
28742
+ */
28743
+ delete?: boolean;
28744
+ /**
28745
+ * Records that the user chose an update channel explicitly, so the one-time staff channel migration stops reapplying. Honored only for the `autoUpdatesChannel` key.
28746
+ */
28747
+ completeStaffUpdateChannelMigration?: boolean;
28380
28748
  }
28381
28749
  /**
28382
- * Partial user settings to write to settings.json. Each top-level key is written individually, replacing the existing value; a key whose value is null is removed.
28750
+ * Outcome of validating and writing one top-level setting subtree.
28383
28751
  *
28384
28752
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28385
- * via the `definition` "UserSettingsSetRequest".
28753
+ * via the `definition` "UserSettingsApplyTopKeyResult".
28386
28754
  */
28387
28755
  /** @experimental */
28388
- export interface UserSettingsSetRequest {
28756
+ export interface UserSettingsApplyTopKeyResult {
28389
28757
  /**
28390
- * Partial user settings to write, as a free-form object keyed by setting name
28758
+ * `ok` when the value was written, `validation-error` when it was rejected before any write, `write-error` when validation passed but the write failed.
28391
28759
  */
28392
- settings: JsonValue;
28760
+ status: string;
28761
+ /**
28762
+ * Problems found, present only when `status` is `validation-error`.
28763
+ */
28764
+ issues?: UserSettingsValidationIssue[];
28765
+ /**
28766
+ * Why the write failed, present only when `status` is `write-error`.
28767
+ */
28768
+ error?: string | null;
28393
28769
  }
28394
28770
  /**
28395
- * Current sharing status and shareable GitHub URL for a session.
28771
+ * One problem found while validating a setting value.
28396
28772
  *
28397
28773
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28398
- * via the `definition` "VisibilityGetResult".
28774
+ * via the `definition` "UserSettingsValidationIssue".
28399
28775
  */
28400
28776
  /** @experimental */
28401
- export interface VisibilityGetResult {
28777
+ export interface UserSettingsValidationIssue {
28402
28778
  /**
28403
- * Whether the session has been synced to Mission Control (i.e. has a GitHub task). When false, the session cannot be shared and `status`/`shareUrl` are absent.
28779
+ * Where in the settings tree the problem sits, as object keys and array indices. The first element is the top-level key; a whole-value problem is reported as that single key.
28404
28780
  */
28405
- synced: boolean;
28406
- status?: SessionVisibilityStatus;
28781
+ path: JsonValue[];
28407
28782
  /**
28408
- * Shareable GitHub URL for the session. Present when the session is synced and the URL can be resolved.
28783
+ * Human-readable description of the problem.
28409
28784
  */
28410
- shareUrl?: string;
28785
+ message: string;
28411
28786
  }
28412
28787
  /**
28413
- * Desired sharing status for the session.
28788
+ * Selects which settings file paths to resolve.
28414
28789
  *
28415
28790
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28416
- * via the `definition` "VisibilitySetRequest".
28791
+ * via the `definition` "UserSettingsGetPathsRequest".
28417
28792
  */
28418
28793
  /** @experimental */
28419
- export interface VisibilitySetRequest {
28420
- status: SessionVisibilityStatus;
28794
+ export interface UserSettingsGetPathsRequest {
28795
+ /**
28796
+ * Absolute path of a repository root. Supply it to also resolve that repository's two settings file paths; omit it to resolve only the user path.
28797
+ */
28798
+ repoRoot?: string;
28421
28799
  }
28422
28800
  /**
28423
- * Effective sharing status and shareable GitHub URL after updating session visibility.
28801
+ * On-disk locations of the settings files this runtime reads. A path is reported whether or not the file exists.
28424
28802
  *
28425
28803
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28426
- * via the `definition` "VisibilitySetResult".
28804
+ * via the `definition` "UserSettingsGetPathsResult".
28427
28805
  */
28428
28806
  /** @experimental */
28429
- export interface VisibilitySetResult {
28807
+ export interface UserSettingsGetPathsResult {
28430
28808
  /**
28431
- * Whether the session has been synced to Mission Control (i.e. has a GitHub task). When false, the visibility change could not be applied and `status`/`shareUrl` are absent.
28809
+ * The user settings file: `settings.json` under the resolved Copilot home. This is the file `user.settings.get`, `user.settings.load`, and `user.settings.set` read and write.
28432
28810
  */
28433
- synced: boolean;
28434
- status?: SessionVisibilityStatus;
28811
+ userSettings: string;
28435
28812
  /**
28436
- * Shareable GitHub URL for the session. Present when the session is synced and the URL can be resolved.
28813
+ * The repository's checked-in settings file, or null when no repository root was supplied.
28437
28814
  */
28438
- shareUrl?: string;
28815
+ repoSettings?: string | null;
28816
+ /**
28817
+ * The repository's local, untracked settings file, or null when no repository root was supplied.
28818
+ */
28819
+ repoLocalSettings?: string | null;
28439
28820
  }
28440
28821
  /**
28441
- * Parameters for cooperatively aborting a workflow body.
28822
+ * Per-key metadata for every known user setting in settings.json, including settings left at their default. Excludes repository- and enterprise-managed overrides.
28442
28823
  *
28443
28824
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28444
- * via the `definition` "WorkflowAbortRequest".
28825
+ * via the `definition` "UserSettingsGetResult".
28445
28826
  */
28446
28827
  /** @experimental */
28447
- export interface WorkflowAbortRequest {
28828
+ export interface UserSettingsGetResult {
28448
28829
  /**
28449
- * Target session identifier
28830
+ * Every known user setting keyed by setting name, each with its effective value, default, and whether it is at the default.
28450
28831
  */
28451
- sessionId: string;
28832
+ settings: {
28833
+ [k: string]: UserSettingMetadata;
28834
+ };
28835
+ }
28836
+ /**
28837
+ * Top-level user-setting keys grouped by who may govern them.
28838
+ *
28839
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28840
+ * via the `definition` "UserSettingsGovernanceKeysResult".
28841
+ */
28842
+ /** @experimental */
28843
+ export interface UserSettingsGovernanceKeysResult {
28452
28844
  /**
28453
- * Workflow run identifier.
28845
+ * Top-level keys a repository may override through `.github/copilot/settings.json` or `.github/copilot/settings.local.json`.
28454
28846
  */
28455
- runId: string;
28847
+ repo: string[];
28456
28848
  /**
28457
- * Opaque token identifying the execution attempt to abort.
28849
+ * Top-level keys a repository may override through a Claude-compatible repository config.
28458
28850
  */
28459
- executionToken: string;
28851
+ claudeRepo: string[];
28852
+ /**
28853
+ * Top-level keys an enterprise policy may fix through managed settings.
28854
+ */
28855
+ managed: string[];
28460
28856
  }
28461
28857
  /**
28462
- * Acknowledgement that a workflow request was accepted.
28858
+ * The filesystem and environment facts a user-settings file is resolved from. Passed explicitly rather than read from the runtime's own process, so a host whose configuration directory differs from its process environment resolves the file it means.
28463
28859
  *
28464
28860
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28465
- * via the `definition` "WorkflowAckResult".
28861
+ * via the `definition` "UserSettingsHostContext".
28466
28862
  */
28467
28863
  /** @experimental */
28468
- export interface WorkflowAckResult {
28864
+ export interface UserSettingsHostContext {
28865
+ /**
28866
+ * The Copilot configuration directory, when the host set one. Takes precedence over `COPILOT_HOME` and the home directory.
28867
+ */
28868
+ configDir?: string;
28869
+ /**
28870
+ * The user's home directory, used when neither a configuration directory nor `COPILOT_HOME` is set.
28871
+ */
28872
+ homeDirectory: string;
28873
+ /**
28874
+ * The host's environment variables. `COPILOT_HOME` is read from here, as are the variables a settings hook may expand.
28875
+ */
28876
+ environment: {};
28469
28877
  }
28470
28878
  /**
28471
- * Options for one workflow-scoped subagent call.
28879
+ * Contents of settings.json as stored, for a caller about to rewrite it.
28472
28880
  *
28473
28881
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28474
- * via the `definition` "WorkflowAgentOptions".
28882
+ * via the `definition` "UserSettingsLoadForEditResult".
28475
28883
  */
28476
28884
  /** @experimental */
28477
- export interface WorkflowAgentOptions {
28885
+ export interface UserSettingsLoadForEditResult {
28478
28886
  /**
28479
- * Optional label distinguishing otherwise identical memoized agent calls.
28887
+ * `ok` when the file parsed, `missing` when there is no file yet, `invalid` when the file exists but will not parse.
28480
28888
  */
28481
- label?: string;
28889
+ status: string;
28482
28890
  /**
28483
- * Optional JSON Schema for structured agent output.
28891
+ * Parsed contents, present only when `status` is `ok`.
28484
28892
  */
28485
- schema?: JsonValue;
28893
+ settings?: JsonValue;
28894
+ }
28895
+ /**
28896
+ * Selects the repository whose checked-in settings to read.
28897
+ *
28898
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28899
+ * via the `definition` "UserSettingsLoadRepoRequest".
28900
+ */
28901
+ /** @experimental */
28902
+ export interface UserSettingsLoadRepoRequest {
28486
28903
  /**
28487
- * Optional model identifier for the subagent.
28904
+ * Absolute path of the repository root whose settings to read. When this is the user's home directory, the Claude-compatible configuration is skipped, so a home-directory session does not inherit a personal config as if it were repository policy.
28488
28905
  */
28489
- model?: string;
28906
+ repoRoot: string;
28907
+ }
28908
+ /**
28909
+ * A repository's settings as stored, together with any diagnostic raised while reading them.
28910
+ *
28911
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28912
+ * via the `definition` "UserSettingsLoadRepoResult".
28913
+ */
28914
+ /** @experimental */
28915
+ export interface UserSettingsLoadRepoResult {
28490
28916
  /**
28491
- * Optional reasoning effort override for the subagent.
28917
+ * The repository's settings document, keyed by setting name, with each value carried verbatim. Null when the repository declares no settings.
28492
28918
  */
28493
- reasoningEffort?: string;
28494
- contextTier?: ContextTier;
28919
+ settings?: {
28920
+ [k: string]: JsonValue | undefined;
28921
+ } | null;
28495
28922
  /**
28496
- * Optional built-in or custom agent name whose definition configures the subagent.
28923
+ * Why part of the document was ignored, as a single human-readable string joining every diagnostic with `; `. Null when the document loaded cleanly. The settings that did load are still reported, so a consumer should surface this and continue rather than treat it as a failure.
28497
28924
  */
28498
- agent?: string;
28925
+ warning?: string | null;
28499
28926
  }
28500
28927
  /**
28501
- * Parameters for one workflow-scoped subagent call.
28928
+ * The user's stored settings, together with any diagnostic raised while reading them.
28502
28929
  *
28503
28930
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28504
- * via the `definition` "WorkflowAgentRequest".
28931
+ * via the `definition` "UserSettingsLoadWithWarningResult".
28505
28932
  */
28506
28933
  /** @experimental */
28507
- export interface WorkflowAgentRequest {
28934
+ export interface UserSettingsLoadWithWarningResult {
28508
28935
  /**
28509
- * Workflow run identifier that owns the subagent.
28936
+ * The stored user settings document, keyed by setting name, with each value carried verbatim. Empty when the file could not be read at all.
28510
28937
  */
28511
- workflowRunId: string;
28938
+ settings: {
28939
+ [k: string]: JsonValue | undefined;
28940
+ };
28512
28941
  /**
28513
- * Opaque token identifying the current workflow execution attempt.
28942
+ * Why part of the document was ignored, phrased for display to the user. Null when the document loaded cleanly. The settings that did load are still reported, so a consumer may surface this and continue rather than treat it as a failure.
28514
28943
  */
28515
- executionToken: string;
28944
+ warning?: string | null;
28945
+ }
28946
+ /**
28947
+ * The user layer folded over the managed layer.
28948
+ *
28949
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28950
+ * via the `definition` "UserSettingsMergeManagedAndUserResult".
28951
+ */
28952
+ /** @experimental */
28953
+ export interface UserSettingsMergeManagedAndUserResult {
28516
28954
  /**
28517
- * Prompt to send to the subagent.
28955
+ * The merged settings. An empty object when neither layer was supplied, so an unmanaged host with no user settings governs nothing.
28518
28956
  */
28519
- prompt: string;
28520
- opts: WorkflowAgentOptions;
28957
+ settingsJson: JsonValue;
28521
28958
  }
28522
28959
  /**
28523
- * Result of one workflow-scoped subagent call.
28960
+ * The repository layer folded into the user layer.
28524
28961
  *
28525
28962
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28526
- * via the `definition` "WorkflowAgentResult".
28963
+ * via the `definition` "UserSettingsMergeRepoValueResult".
28527
28964
  */
28528
28965
  /** @experimental */
28529
- export interface WorkflowAgentResult {
28966
+ export interface UserSettingsMergeRepoValueResult {
28530
28967
  /**
28531
- * Agent result, omitted when the agent produced no result.
28968
+ * The merged settings, with the per-entry managed control maps re-stamped from the runtime's ambient managed policy.
28532
28969
  */
28533
- result?: JsonValue;
28970
+ settingsJson: JsonValue;
28534
28971
  }
28535
28972
  /**
28536
- * Prompt-safe durable identity and live status for a direct workflow agent.
28973
+ * Settings object whose key names should be canonicalized.
28537
28974
  *
28538
28975
  * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28539
- * via the `definition` "WorkflowAgentSummary".
28976
+ * via the `definition` "UserSettingsNormalizeRequest".
28540
28977
  */
28541
28978
  /** @experimental */
28542
- export interface WorkflowAgentSummary {
28979
+ export interface UserSettingsNormalizeRequest {
28543
28980
  /**
28544
- * Stable direct-agent identifier.
28981
+ * Free-form settings object, possibly using legacy or snake_case key names.
28545
28982
  */
28546
- agentId: string;
28983
+ settings: JsonValue;
28984
+ }
28985
+ /**
28986
+ * Settings object with canonical key names.
28987
+ *
28988
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
28989
+ * via the `definition` "UserSettingsNormalizeResult".
28990
+ */
28991
+ /** @experimental */
28992
+ export interface UserSettingsNormalizeResult {
28547
28993
  /**
28548
- * Tool-call identifier that launched the agent.
28994
+ * The same settings with every legacy or snake_case key renamed to its canonical spelling.
28549
28995
  */
28550
- toolCallId: string;
28996
+ settings: JsonValue;
28997
+ }
28998
+ /**
28999
+ * The on-disk location of the user's settings document.
29000
+ *
29001
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29002
+ * via the `definition` "UserSettingsPathResult".
29003
+ */
29004
+ /** @experimental */
29005
+ export interface UserSettingsPathResult {
28551
29006
  /**
28552
- * Owning workflow run identifier.
29007
+ * Absolute path to the settings file this runtime reads and writes. Normally `settings.json` under the Copilot configuration directory; an extensionless legacy `settings` file is reported instead when it exists and `settings.json` does not.
28553
29008
  */
28554
- runId: string;
29009
+ path: string;
29010
+ }
29011
+ /**
29012
+ * One setting that will not take effect, and why.
29013
+ *
29014
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29015
+ * via the `definition` "UserSettingsProblem".
29016
+ */
29017
+ /** @experimental */
29018
+ export interface UserSettingsProblem {
28555
29019
  /**
28556
- * Phase identifier active when the agent was launched, or null.
29020
+ * Stable identifier for this problem within the reported set, so a caller can track a selection across refreshes.
28557
29021
  */
28558
- phaseId: string | null;
29022
+ id: string;
28559
29023
  /**
28560
- * Friendly, non-unique name intended for display
29024
+ * What is wrong in machine-readable form, for a caller that wants to branch rather than display.
28561
29025
  */
28562
- label: string;
29026
+ kind: string;
28563
29027
  /**
28564
- * Friendly, non-unique name intended for display
29028
+ * Coarse grouping for the problem, for a caller that presents problems in sections.
28565
29029
  */
28566
- displayName?: string;
29030
+ category: string;
29031
+ source: UserSettingsProblemLocation;
28567
29032
  /**
28568
- * Registered agent type.
29033
+ * The offending key as written in the file, when the problem is attributable to a single key. Absent when the whole file is at fault.
28569
29034
  */
28570
- agentType: string;
29035
+ rawKey?: string;
28571
29036
  /**
28572
- * Current durable or live agent status.
29037
+ * Why the setting will not take effect. Never contains the setting's value, which may be a token or another secret.
28573
29038
  */
28574
- status: string;
29039
+ explanation: string;
29040
+ }
29041
+ /**
29042
+ * The settings layer a problem was found in.
29043
+ *
29044
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29045
+ * via the `definition` "UserSettingsProblemLocation".
29046
+ */
29047
+ /** @experimental */
29048
+ export interface UserSettingsProblemLocation {
28575
29049
  /**
28576
- * Model requested when the agent was launched.
29050
+ * Which layer this is: `user`, `repo`, or `local`.
28577
29051
  */
28578
- requestedModel?: string;
29052
+ kind: string;
28579
29053
  /**
28580
- * Concrete model resolved for the agent.
29054
+ * The caller-supplied display label for the layer.
29055
+ */
29056
+ label: string;
29057
+ /**
29058
+ * Absolute path of the file backing this layer.
29059
+ */
29060
+ filePath: string;
29061
+ }
29062
+ /**
29063
+ * One already-loaded settings layer to diagnose.
29064
+ *
29065
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29066
+ * via the `definition` "UserSettingsProblemSource".
29067
+ */
29068
+ /** @experimental */
29069
+ export interface UserSettingsProblemSource {
29070
+ /**
29071
+ * Which layer this is: `user`, `repo`, or `local`.
29072
+ */
29073
+ kind: string;
29074
+ /**
29075
+ * Caller-chosen display label for the layer, echoed back on each problem so a caller can group by layer without re-deriving its own naming.
29076
+ */
29077
+ label: string;
29078
+ /**
29079
+ * Absolute path of the file backing this layer.
29080
+ */
29081
+ filePath: string;
29082
+ /**
29083
+ * The layer's settings exactly as loaded, unnormalized. Empty when the file is missing or failed to parse.
29084
+ */
29085
+ config?: {
29086
+ [k: string]: unknown | undefined;
29087
+ };
29088
+ /**
29089
+ * True when the file itself failed to parse, so its keys could not be read at all.
29090
+ */
29091
+ invalid?: boolean;
29092
+ }
29093
+ /**
29094
+ * The settings layers to diagnose.
29095
+ *
29096
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29097
+ * via the `definition` "UserSettingsProblemsRequest".
29098
+ */
29099
+ /** @experimental */
29100
+ export interface UserSettingsProblemsRequest {
29101
+ /**
29102
+ * Layers to diagnose, in the precedence order the caller applies them.
29103
+ */
29104
+ sources?: UserSettingsProblemSource[];
29105
+ }
29106
+ /**
29107
+ * The settings that will not take effect across the given layers.
29108
+ *
29109
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29110
+ * via the `definition` "UserSettingsProblemsResult".
29111
+ */
29112
+ /** @experimental */
29113
+ export interface UserSettingsProblemsResult {
29114
+ /**
29115
+ * Each setting that will not take effect, and why. Empty when every layer is healthy.
29116
+ */
29117
+ problems?: UserSettingsProblem[];
29118
+ }
29119
+ /**
29120
+ * Partial user settings to write to settings.json. Each top-level key is written individually, replacing the existing value; a key whose value is null is removed.
29121
+ *
29122
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29123
+ * via the `definition` "UserSettingsSetRequest".
29124
+ */
29125
+ /** @experimental */
29126
+ export interface UserSettingsSetRequest {
29127
+ /**
29128
+ * Partial user settings to write, as a free-form object keyed by setting name
29129
+ */
29130
+ settings: JsonValue;
29131
+ }
29132
+ /**
29133
+ * A single top-level setting subtree to validate.
29134
+ *
29135
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29136
+ * via the `definition` "UserSettingsValidateRequest".
29137
+ */
29138
+ /** @experimental */
29139
+ export interface UserSettingsValidateRequest {
29140
+ /**
29141
+ * Top-level setting name to validate.
29142
+ */
29143
+ topKey: string;
29144
+ /**
29145
+ * Value to validate. Omitted when `delete` is true.
29146
+ */
29147
+ value?: JsonValue;
29148
+ /**
29149
+ * True to validate a removal of this key. The current settings file is not read.
29150
+ */
29151
+ delete?: boolean;
29152
+ }
29153
+ /**
29154
+ * Outcome of validating one top-level setting subtree.
29155
+ *
29156
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29157
+ * via the `definition` "UserSettingsValidateResult".
29158
+ */
29159
+ /** @experimental */
29160
+ export interface UserSettingsValidateResult {
29161
+ /**
29162
+ * True when the subtree is valid.
29163
+ */
29164
+ ok: boolean;
29165
+ /**
29166
+ * Problems found, empty when `ok` is true.
29167
+ */
29168
+ issues?: UserSettingsValidationIssue[];
29169
+ }
29170
+ /**
29171
+ * The whole content to store in the user settings file.
29172
+ *
29173
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29174
+ * via the `definition` "UserSettingsWriteAllRequest".
29175
+ */
29176
+ /** @experimental */
29177
+ export interface UserSettingsWriteAllRequest {
29178
+ /**
29179
+ * The settings object to store. It replaces the file's entire content, so a key absent here is removed.
29180
+ */
29181
+ settings: JsonValue;
29182
+ }
29183
+ /**
29184
+ * Current sharing status and shareable GitHub URL for a session.
29185
+ *
29186
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29187
+ * via the `definition` "VisibilityGetResult".
29188
+ */
29189
+ /** @experimental */
29190
+ export interface VisibilityGetResult {
29191
+ /**
29192
+ * Whether the session has been synced to Mission Control (i.e. has a GitHub task). When false, the session cannot be shared and `status`/`shareUrl` are absent.
29193
+ */
29194
+ synced: boolean;
29195
+ status?: SessionVisibilityStatus;
29196
+ /**
29197
+ * Shareable GitHub URL for the session. Present when the session is synced and the URL can be resolved.
29198
+ */
29199
+ shareUrl?: string;
29200
+ }
29201
+ /**
29202
+ * Desired sharing status for the session.
29203
+ *
29204
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29205
+ * via the `definition` "VisibilitySetRequest".
29206
+ */
29207
+ /** @experimental */
29208
+ export interface VisibilitySetRequest {
29209
+ status: SessionVisibilityStatus;
29210
+ }
29211
+ /**
29212
+ * Effective sharing status and shareable GitHub URL after updating session visibility.
29213
+ *
29214
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29215
+ * via the `definition` "VisibilitySetResult".
29216
+ */
29217
+ /** @experimental */
29218
+ export interface VisibilitySetResult {
29219
+ /**
29220
+ * Whether the session has been synced to Mission Control (i.e. has a GitHub task). When false, the visibility change could not be applied and `status`/`shareUrl` are absent.
29221
+ */
29222
+ synced: boolean;
29223
+ status?: SessionVisibilityStatus;
29224
+ /**
29225
+ * Shareable GitHub URL for the session. Present when the session is synced and the URL can be resolved.
29226
+ */
29227
+ shareUrl?: string;
29228
+ }
29229
+ /**
29230
+ * Parameters for cooperatively aborting a workflow body.
29231
+ *
29232
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29233
+ * via the `definition` "WorkflowAbortRequest".
29234
+ */
29235
+ /** @experimental */
29236
+ export interface WorkflowAbortRequest {
29237
+ /**
29238
+ * Target session identifier
29239
+ */
29240
+ sessionId: string;
29241
+ /**
29242
+ * Workflow run identifier.
29243
+ */
29244
+ runId: string;
29245
+ /**
29246
+ * Opaque token identifying the execution attempt to abort.
29247
+ */
29248
+ executionToken: string;
29249
+ }
29250
+ /**
29251
+ * Acknowledgement that a workflow request was accepted.
29252
+ *
29253
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29254
+ * via the `definition` "WorkflowAckResult".
29255
+ */
29256
+ /** @experimental */
29257
+ export interface WorkflowAckResult {
29258
+ }
29259
+ /**
29260
+ * Options for one workflow-scoped subagent call.
29261
+ *
29262
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29263
+ * via the `definition` "WorkflowAgentOptions".
29264
+ */
29265
+ /** @experimental */
29266
+ export interface WorkflowAgentOptions {
29267
+ /**
29268
+ * Optional label distinguishing otherwise identical memoized agent calls.
29269
+ */
29270
+ label?: string;
29271
+ /**
29272
+ * Optional JSON Schema for structured agent output.
29273
+ */
29274
+ schema?: JsonValue;
29275
+ /**
29276
+ * Optional model identifier for the subagent.
29277
+ */
29278
+ model?: string;
29279
+ /**
29280
+ * Optional reasoning effort override for the subagent.
29281
+ */
29282
+ reasoningEffort?: string;
29283
+ contextTier?: ContextTier;
29284
+ /**
29285
+ * Optional built-in or custom agent name whose definition configures the subagent.
29286
+ */
29287
+ agent?: string;
29288
+ }
29289
+ /**
29290
+ * Parameters for one workflow-scoped subagent call.
29291
+ *
29292
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29293
+ * via the `definition` "WorkflowAgentRequest".
29294
+ */
29295
+ /** @experimental */
29296
+ export interface WorkflowAgentRequest {
29297
+ /**
29298
+ * Workflow run identifier that owns the subagent.
29299
+ */
29300
+ workflowRunId: string;
29301
+ /**
29302
+ * Opaque token identifying the current workflow execution attempt.
29303
+ */
29304
+ executionToken: string;
29305
+ /**
29306
+ * Prompt to send to the subagent.
29307
+ */
29308
+ prompt: string;
29309
+ opts: WorkflowAgentOptions;
29310
+ }
29311
+ /**
29312
+ * Result of one workflow-scoped subagent call.
29313
+ *
29314
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29315
+ * via the `definition` "WorkflowAgentResult".
29316
+ */
29317
+ /** @experimental */
29318
+ export interface WorkflowAgentResult {
29319
+ /**
29320
+ * Agent result, omitted when the agent produced no result.
29321
+ */
29322
+ result?: JsonValue;
29323
+ }
29324
+ /**
29325
+ * Prompt-safe durable identity and live status for a direct workflow agent.
29326
+ *
29327
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
29328
+ * via the `definition` "WorkflowAgentSummary".
29329
+ */
29330
+ /** @experimental */
29331
+ export interface WorkflowAgentSummary {
29332
+ /**
29333
+ * Stable direct-agent identifier.
29334
+ */
29335
+ agentId: string;
29336
+ /**
29337
+ * Tool-call identifier that launched the agent.
29338
+ */
29339
+ toolCallId: string;
29340
+ /**
29341
+ * Owning workflow run identifier.
29342
+ */
29343
+ runId: string;
29344
+ /**
29345
+ * Phase identifier active when the agent was launched, or null.
29346
+ */
29347
+ phaseId: string | null;
29348
+ /**
29349
+ * Friendly, non-unique name intended for display
29350
+ */
29351
+ label: string;
29352
+ /**
29353
+ * Friendly, non-unique name intended for display
29354
+ */
29355
+ displayName?: string;
29356
+ /**
29357
+ * Registered agent type.
29358
+ */
29359
+ agentType: string;
29360
+ /**
29361
+ * Current durable or live agent status.
29362
+ */
29363
+ status: string;
29364
+ /**
29365
+ * Model requested when the agent was launched.
29366
+ */
29367
+ requestedModel?: string;
29368
+ /**
29369
+ * Concrete model resolved for the agent.
28581
29370
  */
28582
29371
  resolvedModel?: string;
28583
29372
  /**
@@ -29964,6 +30753,102 @@ export interface WorkspacesWriteAutopilotObjectiveResult {
29964
30753
  */
29965
30754
  operation: string;
29966
30755
  }
30756
+ /**
30757
+ * The effective sandbox settings, with every unset value resolved to its default.
30758
+ *
30759
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30760
+ * via the `definition` "SandboxSettingsApplyDefaultsResult".
30761
+ */
30762
+ /** @experimental */
30763
+ export interface SandboxSettingsApplyDefaultsResult {
30764
+ /**
30765
+ * One resolved sandbox setting's value, carried verbatim.
30766
+ */
30767
+ [k: string]: JsonValue | undefined;
30768
+ }
30769
+ /**
30770
+ * The stored user settings document, keyed by setting name.
30771
+ *
30772
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30773
+ * via the `definition` "UserSettingsLoadForConfigDirResult".
30774
+ */
30775
+ /** @experimental */
30776
+ export interface UserSettingsLoadForConfigDirResult {
30777
+ /**
30778
+ * One setting's stored value, carried verbatim.
30779
+ */
30780
+ [k: string]: JsonValue | undefined;
30781
+ }
30782
+ /**
30783
+ * The effective runtime settings, keyed by setting name. Keys this runtime does not recognize are preserved rather than dropped, so a caller reading a document written by a newer runtime keeps every value.
30784
+ *
30785
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30786
+ * via the `definition` "UserSettingsBuildRuntimeResult".
30787
+ */
30788
+ /** @experimental */
30789
+ export interface UserSettingsBuildRuntimeResult {
30790
+ /**
30791
+ * One resolved setting's effective value, carried verbatim.
30792
+ */
30793
+ [k: string]: JsonValue | undefined;
30794
+ }
30795
+ /**
30796
+ * The resolved gates, keyed by flag name.
30797
+ *
30798
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30799
+ * via the `definition` "FeatureFlagsResolveStartupGatesResult".
30800
+ */
30801
+ /** @experimental */
30802
+ export interface FeatureFlagsResolveStartupGatesResult {
30803
+ /**
30804
+ * Whether the gate is on for this installation.
30805
+ */
30806
+ [k: string]: boolean | undefined;
30807
+ }
30808
+ /**
30809
+ * The resolved feature flags, keyed by flag name.
30810
+ *
30811
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30812
+ * via the `definition` "FeatureFlagsResolveResult".
30813
+ */
30814
+ /** @experimental */
30815
+ export interface FeatureFlagsResolveResult {
30816
+ /**
30817
+ * Whether the flag is enabled for this population.
30818
+ */
30819
+ [k: string]: boolean | undefined;
30820
+ }
30821
+ /**
30822
+ * Ordered managed permission verdicts and the supplied policy's fail-closed posture.
30823
+ *
30824
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30825
+ * via the `definition` "ManagedSettingsPermissionsEvaluateResult".
30826
+ */
30827
+ /** @experimental */
30828
+ export interface ManagedSettingsPermissionsEvaluateResult {
30829
+ /**
30830
+ * One verdict per input operation, in the same order, including duplicates.
30831
+ */
30832
+ results: ManagedPermissionEvaluation[];
30833
+ /**
30834
+ * Managed permission policy could not be determined; every operation is denied.
30835
+ */
30836
+ failClosed: boolean;
30837
+ }
30838
+ /**
30839
+ * Managed policy context and ordered operations for pure, sessionless evaluation.
30840
+ *
30841
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30842
+ * via the `definition` "ManagedSettingsPermissionsEvaluateRequest".
30843
+ */
30844
+ /** @experimental */
30845
+ export interface ManagedSettingsPermissionsEvaluateRequest {
30846
+ context: ManagedPermissionsContext;
30847
+ /**
30848
+ * Operations to evaluate, preserving input order and duplicates. An empty batch is valid.
30849
+ */
30850
+ operations: ManagedPermissionOperation[];
30851
+ }
29967
30852
  /**
29968
30853
  * The resident session the application has materialized on its own connection.
29969
30854
  *
@@ -30089,37 +30974,6 @@ export interface HostGetConfigurationResult {
30089
30974
  /** @experimental */
30090
30975
  export interface HostReadyResult {
30091
30976
  }
30092
- /**
30093
- * Ordered managed permission verdicts and the supplied policy's fail-closed posture.
30094
- *
30095
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30096
- * via the `definition` "ManagedSettingsPermissionsEvaluateResult".
30097
- */
30098
- /** @experimental */
30099
- export interface ManagedSettingsPermissionsEvaluateResult {
30100
- /**
30101
- * One verdict per input operation, in the same order, including duplicates.
30102
- */
30103
- results: ManagedPermissionEvaluation[];
30104
- /**
30105
- * Managed permission policy could not be determined; every operation is denied.
30106
- */
30107
- failClosed: boolean;
30108
- }
30109
- /**
30110
- * Managed policy context and ordered operations for pure, sessionless evaluation.
30111
- *
30112
- * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
30113
- * via the `definition` "ManagedSettingsPermissionsEvaluateRequest".
30114
- */
30115
- /** @experimental */
30116
- export interface ManagedSettingsPermissionsEvaluateRequest {
30117
- context: ManagedPermissionsContext;
30118
- /**
30119
- * Operations to evaluate, preserving input order and duplicates. An empty batch is valid.
30120
- */
30121
- operations: ManagedPermissionOperation[];
30122
- }
30123
30977
  /** @experimental */
30124
30978
  export interface SessionWorkflowPauseAtCheckpointResult {
30125
30979
  action: WorkflowPauseCheckpointAction;
@@ -30634,6 +31488,142 @@ export interface InstallationsConfirmRequest {
30634
31488
  }
30635
31489
  /** Create typed server-scoped RPC methods (no session required). */
30636
31490
  export declare function createServerRpc(connection: MessageConnection): {
31491
+ /** @experimental */
31492
+ sandbox: {
31493
+ /** @experimental */
31494
+ proxyCa: {
31495
+ /**
31496
+ * Reports whether this runtime process can offer installing the sandbox credential-proxy certificate authority into OS trust.
31497
+ *
31498
+ * @returns True when this process can offer installing the sandbox credential-proxy certificate authority into OS trust.
31499
+ */
31500
+ checkInstallationSupport: () => Promise<SandboxProxyCaCheckInstallationSupportResult>;
31501
+ /**
31502
+ * Reports whether this sandbox configuration uses the credential proxy and can need certificate-authority setup.
31503
+ *
31504
+ * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
31505
+ *
31506
+ * @returns True when the sandbox configuration uses the credential proxy and can need certificate-authority setup.
31507
+ */
31508
+ checkRelevance: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaCheckRelevanceResult>;
31509
+ /**
31510
+ * Reports whether the persistent certificate authority of the sandbox credential proxy exists, whether OS trust includes it, and whether it must be rotated. Changes nothing.
31511
+ *
31512
+ * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
31513
+ *
31514
+ * @returns Status of the persistent certificate authority of the sandbox credential proxy.
31515
+ */
31516
+ getStatus: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaStatus>;
31517
+ /**
31518
+ * Creates the persistent certificate authority of the sandbox credential proxy if none is stored, without changing OS trust, and returns the path of its public certificate. Keeps an existing certificate authority, even one that must be rotated. Fails where OS trust is unsupported. Trust it with sandbox.proxyCa.trust: the CLI trusts only the hosts in the saved user settings, so it refuses a certificate authority that also covers hosts from sandboxConfig.
31519
+ *
31520
+ * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
31521
+ *
31522
+ * @returns Result of creating the persistent certificate authority of the sandbox credential proxy.
31523
+ */
31524
+ create: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaCreateResult>;
31525
+ /**
31526
+ * Replaces the persistent certificate authority of the sandbox credential proxy with a new one for the current credential hosts. If OS trust included the old one, removes it and trusts the new one, which can show an OS authentication prompt. Running sandboxed tools keep the old certificate authority until they restart.
31527
+ *
31528
+ * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
31529
+ *
31530
+ * @returns Status of the persistent certificate authority of the sandbox credential proxy.
31531
+ */
31532
+ rotate: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaStatus>;
31533
+ /**
31534
+ * Adds the persistent certificate authority of the sandbox credential proxy to OS trust, so sandboxed clients that read only OS trust accept the proxy. Call create first. Refuses a certificate authority that is not constrained to the current credential hosts. Can show an OS authentication prompt.
31535
+ *
31536
+ * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
31537
+ *
31538
+ * @returns Status of the persistent certificate authority of the sandbox credential proxy.
31539
+ */
31540
+ trust: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaStatus>;
31541
+ /**
31542
+ * Removes the persistent certificate authority of the sandbox credential proxy from OS trust. Keeps the stored certificate authority. Can show an OS authentication prompt. Sandboxed clients that read only OS trust then reject the proxy; clients that read the per-process certificate bundle continue to work.
31543
+ *
31544
+ * @returns Status of the persistent certificate authority of the sandbox credential proxy.
31545
+ */
31546
+ remove: () => Promise<SandboxProxyCaStatus>;
31547
+ };
31548
+ /**
31549
+ * Reports whether the host running this runtime can run the command sandbox, without starting a session or spawning a sandboxed command.
31550
+ *
31551
+ * @returns Whether the host running this runtime can run the command sandbox. The runtime checks `supported` once per process. A capability answer can change while the process runs, for example after the user installs a missing package.
31552
+ */
31553
+ getHostSupport: () => Promise<SandboxHostSupport>;
31554
+ };
31555
+ /** @experimental */
31556
+ user: {
31557
+ /** @experimental */
31558
+ settings: {
31559
+ /**
31560
+ * Lists every known user setting from settings.json, each with its effective value, its default, and whether it is at the default — so settings the user has never set still appear with their default value. Does not include repository- or enterprise-managed overrides that the runtime layers on top at session time.
31561
+ *
31562
+ * @returns Per-key metadata for every known user setting in settings.json, including settings left at their default. Excludes repository- and enterprise-managed overrides.
31563
+ */
31564
+ get: () => Promise<UserSettingsGetResult>;
31565
+ /**
31566
+ * Writes one or more user settings to settings.json, replacing each provided top-level key. A key whose value is null is removed.
31567
+ *
31568
+ * @param params Partial user settings to write to settings.json. Each top-level key is written individually, replacing the existing value; a key whose value is null is removed.
31569
+ */
31570
+ set: (params: UserSettingsSetRequest) => Promise<void>;
31571
+ };
31572
+ };
31573
+ /** @experimental */
31574
+ managedSettings: {
31575
+ /**
31576
+ * Discovers device-managed settings from production MDM and managed-file sources, validates them against the runtime-owned managed-settings schema, and returns the canonical JSON without requiring a session. `managedSettings.resolve` returns the same device settings together with the account's server policy.
31577
+ *
31578
+ * @returns Validated device-managed settings discovered before a session exists.
31579
+ */
31580
+ read: () => Promise<ManagedSettingsReadResult>;
31581
+ /**
31582
+ * Force-refreshes enterprise managed settings for every account: wipes the persistent server-policy cache (the whole `<cacheHome>/managed-settings` directory) and drops this runtime process's in-memory retained server policy. It does not itself fetch policy — the effect is that the next time a session resolves managed settings for an account, that resolution re-fetches the account's org policy from the network instead of serving a cached response. Note that `managedSettings.read` returns only device/MDM settings and never triggers the account server-policy fetch, so a host implementing "sync account policy" should call `managedSettings.resolve` or start a fresh session resolution rather than treat a subsequent `managedSettings.read` as the refreshed org policy. Mirrors the invalidation a sign-out performs, broadened from the one signing-out account to all of them; device/MDM layers describe the machine, not the account, and are left untouched. Rejects if the on-disk cache cannot be removed.
31583
+ */
31584
+ clearCache: () => Promise<void>;
31585
+ /**
31586
+ * Resolves the effective enterprise managed settings without a session, from the device channel and, when an account is available, the account's server policy through the same per-account cache sessions use. A cached server policy less than an hour old is used without a fetch; otherwise the policy is fetched, and when the fetch fails a cached policy up to 24 hours old is used instead, unless `forceRemoteSettingsRefresh` requires a live fetch. With no account requested or signed in, it reports device policy only; signing out removes the account's cached policy. It can fetch server policy over the network when the cache is stale, so call it off latency-critical paths such as startup rather than before listing models. The policy helper is not run. `layers` lists each channel's document before merging, and `values` and `meta` carry typed effective values and their lock state for the keys typed so far.
31587
+ *
31588
+ * @param params Optional opaque account selection or GitHub token whose managed settings are resolved.
31589
+ *
31590
+ * @returns Effective enterprise managed settings for an account, resolved without a session.
31591
+ */
31592
+ resolve: (params: ManagedSettingsResolveRequest) => Promise<ManagedSettingsResolveResult>;
31593
+ /** @experimental */
31594
+ permissions: {
31595
+ /**
31596
+ * Pure, sessionless evaluation of operations against a supplied permissionsContext. Performs no policy discovery, I/O, prompting, navigation, permission grants, or sandbox changes. Obtain the context from managedSettings.resolve or session.managedSettings.get, or reuse an in-memory context. Results preserve input order and duplicates. Consumers must block deny, obtain approval for ask, and use their normal permission flow for unmanaged. Unknown policy returns failClosed with every operation denied. This is not a substitute for user permissions or other security controls.
31597
+ *
31598
+ * @param params Managed policy context and ordered operations for pure, sessionless evaluation.
31599
+ *
31600
+ * @returns Ordered managed permission verdicts and the supplied policy's fail-closed posture.
31601
+ */
31602
+ evaluate: (params: ManagedSettingsPermissionsEvaluateRequest) => Promise<ManagedSettingsPermissionsEvaluateResult>;
31603
+ };
31604
+ /**
31605
+ * Returns the managed-settings authoring JSON schema with descriptive `x-composition` annotations aligned with the shared settings-engine vocabulary. These annotations are not a complete runtime composition contract: model, effortLevel, and contextTier remain coupled. Use `managedSettings.compose` for the runtime's effective result. Performs no I/O.
31606
+ *
31607
+ * @returns The authoring JSON schema for managed settings recognized by this runtime.
31608
+ */
31609
+ schema: () => Promise<ManagedSettingsSchemaResult>;
31610
+ /**
31611
+ * Validates a candidate managed-settings document the way the runtime validates delivered policy, without applying it. Reports errors that would reject the document, warnings for content the runtime ignores, and the canonical document it would apply. Document text nested more than 64 levels deep is rejected. Performs no I/O.
31612
+ *
31613
+ * @param params A candidate managed-settings document to validate without applying it.
31614
+ *
31615
+ * @returns Result of validating a managed-settings document.
31616
+ */
31617
+ validate: (params: ManagedSettingsValidateRequest) => Promise<ManagedSettingsValidateResult>;
31618
+ /**
31619
+ * Merges candidate managed-settings documents for the device, server, and policy-helper channels into the effective settings the runtime would enforce on this host, using the same precedence and composition rules as live resolution, without applying them. Like live resolution, a server's advisory sandbox force-enable is declined on a host that cannot run the sandbox. Does not fetch policy or read policy files, but may perform blocking OS or subprocess probes for sandbox support. Preview documents are limited to 1 MiB and 64 levels of nesting.
31620
+ *
31621
+ * @param params Candidate managed-settings documents to merge without applying them.
31622
+ *
31623
+ * @returns The effective managed settings the runtime would enforce for the given documents, in the same shape `managedSettings.resolve` returns.
31624
+ */
31625
+ compose: (params: ManagedSettingsComposeRequest) => Promise<ManagedSettingsComposeResult>;
31626
+ };
30637
31627
  /** @experimental */
30638
31628
  environments: {
30639
31629
  /**
@@ -30735,56 +31725,6 @@ export declare function createServerRpc(connection: MessageConnection): {
30735
31725
  getBuiltInCatalog: () => Promise<BuiltInModelCatalog>;
30736
31726
  };
30737
31727
  /** @experimental */
30738
- sandbox: {
30739
- /**
30740
- * Reports whether the host running this runtime can run the command sandbox, without starting a session or spawning a sandboxed command.
30741
- *
30742
- * @returns Whether the host running this runtime can run the command sandbox. The runtime checks `supported` once per process. A capability answer can change while the process runs, for example after the user installs a missing package.
30743
- */
30744
- getHostSupport: () => Promise<SandboxHostSupport>;
30745
- /** @experimental */
30746
- proxyCa: {
30747
- /**
30748
- * Reports whether the persistent certificate authority of the sandbox credential proxy exists, whether OS trust includes it, and whether it must be rotated. Changes nothing.
30749
- *
30750
- * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
30751
- *
30752
- * @returns Status of the persistent certificate authority of the sandbox credential proxy.
30753
- */
30754
- getStatus: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaStatus>;
30755
- /**
30756
- * Creates the persistent certificate authority of the sandbox credential proxy if none is stored, without changing OS trust, and returns the path of its public certificate. Keeps an existing certificate authority, even one that must be rotated. Fails where OS trust is unsupported. Trust it with sandbox.proxyCa.trust: the CLI trusts only the hosts in the saved user settings, so it refuses a certificate authority that also covers hosts from sandboxConfig.
30757
- *
30758
- * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
30759
- *
30760
- * @returns Result of creating the persistent certificate authority of the sandbox credential proxy.
30761
- */
30762
- create: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaCreateResult>;
30763
- /**
30764
- * Replaces the persistent certificate authority of the sandbox credential proxy with a new one for the current credential hosts. If OS trust included the old one, removes it and trusts the new one, which can show an OS authentication prompt. Running sandboxed tools keep the old certificate authority until they restart.
30765
- *
30766
- * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
30767
- *
30768
- * @returns Status of the persistent certificate authority of the sandbox credential proxy.
30769
- */
30770
- rotate: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaStatus>;
30771
- /**
30772
- * Adds the persistent certificate authority of the sandbox credential proxy to OS trust, so sandboxed clients that read only OS trust accept the proxy. Call create first. Refuses a certificate authority that is not constrained to the current credential hosts. Can show an OS authentication prompt.
30773
- *
30774
- * @param params Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.
30775
- *
30776
- * @returns Status of the persistent certificate authority of the sandbox credential proxy.
30777
- */
30778
- trust: (params: SandboxProxyCaRequest) => Promise<SandboxProxyCaStatus>;
30779
- /**
30780
- * Removes the persistent certificate authority of the sandbox credential proxy from OS trust. Keeps the stored certificate authority. Can show an OS authentication prompt. Sandboxed clients that read only OS trust then reject the proxy; clients that read the per-process certificate bundle continue to work.
30781
- *
30782
- * @returns Status of the persistent certificate authority of the sandbox credential proxy.
30783
- */
30784
- remove: () => Promise<SandboxProxyCaStatus>;
30785
- };
30786
- };
30787
- /** @experimental */
30788
31728
  tools: {
30789
31729
  /**
30790
31730
  * Lists built-in tools available for a model.
@@ -30996,6 +31936,25 @@ export declare function createServerRpc(connection: MessageConnection): {
30996
31936
  disable: (params: DiscoveredExtensionsDisableRequest) => Promise<void>;
30997
31937
  };
30998
31938
  /** @experimental */
31939
+ instructions: {
31940
+ /**
31941
+ * Discovers instruction sources across user, repository, and plugin sources.
31942
+ *
31943
+ * @param params Optional project paths to include in instruction discovery.
31944
+ *
31945
+ * @returns Instruction sources discovered across user, repository, and plugin sources.
31946
+ */
31947
+ discover: (params: InstructionsDiscoverRequest) => Promise<ServerInstructionSourceList>;
31948
+ /**
31949
+ * Returns the canonical files and directories where a client may create custom instructions that the runtime will recognize, including ones that do not exist yet. Repository targets become active once created.
31950
+ *
31951
+ * @param params Optional project paths to include when enumerating instruction discovery targets.
31952
+ *
31953
+ * @returns Canonical files and directories where custom instructions can be created so the runtime will recognize them.
31954
+ */
31955
+ getDiscoveryPaths: (params: InstructionsGetDiscoveryPathsRequest) => Promise<InstructionDiscoveryPathList>;
31956
+ };
31957
+ /** @experimental */
30999
31958
  skills: {
31000
31959
  /**
31001
31960
  * Plans installation of a verified Agent Finder Skill candidate without writing files. The returned review is safe to present to a user and installing always leaves the Skill disabled until separately enabled.
@@ -31248,25 +32207,6 @@ export declare function createServerRpc(connection: MessageConnection): {
31248
32207
  getDiscoveryPaths: (params: AgentsGetDiscoveryPathsRequest) => Promise<AgentDiscoveryPathList>;
31249
32208
  };
31250
32209
  /** @experimental */
31251
- instructions: {
31252
- /**
31253
- * Discovers instruction sources across user, repository, and plugin sources.
31254
- *
31255
- * @param params Optional project paths to include in instruction discovery.
31256
- *
31257
- * @returns Instruction sources discovered across user, repository, and plugin sources.
31258
- */
31259
- discover: (params: InstructionsDiscoverRequest) => Promise<ServerInstructionSourceList>;
31260
- /**
31261
- * Returns the canonical files and directories where a client may create custom instructions that the runtime will recognize, including ones that do not exist yet. Repository targets become active once created.
31262
- *
31263
- * @param params Optional project paths to include when enumerating instruction discovery targets.
31264
- *
31265
- * @returns Canonical files and directories where custom instructions can be created so the runtime will recognize them.
31266
- */
31267
- getDiscoveryPaths: (params: InstructionsGetDiscoveryPathsRequest) => Promise<InstructionDiscoveryPathList>;
31268
- };
31269
- /** @experimental */
31270
32210
  commands: {
31271
32211
  /**
31272
32212
  * Lists the well-known built-in slash commands that work as the first message in a new session (e.g. /plan, /env), without requiring an active session. Commands that depend on session state, authentication, or a synced session are omitted.
@@ -31276,78 +32216,6 @@ export declare function createServerRpc(connection: MessageConnection): {
31276
32216
  list: () => Promise<CommandList>;
31277
32217
  };
31278
32218
  /** @experimental */
31279
- user: {
31280
- /** @experimental */
31281
- settings: {
31282
- /**
31283
- * Lists every known user setting from settings.json, each with its effective value, its default, and whether it is at the default — so settings the user has never set still appear with their default value. Does not include repository- or enterprise-managed overrides that the runtime layers on top at session time.
31284
- *
31285
- * @returns Per-key metadata for every known user setting in settings.json, including settings left at their default. Excludes repository- and enterprise-managed overrides.
31286
- */
31287
- get: () => Promise<UserSettingsGetResult>;
31288
- /**
31289
- * Writes one or more user settings to settings.json, replacing each provided top-level key. A key whose value is null is removed.
31290
- *
31291
- * @param params Partial user settings to write to settings.json. Each top-level key is written individually, replacing the existing value; a key whose value is null is removed.
31292
- */
31293
- set: (params: UserSettingsSetRequest) => Promise<void>;
31294
- };
31295
- };
31296
- /** @experimental */
31297
- managedSettings: {
31298
- /**
31299
- * Discovers device-managed settings from production MDM and managed-file sources, validates them against the runtime-owned managed-settings schema, and returns the canonical JSON without requiring a session. `managedSettings.resolve` returns the same device settings together with the account's server policy.
31300
- *
31301
- * @returns Validated device-managed settings discovered before a session exists.
31302
- */
31303
- read: () => Promise<ManagedSettingsReadResult>;
31304
- /**
31305
- * Force-refreshes enterprise managed settings for every account: wipes the persistent server-policy cache (the whole `<cacheHome>/managed-settings` directory) and drops this runtime process's in-memory retained server policy. It does not itself fetch policy — the effect is that the next time a session resolves managed settings for an account, that resolution re-fetches the account's org policy from the network instead of serving a cached response. Note that `managedSettings.read` returns only device/MDM settings and never triggers the account server-policy fetch, so a host implementing "sync account policy" should call `managedSettings.resolve` or start a fresh session resolution rather than treat a subsequent `managedSettings.read` as the refreshed org policy. Mirrors the invalidation a sign-out performs, broadened from the one signing-out account to all of them; device/MDM layers describe the machine, not the account, and are left untouched. Rejects if the on-disk cache cannot be removed.
31306
- */
31307
- clearCache: () => Promise<void>;
31308
- /**
31309
- * Resolves the effective enterprise managed settings without a session, from the device channel and, when an account is available, the account's server policy through the same per-account cache sessions use. A cached server policy less than an hour old is used without a fetch; otherwise the policy is fetched, and when the fetch fails a cached policy up to 24 hours old is used instead, unless `forceRemoteSettingsRefresh` requires a live fetch. With no account requested or signed in, it reports device policy only; signing out removes the account's cached policy. It can fetch server policy over the network when the cache is stale, so call it off latency-critical paths such as startup rather than before listing models. The policy helper is not run. `layers` lists each channel's document before merging, and `values` and `meta` carry typed effective values and their lock state for the keys typed so far.
31310
- *
31311
- * @param params Optional opaque account selection or GitHub token whose managed settings are resolved.
31312
- *
31313
- * @returns Effective enterprise managed settings for an account, resolved without a session.
31314
- */
31315
- resolve: (params: ManagedSettingsResolveRequest) => Promise<ManagedSettingsResolveResult>;
31316
- /** @experimental */
31317
- permissions: {
31318
- /**
31319
- * Pure, sessionless evaluation of operations against a supplied permissionsContext. Performs no policy discovery, I/O, prompting, navigation, permission grants, or sandbox changes. Obtain the context from managedSettings.resolve or session.managedSettings.get, or reuse an in-memory context. Results preserve input order and duplicates. Consumers must block deny, obtain approval for ask, and use their normal permission flow for unmanaged. Unknown policy returns failClosed with every operation denied. This is not a substitute for user permissions or other security controls.
31320
- *
31321
- * @param params Managed policy context and ordered operations for pure, sessionless evaluation.
31322
- *
31323
- * @returns Ordered managed permission verdicts and the supplied policy's fail-closed posture.
31324
- */
31325
- evaluate: (params: ManagedSettingsPermissionsEvaluateRequest) => Promise<ManagedSettingsPermissionsEvaluateResult>;
31326
- };
31327
- /**
31328
- * Returns the managed-settings authoring JSON schema with descriptive `x-composition` annotations aligned with the shared settings-engine vocabulary. These annotations are not a complete runtime composition contract: model, effortLevel, and contextTier remain coupled. Use `managedSettings.compose` for the runtime's effective result. Performs no I/O.
31329
- *
31330
- * @returns The authoring JSON schema for managed settings recognized by this runtime.
31331
- */
31332
- schema: () => Promise<ManagedSettingsSchemaResult>;
31333
- /**
31334
- * Validates a candidate managed-settings document the way the runtime validates delivered policy, without applying it. Reports errors that would reject the document, warnings for content the runtime ignores, and the canonical document it would apply. Document text nested more than 64 levels deep is rejected. Performs no I/O.
31335
- *
31336
- * @param params A candidate managed-settings document to validate without applying it.
31337
- *
31338
- * @returns Result of validating a managed-settings document.
31339
- */
31340
- validate: (params: ManagedSettingsValidateRequest) => Promise<ManagedSettingsValidateResult>;
31341
- /**
31342
- * Merges candidate managed-settings documents for the device, server, and policy-helper channels into the effective settings the runtime would enforce on this host, using the same precedence and composition rules as live resolution, without applying them. Like live resolution, a server's advisory sandbox force-enable is declined on a host that cannot run the sandbox. Does not fetch policy or read policy files, but may perform blocking OS or subprocess probes for sandbox support. Preview documents are limited to 1 MiB and 64 levels of nesting.
31343
- *
31344
- * @param params Candidate managed-settings documents to merge without applying them.
31345
- *
31346
- * @returns The effective managed settings the runtime would enforce for the given documents, in the same shape `managedSettings.resolve` returns.
31347
- */
31348
- compose: (params: ManagedSettingsComposeRequest) => Promise<ManagedSettingsComposeResult>;
31349
- };
31350
- /** @experimental */
31351
32219
  runtime: {
31352
32220
  /**
31353
32221
  * Gracefully shuts down an SDK-owned runtime. The response is sent only after cleanup completes; callers may then terminate the owned runtime process.
@@ -32033,6 +32901,14 @@ export declare function createSessionRpc(connection: MessageConnection, sessionI
32033
32901
  * @returns Update the session's reasoning effort without changing the selected model. Use `switchTo` instead when you also need to change the model. The runtime stores the effort on the session and applies it to subsequent turns.
32034
32902
  */
32035
32903
  setReasoningEffort: (params: ModelSetReasoningEffortRequest) => Promise<ModelSetReasoningEffortResult>;
32904
+ /**
32905
+ * Computes whether the session's current model shows reasoning summaries and how a host should present them: the default Ctrl+T visibility, reasoning headers, the hidden-summaries hint, and whether a persisted `showReasoning` setting is redundant. The runtime folds in the session's model catalog, selection and reasoning-summaries experiment assignment; the host supplies only its own persisted setting and current visibility. This method reads the session's resolved model catalog rather than resolving it, so call `session.model.list` first on a session that has not listed models or run a turn; until then the result is `ready: false`. A session that resolves models without a Copilot catalog, that is a BYOK registry or an alternate provider, never caches one and stays `ready: false`.
32906
+ *
32907
+ * @param params Host presentation state the reasoning-summaries policy depends on.
32908
+ *
32909
+ * @returns Reasoning-summaries presentation policy for the session's current model.
32910
+ */
32911
+ getReasoningSummaries: (params: ModelGetReasoningSummariesRequest) => Promise<ModelGetReasoningSummariesResult>;
32036
32912
  /**
32037
32913
  * Lists models available to this session using its own auth and integration context. Connected hosts (CLI TUI, GitHub App) should call this through the session client so remote sessions return the remote CLI's available models rather than the caller's.
32038
32914
  *