v1.0.13-preview.4
Pre-releaseFeature: rewind support across all SDKs
Sessions can now opt into file-change tracking and rewind conversation history and tracked file changes to any prior checkpoint. Enable file tracking when creating a session, then use rewind to roll back. (#2321)
const session = await client.createSession({ enableFileChangeTracking: true });
// ...later
const points = await session.rpc.rewind.list();
await session.rpc.rewind.rewind({ rewindTarget: points[0].id });var session = await client.CreateSessionAsync(new SessionOptions { EnableFileChangeTracking = true });
var points = await session.Rpc.Rewind.ListAsync();
await session.Rpc.Rewind.RewindAsync(new RewindRequest { RewindTarget = points[0].Id });session = await client.create_session(enable_file_change_tracking=True)
points = await session.rpc.rewind.list()
await session.rpc.rewind.rewind(rewind_target=points[0].id)Feature: session-scoped GitHub token providers
Sessions now support expiry-aware GitHub token callbacks in addition to static tokens. The SDK handles refresh requests from the runtime, so extensions always receive fresh credentials. (#2412)
const session = await client.createSession({
gitHubTokenProvider: async ({ host, reason }) => ({ token: await fetchToken(host) })
});var session = await client.CreateSessionAsync(new SessionOptions {
GitHubTokenProvider = async (req, ct) =>
new GitHubTokenResult { Token = await FetchTokenAsync(req.Host) }
});session, _ := client.CreateSession(ctx, copilot.SessionOptions{
GitHubTokenProvider: func(ctx context.Context, req copilot.TokenProviderRequest) (copilot.TokenProviderResult, error) {
return copilot.TokenProviderResult{Token: fetchToken(req.Host)}, nil
},
})Feature: Java in-process native runtime on all platforms
The Java SDK now ships a bundled in-process Copilot CLI runtime for Linux x64/arm64, Windows x64/arm64, and Apple Silicon macOS. No separate CLI installation is needed on these platforms. (#2301, #2393, #2402, #2421, #2427)
The correct native classifier is resolved and loaded automatically at runtime — no configuration needed.
Feature: managed SDK servers now use the Rust runtime wrapper
All six SDKs now spawn the dedicated copilot-runtime executable when managing their own subprocess connection, pairing the wrapper with the correct runtime.node addon for a leaner and more reliable process lifecycle. (#2395)
Feature: built-in plugin directory support
Host applications can now register trusted built-in plugin directories loaded before any session begins. Unlike ordinary --plugin-dir loading, these are registered via plugins.builtin.set and trusted by the host. (#2330)
const client = new CopilotClient({ builtinPluginDirectories: ['/path/to/plugins'] });let client = CopilotClient::new(CopilotClientOptions {
builtin_plugin_directories: vec![PathBuf::from("/path/to/plugins")],
..Default::default()
});Feature: permission decisions can carry decision context
Permission handlers can now attach optional decisionContext when replying to a permission request, letting the runtime attribute decisions to a person, host policy, or automated recommendation. Additive for all SDKs except Rust. (#2294)
session.onPermissionRequest(async (req) =>
createAttributedPermissionResult('approve_once', { source: 'policy' })
);async def handler(req):
return copilot.create_attributed_permission_result('approve_once', {'source': 'policy'})Rust breaking change:
PermissionResult::Decisionchanged from a tuple variant to a struct variant ({ decision, context }). Code using result helpers (approve_once()etc.) is unaffected; direct construction or pattern-matching onDecisionrequires migration.
Feature: extensions can request sensitive environment variables
joinSession() now accepts an env option listing the sensitive environment variable names the extension needs. The CLI prompts the user; on approval the values are written into process.env before joinSession resolves. (#2348)
const session = await host.joinSession(extensionId, { env: ['MY_API_KEY'] });Feature: ClientMode::Empty now excludes built-in skills by default
When a session is created in empty mode, includedBuiltinSkills defaults to [] across all SDKs. Pass an explicit allowlist to opt individual built-in skills back in. (#2410)
Feature: agent factories — argsSchema, pagination, and completion options
Three improvements to the Agent Factories API in the Node SDK:
- Declare an
argsSchemaon a factory so the CLI validates arguments before a run starts (#2315) session.factory.runs.list()supports cursor-based pagination for browsing full run history (#2431)- Run and resume options now forward completion notifications and phase-name logging (#2431)
Feature: ask-user variant session option
All SDKs expose an askUserVariant option on session create and resume for structured ask-user tool behavior. Omitting it preserves legacy behavior. (#2432)
Other changes
- bugfix: [Rust] prevent orphaned CLI processes when the client is dropped (#2292)
- bugfix: [Python] serialize native values in tool results correctly (#2374)
- bugfix: [Node] fix agent factory types and behavior to match the wire contract (#2309)
- improvement: [C#] skip untyped internal properties in C# codegen (#2298)
New contributors
@lutzroedermade their first contribution in #2330@aymenfurtermade their first contribution in #2294@lukehobanmade their first contribution in #2292@scordiomade their first contribution in #2382@OllieinCanadamade their first contribution in #2374
Generated by Release Changelog Generator · sonnet46 44.1 AIC · ⌖ 6.59 AIC · ⊞ 8.1K