Skip to content

v0.1.33-preview.3

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Mar 17:19
01208ca

Feature: 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] CopilotClient constructor now accepts typed config objects instead of individual keyword arguments (#793)
  • feature: [Python] updated CopilotSession.send() and send_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.Start so cancellation no longer kills the child process (#689)
  • improvement: [Go] LogOptions.Ephemeral changed from bool to *bool for proper three-state semantics; use copilot.Bool(true) (#827)
  • improvement: [Go] stop RPC client logging expected EOF errors (#609)
  • bugfix: [C#] fix SessionEvent.ToJson() failing for events with JsonElement-backed payloads (assistant.message, tool.execution_start, etc.) (#868)
  • bugfix: [.NET] add fallback TypeInfoResolver for StreamJsonRpc.RequestId to fix NativeAOT compatibility (#783)
  • improvement: [.NET] replace Task.WhenAny + Task.Delay timeout pattern with .WaitAsync(TimeSpan) (#805)
  • improvement: remove autoRestart option across all SDKs (was never fully implemented; APIs are now marked obsolete and will be removed soon) (#803)

New contributors

  • @darthmolen made their first contribution in #546
  • @MackinnonBuck made their first contribution in #731
  • @PureWeen made their first contribution in #783
  • @stefansedich made their first contribution in #784
  • @MRayermannMSFT made their first contribution in #808
  • @xoofx made their first contribution in #868
  • @jamesmontemagno made their first contribution in #879
  • @edburns made their first contribution in #889

Generated by Release Changelog Generator

Generated by Release Changelog Generator