v0.1.33-preview.3
Pre-releaseFeature: OpenTelemetry support across all SDKs
All four SDK languages now support distributed tracing with the Copilot CLI. Set telemetry in your client options to configure an OTLP exporter; W3C trace context is then propagated on session.create, session.resume, and session.send, and restored in tool handlers so tool execution is linked to the originating trace. (#785)
const client = new CopilotClient({
telemetry: {
otlpEndpoint: "(localhost/redacted)
sourceName: "my-app",
},
});var client = new CopilotClient(new CopilotClientOptions {
Telemetry = new TelemetryConfig {
OtlpEndpoint = "(localhost/redacted)
SourceName = "my-app",
},
});Feature: blob attachment type for inline base64 data
A new blob attachment type lets you send images or other binary content directly to a session without writing to disk first — useful when data is already in memory (screenshots, API responses, generated images). (#731)
await session.send("What's in this image?", {
attachments: [{ type: "blob", data: base64Str, mimeType: "image/png" }],
});await session.SendAsync("What's in this image?", new MessageOptions {
Attachments = [new BlobAttachment { Data = base64Str, MimeType = "image/png" }],
});Feature: Node.js CommonJS (CJS) compatibility
The Node.js SDK now ships both ESM and CJS builds, fixing crashes in VS Code extensions and other tools bundled with esbuild's format: "cjs". No changes needed in consumer code — Node automatically selects the right format. (#546)
Feature: reasoningEffort when switching models
All SDKs now accept an optional reasoningEffort parameter in setModel() for models that support it. (#712)
await session.setModel("claude-sonnet-4.6", { reasoningEffort: "high" });await session.SetModelAsync("claude-sonnet-4.6", reasoningEffort: "high");- Python:
await session.set_model("claude-sonnet-4.6", reasoning_effort="high") - Go:
session.SetModel(ctx, "claude-sonnet-4.6", &copilot.SetModelOptions{ReasoningEffort: "high"})
Feature: skipPermission flag on tool definitions
Tools can now be registered with skipPermission: true (or SkipPermission in .NET) to bypass the permission confirmation step for low-risk tools such as read-only queries. (#808)
session.defineTool("query_db", { skipPermission: true }, async (params) => {
// read-only, no permission prompt
});session.DefineTool("query_db", new ToolOptions { SkipPermission = true }, async (params) => {
// read-only, no permission prompt
});Feature: experimental API annotations
APIs marked experimental in the schema (agent, fleet, and compaction groups) are now annotated in all four SDK languages: [Experimental] in C#, /** @experimental */ in TypeScript, and comments in Python and Go. Experimental APIs will continue to evolve. (#875)
Other changes
- feature: [Python]
CopilotClientconstructor now accepts typed config objects instead of individual keyword arguments (#793) - feature: [Python] updated
CopilotSession.send()andsend_and_wait()signatures for cleaner API surface (#814) - feature: [Python] add typed overloads for
CopilotClient.on()event registration (#589) - improvement: [.NET, Go] serialize event dispatch so handlers are invoked in registration order with no concurrent calls (#791)
- improvement: [Go] detach CLI process lifespan from the context passed to
Client.Startso cancellation no longer kills the child process (#689) - improvement: [Go]
LogOptions.Ephemeralchanged fromboolto*boolfor proper three-state semantics; usecopilot.Bool(true)(#827) - improvement: [Go] stop RPC client logging expected EOF errors (#609)
- bugfix: [C#] fix
SessionEvent.ToJson()failing for events withJsonElement-backed payloads (assistant.message,tool.execution_start, etc.) (#868) - bugfix: [.NET] add fallback
TypeInfoResolverforStreamJsonRpc.RequestIdto fix NativeAOT compatibility (#783) - improvement: [.NET] replace
Task.WhenAny+Task.Delaytimeout pattern with.WaitAsync(TimeSpan)(#805) - improvement: remove
autoRestartoption across all SDKs (was never fully implemented; APIs are now marked obsolete and will be removed soon) (#803)
New contributors
@darthmolenmade their first contribution in #546@MackinnonBuckmade their first contribution in #731@PureWeenmade their first contribution in #783@stefansedichmade their first contribution in #784@MRayermannMSFTmade their first contribution in #808@xoofxmade their first contribution in #868@jamesmontemagnomade their first contribution in #879@edburnsmade their first contribution in #889
Generated by Release Changelog Generator
Generated by Release Changelog Generator