Releases: github/copilot-sdk
Release list
v1.0.7
Feature: in-process (FFI) transport
The SDK can now host the Copilot runtime in-process by loading the native runtime library via its C ABI (FFI), eliminating the overhead of spawning a child process. This experimental transport is available for Node.js, Rust, Python, and Go. (#1953, #1915, #1975, #1976)
const client = new CopilotClient({ connection: RuntimeConnection.forInProcess() });var client = new CopilotClient(new CopilotClientOptions { Connection = RuntimeConnection.ForInProcess() });Feature: tool search configuration
A new toolSearch session option controls how the SDK defers tools when the total tool count exceeds a threshold. When enabled (the default), excess MCP and external tools are surfaced on demand through the built-in tool_search_tool rather than pre-loaded into every prompt. Tool results can also include toolReferences to link cited sources back to the tool that produced them. (#1933)
const session = await client.createSession({
toolSearch: { defer: "auto" },
});var session = await client.CreateSessionAsync(new SessionConfig
{
ToolSearch = new ToolSearchConfig { Defer = "auto" },
});Feature: opaque metadata passthrough on tool definitions
Tool definitions now accept an optional metadata bag that is forwarded verbatim in session.create and session.resume RPC calls. This lets hosts attach namespaced, implementation-specific metadata to tools without expanding the typed public contract; unknown keys are preserved and round-tripped untouched. (#1864)
session.defineTool("my-tool", { metadata: { "myapp:priority": 1 } }, handler);session.DefineTool("my-tool", new ToolOptions { Metadata = new() { ["myapp:priority"] = 1 } }, handler);Other changes
- feature: [All SDKs] add
canvasProviderfield to session create/resume config so hosts can supply a stable canvas-provider identity that survives cold resume (#1847) - feature: [All SDKs] forward
enableManagedSettingsflag in session create/resume for enterprise managed-settings enforcement (#1925) - feature: [All SDKs] propagate
agentId,parentAgentId, andinteractionTypefrom LLM inference start frames into request-handler contexts (#1949) - improvement: [Rust] make tool schema and MCP server serialization deterministic by replacing
HashMapwithIndexMap(#1931) - improvement: [Rust] use
native-tlsfor the build-time CLI download (#1964) - bugfix: [.NET] avoid Windows in-process test teardown deadlock (#1997)
New contributors
@agoncalmade their first contribution in #1951@Shivam60made their first contribution in #1964@rinceyuanmade their first contribution in #1978@belaltaher8made their first contribution in #1864
Full Changelog: v1.0.6...v1.0.7
Generated by Release Changelog Generator · sonnet46 1.2M
rust/v1.0.7
What's Changed
- Remove HMAC key authentication method from public SDK auth docs by @sunbrye in #1994
- Add opaque
metadatapassthrough to SDK tool definitions by @belaltaher8 in #1864 - Avoid Windows in-process test teardown deadlock by @stephentoub in #1997
- Update @github/copilot to 1.0.71 by @github-actions[bot] in #1998
New Contributors
- @belaltaher8 made their first contribution in #1864
Full Changelog: rust/v1.0.7-preview.3...rust/v1.0.7
GitHub Copilot SDK for Java 1.0.7
Installation
vMaj.Min.Micro. For example v0.1.32. The corresponding maven version for the release will be Maj.Min.Micro-java.N, where Maj, Min and Micro are the corresponding numbers for the reference implementation release, and N is a monotonically increasing sequence number starting with 0 for each release. See the corresponding architectural decision record for more information in the docs/adr directory of the source code.
📦 [View on Maven Central]((central.sonatype.com/redacted)
📖 [Documentation]((github.github.io/redacted) · [Javadoc]((github.github.io/redacted)
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.7</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.7")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.7'Feature: opaque metadata passthrough for tool definitions
Hosts can now attach namespaced, opaque metadata to tool definitions and have it forwarded verbatim over the session.create/resumeSession wire call. Use ToolDefinition.createWithMetadata(...) or the fluent .metadata(Map) builder, or express shallow flag maps via @CopilotTool.MetadataEntry annotations. (#1864)
ToolDefinition tool = ToolDefinition.create("search", "Search files", schema, handler)
.metadata(Map.of("com.example:featureFlags", Map.of("streamResults", true)));Feature: tool search configuration support
SessionConfig and ResumeSessionConfig now accept a ToolSearchConfig that enables server-side tool search and controls the deferral threshold. Tool results can also carry back toolReferences indicating which tools were consulted during search. (#1933)
SessionConfig config = new SessionConfig()
.setToolSearch(new ToolSearchConfig().setEnabled(true).setDeferThreshold(5));Other changes
- feature: [Java] forward
enableManagedSettingsonSessionConfig/ResumeSessionConfigto opt into enterprise managed-settings enforcement at session bootstrap (#1925) - feature: [Java] expose
agentId(),parentAgentId(), andinteractionType()onCopilotRequestContextin request-handler callbacks (#1949)
New contributors
@belaltaher8made their first contribution in #1864
Generated by Release Changelog Generator · sonnet46 1.3M
v1.0.7-preview.3
Feature: tool search configuration
Tool search lets the model discover tools on demand instead of loading every tool definition up front. When the active tool count exceeds the deferral threshold, MCP and external tools are marked as deferred and surfaced through the built-in tool_search_tool. This release adds a toolSearch option to CreateSession/ResumeSession so applications can enable/disable the feature and tune the threshold. (#1933)
const session = await client.createSession({
toolSearch: { enabled: true, deferThreshold: 20 },
});var session = await client.CreateSessionAsync(new SessionConfig
{
ToolSearch = new ToolSearchConfig { Enabled = true, DeferThreshold = 20 },
});Tool results can now return toolReferences — a list of tool names chosen by a tool-search override — to narrow the active tool set before the next model turn.
Feature: in-process (FFI) transport for Python and Go
The Python and Go SDKs now support loading the Copilot runtime as a native shared library in-process, matching the existing .NET, TypeScript, and Rust implementations. This avoids spawning a child process and communicates over the runtime's C ABI instead of stdio or TCP. (#1975, #1976)
Python — experimental, no new dependencies (uses stdlib ctypes):
from copilot import CopilotClient, RuntimeConnection
client = CopilotClient(connection=RuntimeConnection.for_inprocess())Go — requires the copilot_inprocess build tag:
// build with: go build -tags copilot_inprocess
client, _ := sdk.NewClient(&sdk.ClientOptions{
Connection: &sdk.InProcessConnection{},
})The SDK selects and provisions the native runtime automatically. Per-client Env, WorkingDirectory, and Telemetry settings are not supported with in-process transport (they cannot be isolated in a shared host process). Set COPILOT_SDK_DEFAULT_CONNECTION=inprocess to use in-process transport by default across your application.
New contributors
@rinceyuanmade their first contribution in #1978
Generated by Release Changelog Generator · sonnet46 762.9K
rust/v1.0.7-preview.3
What's Changed
- Update @github/copilot to 1.0.71-0 by @github-actions[bot] in #1968
- Tool search configuration support by @almaleksia in #1933
- python: add in-process (FFI) transport by @SteveSandersonMS in #1975
- Add in-process (FFI) transport to the Go SDK by @SteveSandersonMS in #1976
- Update outdated gpt-4.1 model references in SDK docstrings by @rinceyuan in #1978
- docs: apply style guide conventions and fix trailing whitespace by @rinceyuan in #1979
- Update @github/copilot to 1.0.71-2 by @github-actions[bot] in #1990
New Contributors
- @rinceyuan made their first contribution in #1978
Full Changelog: rust/v1.0.7-preview.2...rust/v1.0.7-preview.3
GitHub Copilot SDK for Java 1.0.7-preview.3
Installation
vMaj.Min.Micro. For example v0.1.32. The corresponding maven version for the release will be Maj.Min.Micro-java.N, where Maj, Min and Micro are the corresponding numbers for the reference implementation release, and N is a monotonically increasing sequence number starting with 0 for each release. See the corresponding architectural decision record for more information in the docs/adr directory of the source code.
📦 [View on Maven Central]((central.sonatype.com/redacted)
📖 [Documentation]((github.github.io/redacted) · [Javadoc]((github.github.io/redacted)
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.7-preview.3</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.7-preview.3")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.7-preview.3'Feature: tool search configuration
Sessions can now configure tool search behavior via ToolSearchConfig on SessionConfig. Tool search keeps the model's active tool set small by deferring MCP and external tools until needed. (#1933)
var config = new SessionConfig()
.setToolSearch(new ToolSearchConfig()
.setEnabled(true)
.setDeferThreshold(20));
var session = client.createSession(config).get();Other changes
- improvement: [Java] updated Javadoc examples to reference current model IDs (#1978)
New contributors
@rinceyuanmade their first contribution in #1978
Generated by Release Changelog Generator · sonnet46 893.4K
v1.0.7-preview.2
Feature: in-process FFI transport for Rust SDK
The Rust SDK can now host the Copilot runtime as an in-process cdylib instead of spawning a CLI subprocess. Select it with Transport::InProcess or set COPILOT_SDK_DEFAULT_CONNECTION=inprocess. (#1915)
let client = ClientOptions::new()
.transport(Transport::InProcess)
.build()?;The existing Transport::Stdio and Transport::Tcp variants are fully backward-compatible — no breaking changes for current consumers.
Other changes
- improvement: [Rust] switch build-time CLI download from
rustls/ringtonative-tlsto resolve Microsoft Component Governance advisory (#1964)
New contributors
@Shivam60made their first contribution in #1964
Generated by Release Changelog Generator · sonnet46 447.1K
rust/v1.0.7-preview.2
What's Changed
- Clean up Node session E2E test lifecycle by @SteveSandersonMS in #1963
- Add in-process FFI transport for Rust SDK by @SteveSandersonMS in #1915
- Add SDK canary pipeline by @MackinnonBuck in #1950
- [Java] Embed Rust-based Copilot CLI Runtime and cease requiring Node.js: Update ADR with decision after discussion by @edburns in #1966
- rust: use native-tls for the build-time CLI download by @Shivam60 in #1964
New Contributors
Full Changelog: rust/v1.0.7-preview.1...rust/v1.0.7-preview.2
GitHub Copilot SDK for Java 1.0.7-preview.2
Installation
vMaj.Min.Micro. For example v0.1.32. The corresponding maven version for the release will be Maj.Min.Micro-java.N, where Maj, Min and Micro are the corresponding numbers for the reference implementation release, and N is a monotonically increasing sequence number starting with 0 for each release. See the corresponding architectural decision record for more information in the docs/adr directory of the source code.
📦 [View on Maven Central]((central.sonatype.com/redacted)
📖 [Documentation]((github.github.io/redacted) · [Javadoc]((github.github.io/redacted)
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.7-preview.2</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.7-preview.2")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.7-preview.2'Changes since java/v1.0.7-preview.1
- improvement: [Java] document native runtime bundling strategy (ADR-007): chose per-platform classifier JARs (DJL-style) with JNA bindings over Panama FFM, including decision rationale and monolithic uber-jar support via
maven-assembly-plugin(#1966)
Generated by Release Changelog Generator · sonnet46 738.2K
v1.0.7-preview.1
Feature: in-process (FFI) transport for the Node.js SDK
The Node.js SDK now supports an experimental in-process transport that hosts the Copilot runtime as a native library via FFI (using [koffi]((koffi.dev/redacted), instead of spawning a child process. This reduces process overhead and eliminates the need for a separate CLI installation when using a bundled native runtime. (#1953)
const connection = RuntimeConnection.forInProcess("/path/to/libcopilot-runtime.so");
const client = new CopilotClient({ runtimeConnection: connection });Feature: canvasProvider field on session config
All SDKs (Node.js, .NET, Go, Python, Rust) now support an optional canvasProvider field on session create and resume config. This lets host connections supply a stable canvas-provider identity so host-provided canvases restore correctly across cold resume. (#1847)
- TypeScript:
canvasProvider: { id: "app:builtin:my-host", name: "My Host" } - C#:
CanvasProvider = new CanvasProviderIdentity { Id = "app:builtin:my-host" } - Python:
canvas_provider=CanvasProviderIdentity(id="app:builtin:my-host") - Go:
CanvasProvider: &CanvasProviderIdentity{Id: "app:builtin:my-host"}
Feature: agent metadata in request handler contexts
Request handler callbacks across all SDKs (Node.js, Python, Go, .NET, Rust, Java) now expose agentId, parentAgentId, and interactionType from LLM inference request-start frames. This lets BYOK/CAPI request handlers identify which agent is making the inference request, and whether it is a subagent call. (#1949)
Other changes
- bugfix: [.NET] fix request-handler forwarding so GET/HEAD requests do not receive an empty content body (#1949)
Generated by Release Changelog Generator · sonnet46 498.2K