Releases: github/copilot-sdk
Release list
v1.0.9-preview.2
Bug fixes
- bugfix: [Python]
sessions.list()raisedValueErrorfor any non-empty session list due to boolean-discriminated union decoding bug (#2123) - bugfix: [Python] binary tool results (e.g., base64 image data) were silently dropped when forwarding tool responses, causing the model to report it could not view images (#1821)
- bugfix: [Python] codegen emitted an unintended synthetic class name (
PermissionDecisionApproveForIonApproval) for permission approval types; now emits the correct schema-named aliases (PermissionDecisionApproveForSessionApproval,PermissionDecisionApproveForLocationApproval) (#1652) - bugfix: [C#]
CustomAgentsLocalOnlywas only sent viasession.options.updateafter session creation, arriving too late to restrict agent discovery to the working directory; it is now included in thesession.createandsession.resumewire payloads (#1899)
New contributors
@abhinavgautam01made their first contribution in #1652@arimu1made their first contribution in #2032
Generated by Release Changelog Generator · sonnet46 21.4 AIC · ⌖ 4.16 AIC · ⊞ 8.6K
rust/v1.0.9-preview.2
What's Changed
- Fix CAPI reasoning E2E fixtures by @ellismg in #2181
- docs: correct the remote sessions client option name by @examon in #2179
- docs: correct the ephemeral labels on four persisted session events by @examon in #2172
- docs: document EnableSessionStore and one-shot session guidance by @syf2211 in #1822
- python: decode boolean-discriminated unions by @examon in #2123
- test(java): re-enable ModeHandlers exit_plan_mode E2E assertions by @arimu1 in #2032
- Add usage and billing metrics docs page by @andyfeller in #1720
- forward CustomAgentsLocalOnly in session.create and session.resume by @syf2211 in #1899
- Fix Python codegen synthetic permission approval names by @abhinavgautam01 in #1652
- fix(python): forward binary tool results in HandlePendingToolCall RPC by @syf2211 in #1821
- [Codegen] Honor internal flag on session event types in Node codegen by @MRayermannMSFT in #2177
New Contributors
- @arimu1 made their first contribution in #2032
- @abhinavgautam01 made their first contribution in #1652
Full Changelog: rust/v1.0.9-preview.1...rust/v1.0.9-preview.2
GitHub Copilot SDK for Java 1.0.9-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.9-preview.2</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.9-preview.2")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.9-preview.2'Changes
- improvement: re-enable
ModeHandlersexit_plan_mode E2E test assertions (#2032) - improvement: update E2E test fixtures to use
gpt-5.4for reasoning effort tests (#2181)
New contributors
@arimu1made their first contribution in #2032
Generated by Release Changelog Generator · sonnet46 36.1 AIC · ⌖ 6.98 AIC · ⊞ 8.6K
v1.0.9-preview.1
Feature: Agent Factories authoring surface [experimental]
Agent Factories let a trusted extension declare a JavaScript closure that orchestrates a fleet of subagents, then invoke it by name. The runtime invokes the factory closure over a reverse RPC call, passing primitives to spawn subagents, journal results (so a resumed run replays completed work for free), compose work in parallel or as a pipeline, and report progress. (#2114)
import { defineFactory, joinSession } from "`@github/copilot-sdk`/extension";
const myFactory = defineFactory({
meta: { name: "my-factory", description: "Orchestrates subagents" },
run: async ({ spawnAgent, journal }) => {
const result = await spawnAgent({ prompt: "Summarize the repo" });
return journal("done", result);
},
});
const session = await joinSession({ factories: [myFactory] });
const run = await session.factory.run({ name: "my-factory", input: {} });Everything is gated behind the runtime's agent_factories flag and billing gate, and all public types are marked @experimental.
New contributors
@nytron88made their first contribution in #2117@syedkazmi14made their first contribution in #2101@smz202000made their first contribution in #2019
Generated by Release Changelog Generator · sonnet46 25.9 AIC · ⌖ 5.11 AIC · ⊞ 8.6K
v1.0.9-preview.0
Feature: agentStop lifecycle hook
Applications can now intercept the natural stopping point of the top-level agent across all SDKs. Return { decision: "block", reason } to enqueue a follow-up message and keep the agent running; omit or return no decision to let it stop normally. (#2054)
session.hooks.agentStop(async ({ stopHookActive }) => {
if (stopHookActive) return; // don't block continuation turns
return { decision: "block", reason: "Run final validation and fix any failures." };
});session.Hooks.AgentStop(async (input, ct) => {
if (input.StopHookActive) return null; // don't block continuation turns
return new AgentStopOutput { Decision = "block", Reason = "Run final validation and fix any failures." };
});Feature: startup timing breakdown for the Rust SDK
Client::start now exposes a StartupTimings struct that breaks down initialization latency into per-phase millisecond fields (process_spawn_ms, transport_setup_ms, handshake_ms, and more), making it easier to diagnose cold-start performance. (#2066)
Feature: [Java] custom JSON schema override for @CopilotToolParam
The @CopilotToolParam annotation now accepts an optional schema attribute for passing an explicit JSON Schema string, enabling support for third-party types that the built-in schema generator cannot automatically map. (#2069)
`@CopilotTool`("Schedule a deployment")
public String scheduleDeployment(
`@CopilotToolParam`(value = "Deployment time in ISO-8601",
schema = "{\"type\":\"string\",\"format\":\"date-time\"}")
com.acme.internal.AcmeDateTime deployTime) { ... }Other changes
- improvement: [Java] enforce non-blank
@CopilotToolParamdescriptions at compile time (#1980) - bugfix: [C#] release oversized JSON-RPC receive buffers after large frames to reduce memory retention (#2047)
- improvement: [Rust] emit type aliases for scalar RPC result schemas in generated code (#2110)
New contributors
@adirh3made their first contribution in #2047
Generated by Release Changelog Generator · sonnet46 45.2 AIC · ⌖ 4.94 AIC · ⊞ 8.6K
rust/v1.0.9-preview.1
What's Changed
- docs: correct the Python and Go event data model tip by @examon in #2160
- fix(python): select the current platform's CLI package in the E2E harness by @nytron88 in #2117
- docs: fix non-compiling Rust external-transport example by @examon in #2142
- Rebrand Azure AI Foundry references to Microsoft Foundry by @scottaddie in #2126
- Fix .NET in-process E2E transport coverage by @roji in #1986
- Document MCP tool filter naming across SDKs by @syedkazmi14 in #2101
- docs: fix EnableConfigDiscovery summary to accurately describe agent discovery behavior by @smz202000 in #2019
- build(deps): bump the java-maven-deps group across 1 directory with 6 updates by @dependabot[bot] in #2119
- Bump com.fasterxml.jackson.core:jackson-databind from 2.22.0 to 2.22.1 in /java by @dependabot[bot] in #2017
- Add the Agent Factories authoring surface by @MRayermannMSFT in #2114
New Contributors
- @nytron88 made their first contribution in #2117
- @syedkazmi14 made their first contribution in #2101
- @smz202000 made their first contribution in #2019
Full Changelog: rust/v1.0.9-preview.0...rust/v1.0.9-preview.1
rust/v1.0.9-preview.0
What's Changed
- docs: document sub-agent event attribution by @loganrosen in #1878
- docs: expand Azure Managed Identity BYOK guidance by @scottaddie in #1995
- Durably document required secrets by @edburns in #2046
- Fix
ask_userstarving the Rust SDK per-session event loop by @pallaviraiturkar0 in #2034 - Use dependency groups for Python dev deps by @brettcannon in #2038
- Fix consistency review PR delta detection by @roji in #2018
- Update @github/copilot to 1.0.73 by @github-actions[bot] in #2055
- java: enforce non-blank @CopilotToolParam description at compile time by @rinceyuan in #1980
- java: add schema attribute to @CopilotToolParam and lambda for custom type schema override by @edburns in #2069
- docs: fix non-compiling Rust session-limits example by @examon in #2082
- Fix the plan-mode exit action type name in the fleet mode guide by @examon in #2090
- Fix the Node.js tool-definition example in the Microsoft Agent Framework guide by @examon in #2088
- Fix Go telemetry examples: NewClient takes *ClientOptions and returns one value by @examon in #2086
- Fix active .NET and Python CI failures by @SteveSandersonMS in #2093
- docs: correct the delta field the MAF streaming example reads by @examon in #2105
- Fix the Python list_sessions docstring example to use session_id by @examon in #2099
- docs: rename Azure AI Foundry to Microsoft Foundry in BYOK guide by @scottaddie in #2097
- Bump fast-uri from 3.1.2 to 3.1.4 in /test/harness by @dependabot[bot] in #2094
- Bump brace-expansion from 1.1.14 to 1.1.16 in /nodejs by @dependabot[bot] in #2095
- Bump hono from 4.12.23 to 4.12.32 in /test/harness by @dependabot[bot] in #2096
- docs: add missing assistant.usage event fields to streaming-events reference by @rinceyuan in #2074
- docs: document complete sub-agent event data fields by @rinceyuan in #2072
- Refresh agentic workflows to gh-aw v0.83.1; issue-intent on issue-triage by @alondahari in #2063
- Add StartupTimings per-phase breakdown to Client::start by @jmoseley in #2066
- docs: fix inaccurate SDK/runtime claims found in docs audit by @patniko in #2064
- Fix flaky .NET ask-user E2E tests by @SteveSandersonMS in #2107
- sdk: Expose AgentStop session hook across languages by @belaltaher8 in #2054
- ci: add stable required SDK checks by @SteveSandersonMS in #2108
- Fix flaky .NET session resume E2E test by @SteveSandersonMS in #2109
- dotnet: release oversized JSON-RPC receive buffers by @adirh3 in #2047
- Version-independent SDK test and codegen fixes split from the 1.0.76-0 bump by @stephentoub in #2110
- docs: add server-to-server token guide by @patniko in #2005
- Update @github/copilot to 1.0.76-5 by @github-actions[bot] in #2140
New Contributors
- @alondahari made their first contribution in #2063
- @adirh3 made their first contribution in #2047
Full Changelog: rust/v1.0.8-preview.0...rust/v1.0.9-preview.0
GitHub Copilot SDK for Java 1.0.9-preview.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.9-preview.1</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.9-preview.1")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.9-preview.1'Other changes
- improvement: document MCP tool filter naming convention (
<server-key>-<tool-name>) forsetAvailableTools,setExcludedTools, and agent config in README (#2101) - improvement: fix
EnableConfigDiscoveryJavadoc to accurately describe agent discovery behavior — it gates.github/agents/discovery, independent ofSkipCustomInstructions(#2019)
New contributors
@syedkazmi14made their first contribution in #2101@smz202000made their first contribution in #2019
Generated by Release Changelog Generator · sonnet46 47 AIC · ⌖ 5.17 AIC · ⊞ 8.6K
GitHub Copilot SDK for Java 1.0.9-preview.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.
📦 [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.9-preview.0</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.9-preview.0")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.9-preview.0'Feature: AgentStop lifecycle hook
The agentStop hook lets your application intercept the natural end of an agent turn and optionally request the agent to continue. Return { decision: "block", reason: "..." } to queue a follow-up prompt; return nothing to let the agent stop normally. (#2054)
SessionHooks hooks = new SessionHooks()
.setOnAgentStop((input, invocation) -> {
if (!input.isStopHookActive() && needsValidation()) {
return CompletableFuture.completedFuture(
new AgentStopHookOutput()
.setDecision("block")
.setReason("Run final validation and fix any failures.")
);
}
return CompletableFuture.completedFuture(null);
});Feature: custom JSON schema for @CopilotToolParam
A new schema attribute on @CopilotToolParam lets you provide an explicit JSON Schema for parameters whose types cannot be auto-mapped by the schema generator — for example, third-party or internal types. (#2069)
`@CopilotTool`("Schedule a deployment")
public String scheduleDeployment(
`@CopilotToolParam`(value = "Deployment time in ISO-8601",
schema = "{\"type\":\"string\",\"format\":\"date-time\"}")
com.acme.internal.AcmeDateTime deployTime) {
return "Scheduled for " + deployTime;
}Other changes
- feature: [Java] enforce non-blank
@CopilotToolParamdescription at compile time (#1980)
New contributors
@rinceyuanmade their first contribution in #1980@belaltaher8made their first contribution in #2054
Generated by Release Changelog Generator · sonnet46 43.8 AIC · ⌖ 6.15 AIC · ⊞ 8.6K
v1.0.8
Feature: per-agent reasoning effort
Custom sub-agents can now have their own reasoning effort level, independent of the parent session. When reasoningEffort is omitted on a custom agent, the backend applies its own default — the session-level setting is not inherited. (#1981)
const session = await client.createSession({
customAgents: [{
name: "planner",
prompt: "You plan tasks.",
reasoningEffort: "high",
}],
});var session = await client.CreateSessionAsync(new SessionOptions {
CustomAgents = [new CustomAgentConfig {
Name = "planner",
Prompt = "You plan tasks.",
ReasoningEffort = ReasoningEffort.High,
}],
});Other changes
- improvement: strongly type
expAssignmentssession config field across all SDKs (#2033) - bugfix: [Rust] fix
ask_userstarving the per-session event loop (#2034)
New contributors
@lukewarmade their first contribution in #1880
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
awmgmcpg
To allow these domains, add them to the
network.allowedlist in your workflow frontmatter:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
Generated by Release Changelog Generator · 39.1 AIC · ⌖ 5.54 AIC · ⊞ 7.2K