v1.0.0-beta.7
Pre-releaseFeature: canvas runtime support
Applications can now declare and handle canvases — interactive UI surfaces hosted by the Copilot runtime. Register a single CanvasHandler on a session and receive routed canvas.open, canvas.close, and canvas.action.invoke events; call session.canvas.* for native host actions. (#1401)
session.setCanvasHandler({
onOpen: async (ctx) => { /* render canvas */ },
onAction: async (ctx) => { /* handle action */ },
onClose: async (ctx) => { /* cleanup */ },
});session.SetCanvasHandler(new MyCanvasHandler());Feature: remote session support
Applications can enable remote sessions either at the client level (all sessions in a GitHub repo get a remote URL) or on demand mid-session. (#1192)
// Always-on via client option:
const client = new CopilotClient({ remote: true });
// On-demand per session:
const result = await session.rpc.remote.enable();
console.log("Remote URL:", result.url);
await session.rpc.remote.disable();// Always-on:
var client = new CopilotClient(new CopilotClientOptions { Remote = true });
// On-demand:
var result = await session.Rpc.Remote.EnableAsync();
await session.Rpc.Remote.DisableAsync();Feature: preMcpToolCall hook
A new hook lets applications intercept MCP tool invocations before they execute — inspect, replace, or remove the _meta field sent to MCP servers. (#1366)
session.hooks.onPreMcpToolCall = async (input) => {
return { metaToUse: { ...input.meta, traceId: myTraceId } };
};session.Hooks.OnPreMcpToolCall = async (input) =>
new PreMcpToolCallHookOutput { MetaToUse = new { traceId = myTraceId } };Feature: cloud session config
Sessions can now be created with a cloud option to request cloud-backed remote sessions with repository metadata, without requiring a local CLI process. (#1306)
const session = await client.createSession({
cloud: { repository: { owner: "my-org", name: "my-repo" } },
});var session = await client.CreateSessionAsync(new SessionConfig {
Cloud = new CloudSessionConfig { Repository = new RepositoryConfig { Owner = "my-org", Name = "my-repo" } }
});Feature: [Rust] Copilot CLI bundled by default
The Rust SDK now bundles the Copilot CLI binary at publish time by default — no configuration needed to get a working binary. Opt out with default-features = false. (#1385)
# Default: CLI bundled automatically
copilot-sdk = "1.0.0-beta.7"
# Opt out of bundled CLI:
copilot-sdk = { version = "1.0.0-beta.7", default-features = false }Feature: Java SDK
The Java SDK is now part of the monorepo, providing full parity with the other language SDKs including session management, tool registration, hooks, and E2E test coverage. (#1348, #1369, #1389)
var client = new CopilotClient();
var session = client.createSession(new SessionConfig()).join();
session.send("Hello from Java!").join();Feature: SDK tracing diagnostics
The .NET, Python, and Rust SDKs now emit structured trace/log output covering CLI startup, JSON-RPC timing, session operations, and callback paths — making it easier to diagnose slow or failing connections. (#1217)
- C#: integrates with
ILoggervia structured fields andTimeSpanelapsed values - Python: uses stdlib
loggingwithelapsed_ms,session_id, and request identifiers - Rust: uses the
tracingcrate with structured fields
Feature: [C#] CopilotTool helper
CopilotTool.DefineTool is a typed wrapper around AIFunctionFactory.Create that applies Copilot-specific metadata (override flag, skip-permission behavior) without magic strings. (#1321)
var tool = CopilotTool.DefineTool("edit",
new CopilotToolOptions { IsOverride = true },
async (params) => { /* custom edit */ });
session.AddTool(tool);Feature: sessionId on hook inputs
All hook input types (PreToolUseHookInput, PostToolUseHookInput, SessionStartHookInput, etc.) now include a sessionId field, allowing applications to distinguish parent session hooks from sub-agent hooks. (#1290)
Other changes
- feature: add
enableSessionTelemetrysession option across all SDKs (#1224) - feature: add
modelfield toCustomAgentConfigacross all SDKs (#1309) - feature: add
remote_sessionfield toSessionConfigacross all SDKs (#1295) - feature: [Rust] support binary tool results (#1222)
- feature: restore mode handler APIs across SDKs (#1228)
- feature: add
runtime_instructionssystem message section across all SDKs (#1377) - feature: add
SessionFsSQLite support for runtime routing (#1299) - feature: make tool callbacks optional across SDKs (#1308)
- feature: make
MCPStdioServerConfig.argsoptional across all SDKs (#1347) - feature: [C#] add
netstandardandnet10targets (#1320) - feature: [C#] use string enums for session events (#1226)
- feature: [C#] seal generated session event types (#1330)
- feature: [C#] map
x-opaque-jsontoJsonElementat RPC params boundary (#1359) - feature: [Go] generate typed union interfaces (#1252)
- improvement: API review fixes for C# (#1343), TypeScript (#1357), Go (#1360), Rust (#1367), Python (#1376)
- improvement: share generated schema definitions across SDKs (#1289)
- improvement: hide deprecated APIs where supported (#1293)
- improvement: use 32-bit types for bounded schema integers (#1329)
- improvement: strip
Mssuffix for duration properties in generated types (#1339) - improvement: [C#] publish
.snupkgsymbols package to NuGet.org (#1345) - improvement: [Go] replace RPC quicktype generation with native Go types (#1234)
- bugfix: [Go] capture CLI stderr and fix
SetProcessDonerace condition (#863) - bugfix: [Python] fix
from_dict()round-trip for optional fields with schema defaults (#1313) - bugfix: [C#] honor preinstalled CLI path in MSBuild targets (#1318)
New contributors
@cschleidenmade their first contribution in #1222@claudiogodoy99made their first contribution in #863@tiagonbotelhomade their first contribution in #1306
Generated by Release Changelog Generator · ● 3.7M