v1.0.0-beta.6
Pre-releaseFeature: Java SDK joins the monorepo
The Java SDK is now a first-class part of the github/copilot-sdk monorepo, with full CI, Maven publishing workflows, and generated types that stay in sync with the rest of the SDK family. (#1348)
CopilotClient client = new CopilotClient();
CopilotSession session = client.createSession(new SessionConfig());
session.send("Hello from Java!");Feature: preMcpToolCall hook across all SDKs
Applications can now intercept MCP tool invocations before they execute — useful for injecting, replacing, or removing the _meta field sent to MCP servers. The hook returns a tri-state result: return null to leave _meta unchanged, return a new object to replace it, or explicitly set metaToUse to null to strip it entirely. (#1366)
session.hooks.onPreMcpToolCall = async (input) => {
return { metaToUse: { traceId: myTraceId() } };
};session.Hooks.OnPreMcpToolCall = async (input) => {
return new PreMcpToolCallHookOutput { MetaToUse = new { traceId = MyTraceId() } };
};Feature: tool callbacks are now optional across all SDKs
Tools and permission handlers can be declared without providing a callback, leaving them pending for manual resolution. This makes it easier to pause execution and resolve requests from event streams rather than inline callbacks. (#1308)
// Declare without a callback — permission requests stay pending
session.setPermissionHandler({ kinds: ["edit"] });
// Later, resume manually from an event
session.resolvePermissionRequest(event.requestId, { outcome: "allow" });// Declaration-only tool — no callback supplied
session.DefineTool(new ToolDefinition { Name = "myTool", Description = "..." });Feature: sessionId on hook inputs — hooks now fire for sub-agents
All six hook input types (PreToolUseHookInput, PostToolUseHookInput, etc.) now carry a sessionId field. Hooks also fire for tool calls made by sub-agents spawned via the task tool, and input.sessionId lets you distinguish parent from sub-agent invocations. (#1290)
Feature: breaking API review changes for C#, TypeScript, and Go
These releases include coordinated, intentional breaking changes based on API review feedback. Key changes:
Connection configuration — CliPath/Port/CliUrl properties are replaced by a single RuntimeConnection discriminated union:
- TypeScript:
new CopilotClient({ connection: RuntimeConnection.stdio(...) }) - C#:
new CopilotClientOptions { Connection = RuntimeConnection.Stdio(...) } - Go:
CLIUrlequivalent updated
Convenience send overloads — send(string) / sendAndWait(string) string overloads added for all SDKs.
Lifecycle events — now a typed polymorphic hierarchy (SessionCreatedEvent, etc.) instead of stringly-typed discriminators.
C# specifics — CopilotHome → BaseDirectory, delegate types replaced with Func<...>, LogLevel retyped to CopilotLogLevel, SessionConfigBase extracted. (#1343, #1357, #1360)
Feature: model field on CustomAgentConfig
When defining custom sub-agents programmatically, you can now specify which model to use. The runtime falls back to the parent session model if the specified model is unavailable. (#1309)
- TypeScript:
customAgents: [{ name: "my-agent", model: "gpt-4o", ... }] - C#:
new CustomAgentConfig { Name = "my-agent", Model = "gpt-4o" } - Python:
custom_agents=[{"name": "my-agent", "model": "gpt-4o"}] - Go:
CustomAgentConfig{Name: "my-agent", Model: "gpt-4o"}
Feature: cloud session config support
Session creation now accepts a cloud option to request cloud-backed remote sessions with repository metadata, matching the new runtime capability. (#1306)
Feature: CopilotTool.DefineTool helper for .NET
The .NET SDK now provides a typed CopilotTool.DefineTool wrapper that applies Copilot-specific metadata (override flags, skip-permission behavior) without magic strings, aligning C# with the typed helper APIs already available in other SDKs. (#1321)
var tool = CopilotTool.DefineTool("edit", new CopilotToolOptions { IsOverride = true },
async (params, ctx) => { /* custom edit implementation */ });Other changes
- feature: [C#] add
netstandard2.0andnet10target frameworks (#1320) - feature: [C#] publish
.snupkgsymbols package to NuGet.org (#1345) - bugfix: [C#] honor preinstalled CLI path in MSBuild targets (#1318)
- bugfix: [C#] fix argument validation edge cases (#1322, #1328)
- feature: [Node] export generated session event types (#1316)
- feature: make
MCPStdioServerConfig.argsoptional across all SDKs (#1347) - feature: add
remote_sessionfield to all SDKSessionConfigtypes (#1295) - improvement: hide deprecated APIs where supported by the language (#1293)
- bugfix: [Python] fix
from_dict()round-trip for optional fields with schema defaults (#1313) - improvement: [Go] replace RPC quicktype generation with native Go codegen (#1234)
- improvement: [Go] generate typed union interfaces and bool-discriminated unions (#1252, #1284)
- improvement: [Rust] derive
Defaulton generated types (#1272)
New contributors
@tiagonbotelhomade their first contribution in #1306
Generated by Release Changelog Generator · ● 6.2M