Releases: github/copilot-sdk
GitHub Copilot SDK for Java 1.0.0
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.
📖 Documentation · Javadoc
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0'What's Changed
Full Changelog: java/v1.0.0-beta-12-java.1...java/v1.0.0
GitHub Copilot SDK for Java 1.0.0-beta-12-java.1
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.0-beta-12-java.1</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-12-java.1")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-12-java.1'Feature: slash command responses accessible via RPC
Applications can now retrieve responses from slash commands. Previously the ability to invoke slash commands existed, but responses were not surfaced through the RPC layer. (#1520)
// Send a slash command and receive its response via the session RPC
CompletableFuture<AssistantMessage> response = session.sendMessage("/my-command args");Feature: session.mcp.apps.callTool returns JsonNode
session.mcp.apps.callTool() previously returned CompletableFuture<Void> due to a codegen gap; it now correctly returns CompletableFuture<JsonNode>, making the tool result accessible. (#1523)
JsonNode result = session.rpc().mcp().apps().callTool(params).get();Generated by Release Changelog Generator · ● 2.2M
v1.0.0-beta.12
Feature: [Go] idiomatic initialism casing across the Go SDK
All Go identifiers now use idiomatic uppercase initialisms as required by Go conventions. (#1527)
Api→API,Rpc→RPC,Mcp→MCP,Sse→SSEUrl/Uri→URL/URI,Id→ID,Tcp→TCPAdo→ADO,Sdk→SDK,Fs→FSUriConnection→URIConnection,TcpConnection→TCPConnection
Feature: [Go] tri-state session boolean flags
SessionConfig.EnableConfigDiscovery, ResumeSessionConfig.EnableConfigDiscovery, and ResumeSessionConfig.ContinuePendingWork are now *bool instead of bool, allowing callers to express explicit false (opt out) vs. unset (defer to runtime default). (#1536)
copilot.Bool(true) / copilot.Bool(false) to set a value, or leave the field nil to defer to the runtime default.
cfg := copilot.SessionConfig{
EnableConfigDiscovery: copilot.Bool(false), // explicitly opt out
}Feature: [Java] slash command responses accessible via RPC
Java callers can now retrieve responses from slash commands via the RPC layer. Previously it was possible to invoke slash commands but not to receive their responses programmatically. (#1520)
Improvement: [Python/Rust] stable public namespaces for generated types
Generated types are no longer exposed under the internal generated sub-module. (#1535)
- Python: use
copilot.session_events.Xandcopilot.rpc.Xinstead ofcopilot.generated.* - Rust: use
github_copilot_sdk::session_events::Xandgithub_copilot_sdk::rpc::Xinstead ofgithub_copilot_sdk::generated::*
Other changes
- bugfix: [Go] fix session event attachment aliases (#1515)
- bugfix: [Go] preserve empty slices and maps in JSON serialization (#1528)
- bugfix: [Node] map
suppressResumeEventtodisableResumeon the wire (#1529) - improvement: [Java] map
session.mcp.apps.callToolresult toJsonNode(#1523) - improvement: [Python] derive
__version__from package metadata; align Node version sentinel (#1521) - improvement: fix GitHub brand casing across SDK public surface (#1531)
New contributors
@dmytrostrukmade their first contribution in #1515@willglasmade their first contribution in #1529
Generated by Release Changelog Generator · ● 1.4M
rust/v1.0.0-beta.12
What's Changed
- Expose enableOnDemandInstructionDiscovery across all SDK SessionConfig types by @examon in #1323
- Edburns/fix jacoco failure on main by @edburns in #1497
- Update to use correct package name for generated by @edburns in #1499
- Plumb Extension SDK Path Through Session Create And Resume by @MRayermannMSFT in #1494
- Update Java JaCoCo coverage badge by @github-actions[bot] in #1500
- Update @github/copilot to 1.0.56-2 by @github-actions[bot] in #1495
- Add typed context tier support by @stephentoub in #1503
- Add path-filtered CodeQL workflow for content-specific analysis by @Copilot in #1444
- Fixes #1443: per-language CodeQL targeting by @edburns in #1510
- Add reflection-based Jackson round-trip test for all generated types by @edburns in #1509
- On branch edburns/ghcp-sp-122-java-release-improvements by @edburns in #1512
- Edburns/ghcp sp 122 java release improvements by @edburns in #1514
- Update @github/copilot to 1.0.56 by @github-actions[bot] in #1504
- Fix Go session event attachment aliases by @dmytrostruk in #1515
- Bump tar from 0.4.45 to 0.4.46 in /rust in the cargo group across 1 directory by @dependabot[bot] in #1505
- Update @github/copilot to 1.0.57-2 by @github-actions[bot] in #1517
- Update @github/copilot to 1.0.57-3 by @github-actions[bot] in #1519
- docs: refresh for GA; add cloud sessions, fleet mode, multi-tenancy guides by @patniko in #1481
- Java: Make it so slash command responses are accessible via RPC by @edburns in #1520
- fix(python): derive version from package metadata; align Node version sentinel by @stephentoub in #1521
- Update @github/copilot to 1.0.57-4 by @github-actions[bot] in #1522
- Map
session.mcp.apps.callToolresult toJsonNodeand hardenmvn cleanby @edburns in #1523 - Add documentation site generation for Java SDK by @edburns in #1524
- Use JAVA_RELEASE_GITHUB_TOKEN for site deploy trigger by @edburns in #1525
- Consolidate Go initialism casing by @qmuntal in #1527
- Preserve empty Go slices and maps in JSON by @qmuntal in #1528
- Fix GitHub brand casing in SDK public surface by @stephentoub in #1531
- Update @github/copilot to 1.0.57 by @github-actions[bot] in #1534
- fix(nodejs): Map suppressResumeEvent to disableResume on the wire by @willglas in #1529
- Remove 'generated' from public API in Python and Rust by @SteveSandersonMS in #1535
- Bump vitest from 3.2.4 to 4.1.0 in /scripts/corrections in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1537
- go: preserve tri-state session flags by @qmuntal in #1536
New Contributors
- @examon made their first contribution in #1323
- @dmytrostruk made their first contribution in #1515
- @willglas made their first contribution in #1529
Full Changelog: rust/v1.0.0-beta.10...rust/v1.0.0-beta.12
GitHub Copilot SDK for Java 1.0.0-beta-10-java.5
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)
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0-beta-10-java.5</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-10-java.5")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-10-java.5'Changes since java/v1.0.0-beta-10-java.4
- improvement: add reflection-based Jackson round-trip test coverage for all generated event/type classes (#1509)
- improvement: fix JaCoCo coverage badge script to use correct generated-types package name (#1499)
- improvement: Java release pipeline improvements (#1514)
New contributors
@examonmade their first contribution in #1323
Full Changelog: java/v1.0.0-beta-10-java.4...java/v1.0.0-beta-10-java.5
Generated by Release Changelog Generator · ● 2.9M
v1.0.0-beta.10
Fix: [C#] Coordinate Copilot CLI stderr pump cleanup
Fixes a race condition in the .NET CopilotClient where the stderr reader could outlive the CLI process during shutdown, causing TaskScheduler.UnobservedTaskException errors. The stderr pump now has its own cancellation token and connection cleanup properly coordinates pump shutdown before disposing the process. (#1136)
Feature: [Rust] Expose install_bundled_cli and HAS_BUNDLED_CLI
Two new public APIs make it easier to access the bundled CLI path before a Client exists, eliminating the need for consumers to duplicate the cache-path resolution logic. (#1489)
// Check if a bundled CLI is available at compile time
if copilot_sdk::HAS_BUNDLED_CLI {
// Extract and get the path to the bundled CLI
if let Some(path) = copilot_sdk::install_bundled_cli() {
println!("Bundled CLI at: {}", path.display());
}
}Note
🔒 Integrity filter blocked 2 items
The following items were blocked because they don't meet the GitHub integrity level.
- #1136
search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved". - #868
search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
To allow these resources, lower min-integrity in your GitHub frontmatter:
tools:
github:
min-integrity: approved # merged | approved | unapproved | noneGenerated by Release Changelog Generator · ● 2.4M
rust/v1.0.0-beta.10
What's Changed
- Use jsoncreator for AgentMode ctor, per review comments. by @edburns in #1465
- Update @github/copilot to 1.0.55-6 by @github-actions[bot] in #1471
- Port copilot-sdk-java PR #232: reference-impl-sync with EMPTY mode fixes by @edburns in #1473
- Move Java to monorepo: Phase 06: Cutover and Cleanup by @edburns in #1472
- Add from github/copilot-sdk-java#233 by @edburns in #1475
- Add displayPrompt support to session.send across all SDKs by @devm33 in #1470
- Update @github/copilot to 1.0.55-7 by @github-actions[bot] in #1476
- Defer sessionId to server for cloud sessions by @stephentoub in #1479
- Re-invalidate build.rs when extracted CLI cache is removed by @tclem in #1480
- Canvas SDK: post-merge review followups (PR #1401) by @jmoseley in #1420
- feat: add MCP Apps (SEP-1865) support by @mattdholloway in #1335
- Config parity across SDKs: add largeOutput, pluginDirectories, spell out Directory by @stephentoub in #1482
- feat: add mcpOAuthTokenStorage support across all SDKs by @MackinnonBuck in #1326
- Integrate Bruno's PR 1478 with Ed's desired CI/CD changes by @edburns in #1483
- Update @github/copilot to 1.0.55 by @github-actions[bot] in #1484
- Track live open canvas snapshots by @jmoseley in #1447
- Update @github/copilot to 1.0.56-0 by @github-actions[bot] in #1485
- feat: add granular per-session flags for multitenancy hardening by @MackinnonBuck in #1474
- Apply review comments from standalone backport. by @edburns in #1486
- Update @github/copilot to 1.0.56-1 by @github-actions[bot] in #1488
- Coordinate Copilot CLI stderr pump cleanup by @xoofx in #1136
- Skip JaCoCo (always fails on main) by @SteveSandersonMS in #1492
- Expose install_bundled_cli and HAS_BUNDLED_CLI in the Rust SDK by @tclem in #1489
New Contributors
- @mattdholloway made their first contribution in #1335
Full Changelog: rust/v1.0.0-beta.9...rust/v1.0.0-beta.10
GitHub Copilot SDK for Java 1.0.0-beta-10-java.4
Installation
i️ Public Preview: This is the official Java SDK for GitHub Copilot. This repository treats the official .NET and Node.js SDKs for GitHub Copilot as reference implementations. These SDKs are all officially supported as GitHub open source projects. The Java implementation follows the backward compatibility guarantees offered by the reference implementations.
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.
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0-beta-10-java.4</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-10-java.4")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-10-java.4'Changes since java/v1.0.0-beta-10-java.3
- improvement: fix release pipeline token permissions to enable publishing to Maven Central
Full Changelog: java/v1.0.0-beta-10-java.3...java/v1.0.0-beta-10-java.4
Generated by Release Changelog Generator · ● 2.7M
GitHub Copilot SDK for Java 1.0.0-beta-10-java.3
Installation
ℹ️ Public Preview: This is the official Java SDK for GitHub Copilot. This repository treats the official .NET and Node.js SDKs for GitHub Copilot as reference implementations. These SDKs are all officially supported as GitHub open source projects. The Java implementation follows the backward compatibility guarantees offered by the reference implementations.
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.
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0-beta-10-java.3</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-10-java.3")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-10-java.3'Full Changelog: java/v1.0.0-beta-10-java.1...java/v1.0.0-beta-10-java.3
v1.0.0-beta.9
Feature: CopilotClientMode.Empty for multi-tenant apps
Multi-tenant applications can now opt into a hardened "empty" client mode that starts from a clean slate: no built-in tools, host integration disabled, system prompt sanitized, and storage explicitly required. This prevents user-specific state (plugins, custom agents, co-author trailers, etc.) from leaking across tenants. (#1428)
const client = new CopilotClient({
mode: "empty",
baseDirectory: "/tmp/per-tenant-state",
});
const session = await client.createSession({
onPermissionRequest: approveAll,
availableTools: new ToolSet()
.addBuiltIn(BuiltInTools.Isolated)
.addMcp("*"),
excludedTools: new ToolSet()
.addMcp("github-delete_repository"),
});using var client = new CopilotClient(new CopilotClientOptions
{
Mode = CopilotClientMode.Empty,
BaseDirectory = "/tmp/per-tenant-state",
});
await using var session = await client.CreateSessionAsync(new SessionConfig
{
OnPermissionRequest = PermissionHandler.ApproveAll,
AvailableTools = new ToolSet()
.AddBuiltIn(BuiltInTools.Isolated)
.AddMcp("*"),
ExcludedTools = new ToolSet()
.AddMcp("github-delete_repository"),
});Feature: post-tool-use failure hooks
A new postToolUseFailure / OnPostToolUseFailure hook lets SDK users observe failed tool executions and inject follow-up guidance, separate from the existing success-only postToolUse hook. Available across Node, Python, Go, .NET, and Rust. (#1421)
session.hooks.postToolUseFailure = async (event) => {
console.error(`Tool ${event.toolName} failed: ${event.error}`);
};session.OnPostToolUseFailure = async (e, ct) =>
{
Console.Error.WriteLine($"Tool {e.ToolName} failed: {e.Error}");
};Feature: agentMode on MessageOptions
All six SDKs now expose an agentMode field on MessageOptions to set the per-message UI mode (interactive, plan, autopilot, shell). Previously there was no correct way to request plan/autopilot mode from the SDK. (#1438)
- TypeScript:
session.send(message, { agentMode: "plan" }) - C#:
session.SendAsync(message, new MessageOptions { AgentMode = "plan" }) - Python:
session.send(message, agent_mode="plan") - Go:
session.Send(ctx, message, copilot.MessageOptions{AgentMode: "plan"})
Feature: [Rust] structured error types with kind() method
Rust SDK error types have been refactored from a flat #[non_exhaustive] enum to a struct-with-kind() pattern, aligning with the Azure SDK for Rust design. This is a breaking change for Rust callers matching on error variants — update match arms to call .kind() instead. (#1400)
Other changes
- bugfix: [C#] preserve JSON-RPC
error.datain the .NET client transport (#1425) - improvement: [Java] cross-cutting monorepo updates — phase 05 (#1441)
- bugfix: [Java] fix repackaging issue (#1437)
New contributors
@heathsmade their first contribution in #1400
Generated by Release Changelog Generator · ● 3.6M