Copilot SDK v0.3.0-preview.0: Multi-Language Support, Protocol v3
Copilot SDK v0.3.0-preview.0 brings protocol v3, official Java support, session filesystem, per-agent skills, OpenTelemetry, and major breaking changes across Node, Python, Go, and .NET SDKs.
TL;DR
- Protocol v3 with event-based tool/permission broadcasts replaces v2 request-response model
- Java SDK now official; Node, Python, Go, .NET SDKs all updated with parity features
- Session filesystem (sessionFs), per-agent skills, and OpenTelemetry support across all languages
- Breaking: permission handler now required on session creation; CLI auto-bundled in SDKs
New
- Protocol v3 event model — tool and permission broadcasts now use events instead of request-response, with v2 backward compatibility adapters included
- Java SDK official support — full-featured SDK with documentation, examples, and language tabs across all guides
- Session filesystem (sessionFs) — structured file operations within session context across all SDK languages
- Per-agent skills — configure skills and excluded tools per custom agent for fine-grained control
- OpenTelemetry support — built-in telemetry across Node, Python, Go, .NET with TelemetryConfig
- Session metadata API —
session.getMetadata()exposes context, agent info, and model capabilities - Mid-session model switching —
session.setModel()with reasoning effort support across all SDKs - Commands and UI elicitation — Node SDK adds command execution and elicitation provider support
- Blob attachment type — inline base64 data support for image inputs
- Custom system prompt (customize mode) — fine-grained system prompt customization across all languages
- Agent selection API — pre-select custom agents on session creation
- onListModels handler — BYOK mode support for custom model lists
Fixed
- JSON-RPC pipe reads >64KB — now handles short reads correctly
- Go session event handler unsubscription — reliable cleanup on disconnect
- Go client data races — fixed concurrent access issues
- .NET SDK NativeAOT compatibility — works with ahead-of-time compilation
- Windows subprocess resolution — .cmd/.bat CLI executables now resolve correctly
- Python wheel executable permissions — CLI binary now executable in distributions
- MCP environment variables — envValueMode now sent as direct across all SDKs
- ObjectDisposedException — fixed when disposing session after client.StopAsync()
- Timeout handling — CLI startup timeout now properly cleared on stop
- E2E test flakiness — Python timeout issues and race conditions resolved
Breaking Changes
- Permission handler required —
onPermissionRequesthandler now mandatory on session creation; no default allow-all behavior - autoRestart removed — feature removed across all SDKs; manage session lifecycle explicitly
- Tool execution event renamed —
tool.execution_end→tool.execution_complete - Python minimum version bumped — now requires Python 3.11+ (was 3.9)
- CopilotClient init signature (Python) — now takes config objects instead of individual parameters
- Session.send() signature (Python) — updated to align with other SDKs
- Deny-all permissions default — SDKs now deny all permissions by default; explicitly approve in handler
- CLI bundling mandatory — Copilot CLI is now auto-bundled and installed;
CopilotSkipCliDownloadoption available to skip
Update via: npm install @github/copilot-sdk@0.3.0-preview.0 (Node), pip install github-copilot==0.3.0.preview.0 (Python), go get github.com/github/copilot-sdk/go@v0.3.0-preview.0 (Go), or NuGet for .NET. See full release notes for language-specific instructions.
Source: Copilot SDK