Skip to content

Releases: github/copilot-sdk

v1.0.9-preview.2

v1.0.9-preview.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Jul 17:51
5e09c68

Bug fixes

  • bugfix: [Python] sessions.list() raised ValueError for 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#] CustomAgentsLocalOnly was only sent via session.options.update after session creation, arriving too late to restrict agent discovery to the working directory; it is now included in the session.create and session.resume wire payloads (#1899)

New contributors

  • @abhinavgautam01 made their first contribution in #1652
  • @arimu1 made 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

rust/v1.0.9-preview.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Jul 17:51
5e09c68

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

Full Changelog: rust/v1.0.9-preview.1...rust/v1.0.9-preview.2

GitHub Copilot SDK for Java 1.0.9-preview.2

Choose a tag to compare

Installation

⚠️ Artifact versioning plan: Releases of this implementation track releases of the reference implementation. For each release of the reference implementation, there may follow a corresponding release of this implementation with the same number as the reference implementation. Release identifiers of the reference implementation are in the form 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 ModeHandlers exit_plan_mode E2E test assertions (#2032)
  • improvement: update E2E test fixtures to use gpt-5.4 for reasoning effort tests (#2181)

New contributors

  • @arimu1 made their first contribution in #2032

Generated by Release Changelog Generator · sonnet46 36.1 AIC · ⌖ 6.98 AIC · ⊞ 8.6K

v1.0.9-preview.1

v1.0.9-preview.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 19:36
0394797

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

  • @nytron88 made their first contribution in #2117
  • @syedkazmi14 made their first contribution in #2101
  • @smz202000 made their first contribution in #2019

Generated by Release Changelog Generator · sonnet46 25.9 AIC · ⌖ 5.11 AIC · ⊞ 8.6K

v1.0.9-preview.0

v1.0.9-preview.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 04:58
3854a9c

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 @CopilotToolParam descriptions 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

  • @adirh3 made 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

rust/v1.0.9-preview.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 19:37
0394797

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

Full Changelog: rust/v1.0.9-preview.0...rust/v1.0.9-preview.1

rust/v1.0.9-preview.0

rust/v1.0.9-preview.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 04:58
3854a9c

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_user starving 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

Full Changelog: rust/v1.0.8-preview.0...rust/v1.0.9-preview.0

GitHub Copilot SDK for Java 1.0.9-preview.1

Choose a tag to compare

Installation

⚠️ Artifact versioning plan: Releases of this implementation track releases of the reference implementation. For each release of the reference implementation, there may follow a corresponding release of this implementation with the same number as the reference implementation. Release identifiers of the reference implementation are in the form 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>) for setAvailableTools, setExcludedTools, and agent config in README (#2101)
  • improvement: fix EnableConfigDiscovery Javadoc to accurately describe agent discovery behavior — it gates .github/agents/ discovery, independent of SkipCustomInstructions (#2019)

New contributors

  • @syedkazmi14 made their first contribution in #2101
  • @smz202000 made 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

Choose a tag to compare

Installation

⚠️ Artifact versioning plan: Releases of this implementation track releases of the reference implementation. For each release of the reference implementation, there may follow a corresponding release of this implementation with the same number as the reference implementation. Release identifiers of the reference implementation are in the form 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 @CopilotToolParam description at compile time (#1980)

New contributors

  • @rinceyuan made their first contribution in #1980
  • @belaltaher8 made their first contribution in #2054

Generated by Release Changelog Generator · sonnet46 43.8 AIC · ⌖ 6.15 AIC · ⊞ 8.6K

v1.0.8

Choose a tag to compare

@github-actions github-actions released this 22 Jul 23:17
a54b0b5

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 expAssignments session config field across all SDKs (#2033)
  • bugfix: [Rust] fix ask_user starving the per-session event loop (#2034)

New contributors

  • @lukewar made 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.allowed list 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