Skip to content

Bump GitHub.Copilot.SDK from 0.2.0 to 0.2.1#91

Open
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/nuget/GitHub.Copilot.SDK-0.2.1
Open

Bump GitHub.Copilot.SDK from 0.2.0 to 0.2.1#91
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/nuget/GitHub.Copilot.SDK-0.2.1

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot bot commented on behalf of github Apr 6, 2026

Updated GitHub.Copilot.SDK from 0.2.0 to 0.2.1.

Release notes

Sourced from GitHub.Copilot.SDK's releases.

0.2.1

Feature: commands and UI elicitation across all four SDKs

Register slash commands that CLI users can invoke and drive interactive input dialogs from any SDK language. This feature was previously Node.js-only; it now ships in Python, Go, and .NET as well. (#​906, #​908, #​960)

const session = await client.createSession({
  onPermissionRequest: approveAll,
  commands: [{
    name: "summarize",
    description: "Summarize the conversation",
    handler: async (context) => { /* ... */ },
  }],
  onElicitationRequest: async (context) => {
    if (context.type === "confirm") return { action: "confirm" };
  },
});

// Drive dialogs from the session
const confirmed = await session.ui.confirm({ message: "Proceed?" });
const choice = await session.ui.select({ message: "Pick one", options: ["A", "B"] });
var session = await client.CreateSessionAsync(new SessionConfig {
    OnPermissionRequest = PermissionHandler.ApproveAll,
    Commands = [
        new CommandDefinition {
            Name = "summarize",
            Description = "Summarize the conversation",
            Handler = async (context) => { /* ... */ },
        }
    ],
});

// Drive dialogs from the session
var confirmed = await session.Ui.ConfirmAsync(new ConfirmOptions { Message = "Proceed?" });

⚠️ Breaking change (Node.js): The onElicitationRequest handler signature changed from two arguments (request, invocation) to a single ElicitationContext that combines both. Update callers to use context.sessionId and context.message directly.

Feature: session.getMetadata across all SDKs

Efficiently fetch metadata for a single session by ID without listing all sessions. Returns undefined/null (not an error) when the session is not found. (#​899)

  • TypeScript: const meta = await client.getSessionMetadata(sessionId);
  • C#: var meta = await client.GetSessionMetadataAsync(sessionId);
  • Python: meta = await client.get_session_metadata(session_id)
  • Go: meta, err := client.GetSessionMetadata(ctx, sessionID)

Feature: sessionFs for virtualizing per-session storage (Node SDK)

... (truncated)

0.2.1-preview.2

Feature: onElicitationRequest callback for elicitation provider support

[Node] SDK clients can now act as elicitation providers by registering an onElicitationRequest callback in SessionConfig. The SDK negotiates the requestElicitation capability with the runtime, listens for broadcast elicitation.requested events, invokes the handler, and responds automatically. (#​908)

const session = await client.createSession({
  onElicitationRequest: async (request) => {
    // respond to structured user input requests broadcast by the CLI runtime
    return { type: "string", value: "user response" };
  },
});

Feature: getSessionMetadata API across all SDKs

All SDKs now expose an efficient O(1) lookup of a single session's metadata by ID — no need to call listSessions and filter client-side. (#​899)

  • TypeScript: await client.getSessionMetadata(sessionId) — returns SessionMetadata | undefined
  • C#: await client.GetSessionMetadataAsync(sessionId) — returns SessionMetadata?
  • Python: await client.get_session_metadata(session_id) — returns SessionMetadata | None
  • Go: client.GetSessionMetadata(ctx, sessionID) — returns (*SessionMetadata, error)

Feature: async context manager support for Python client and session

[Python] CopilotClient and CopilotSession now implement the async context manager protocol for automatic resource cleanup. (#​475)

async with CopilotClient() as client:
    async with await client.create_session() as session:
        response = await session.get_response("Hello")

Other changes

  • bugfix: [Node, Go, Python] structured ToolResultObject values were stringified before RPC, causing toolTelemetry and resultType to be silently lost on the server side (#​970)
  • improvement: [All] update bundled runtime to 1.0.15-2, resolving a regression with postToolUse hooks (#​978)

New contributors

  • @​Sumanth007 made their first contribution in #​475
  • @​Morabbin made their first contribution in #​970

Generated by Release Changelog Generator

Generated by Release Changelog Generator

0.2.1-preview.1

Change: ephemeral events no longer included in getMessages()

Following a runtime update to 1.0.12, events like session.idle are now truly ephemeral — they are only observable via live event listeners and are not returned by session.getMessages() / get_messages(). This makes session resume behave consistently whether the session was previously active in-process or is being resumed from disk. (#​927)

If your code calls getMessages() and checks for a session.idle event to determine whether a turn is complete, switch to using a live event listener instead:

session.on("session.idle", () => {
  // turn is complete
});
session.OnSessionIdle += (e) => {
    // turn is complete
};

Other changes

  • improvement: [All] COPILOT_CLI_PATH env var is now read from the effective environment configured on the client (e.g. via options.env), not just the process environment — consistent across all SDKs (#​925)

Generated by Release Changelog Generator

0.2.1-preview.0

Feature: commands and UI elicitation support for Node.js

The Node.js SDK now supports registering slash commands and prompting users with interactive dialogs. Pass commands in session config to handle CLI slash commands; use session.ui to show confirm, select, or text-input prompts. The feature was already available in other SDKs. (#​906)

const session = await client.createSession({
  commands: [{
    name: "deploy",
    handler: async (params) => ({ text: `Deploying to \$\{params.args}...` })
  }]
});

const confirmed = await session.ui.confirm({ title: "Proceed?", message: "This will deploy to production." });
const env = await session.ui.select({ title: "Environment", options: [{ value: "prod" }, { value: "staging" }] });
const note = await session.ui.input({ title: "Release note" });

Feature: custom model listing for BYOK mode

All four SDKs now accept an onListModels callback in client options. When provided, client.listModels() calls your handler instead of querying the CLI — useful for BYOK setups where you want to expose your provider's available models. (#​730)

const client = new CopilotClient({
  onListModels: async () => [{ id: "gpt-4o", displayName: "GPT-4o", vendor: "OpenAI" }]
});
var client = new CopilotClient(new CopilotClientOptions {
    OnListModels = async (ct) => [new ModelInfo { Id = "gpt-4o", DisplayName = "GPT-4o" }]
});
  • Python: on_list_models=lambda: [ModelInfo(id="gpt-4o", display_name="GPT-4o")]
  • Go: OnListModels: func(ctx context.Context) ([]copilot.ModelInfo, error) { ... }

Feature: blob attachments for inline image data

A new blob attachment type lets you send base64-encoded content directly to a session without writing it to disk first — useful when images are already in memory (screenshots, API responses, generated images). (#​731)

await session.sendMessage("Describe this screenshot", {
  attachments: [{ type: "blob", data: base64Data, mimeType: "image/png", displayName: "screen.png" }]
});
await session.send_message("Describe this screenshot", attachments=[
    BlobAttachment(type="blob", data=base64_data, mime_type="image/png", display_name="screen.png")
])
 ... (truncated)

Commits viewable in [compare view](https://github.com/github/copilot-sdk/compare/v0.2.0...v0.2.1).
</details>

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=GitHub.Copilot.SDK&package-manager=nuget&previous-version=0.2.0&new-version=0.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

---
updated-dependencies:
- dependency-name: GitHub.Copilot.SDK
  dependency-version: 0.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot bot commented on behalf of github Apr 6, 2026

Labels

The following labels could not be found: do-not-merge/work-in-progress, kind/dependency. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants