Skip to content

v1.0.0-beta.7

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 May 19:19
51043b1

Feature: 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 ILogger via structured fields and TimeSpan elapsed values
  • Python: uses stdlib logging with elapsed_ms, session_id, and request identifiers
  • Rust: uses the tracing crate 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 enableSessionTelemetry session option across all SDKs (#1224)
  • feature: add model field to CustomAgentConfig across all SDKs (#1309)
  • feature: add remote_session field to SessionConfig across all SDKs (#1295)
  • feature: [Rust] support binary tool results (#1222)
  • feature: restore mode handler APIs across SDKs (#1228)
  • feature: add runtime_instructions system message section across all SDKs (#1377)
  • feature: add SessionFs SQLite support for runtime routing (#1299)
  • feature: make tool callbacks optional across SDKs (#1308)
  • feature: make MCPStdioServerConfig.args optional across all SDKs (#1347)
  • feature: [C#] add netstandard and net10 targets (#1320)
  • feature: [C#] use string enums for session events (#1226)
  • feature: [C#] seal generated session event types (#1330)
  • feature: [C#] map x-opaque-json to JsonElement at 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 Ms suffix for duration properties in generated types (#1339)
  • improvement: [C#] publish .snupkg symbols package to NuGet.org (#1345)
  • improvement: [Go] replace RPC quicktype generation with native Go types (#1234)
  • bugfix: [Go] capture CLI stderr and fix SetProcessDone race 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

  • @cschleiden made their first contribution in #1222
  • @claudiogodoy99 made their first contribution in #863
  • @tiagonbotelho made their first contribution in #1306

Generated by Release Changelog Generator · ● 3.7M