Copilot SDK v0.3.0-preview.1: Multi-Language Support, Hooks, OpenTelemetry
Copilot SDK v0.3.0-preview.1 brings public preview status with full multi-language support, OpenTelemetry observability, hooks system for permissions and auditing, and session filesystem abstraction. Breaking changes require permission handlers and update Python to 3.11+.
TL;DR
- Public preview release with Node.js, Python, Go, and .NET SDKs at feature parity
- New hooks system for permissions, auditing, and notifications across all languages
- OpenTelemetry support, session filesystem abstraction, and per-agent skills configuration
- Breaking change: permission handler now required on session creation
New
- OpenTelemetry support — Comprehensive observability across all SDK languages with TelemetryConfig
- Hooks system — onPermissionRequest, onElicitationRequest, and postToolUse handlers for all SDKs
- Session filesystem abstraction — SessionFs for workspace-aware file operations across languages
- Per-agent skills — Configure defaultAgent.excludedTools and skillDirectories per agent
- Commands and UI elicitation — Node.js support for command execution and user input dialogs
- Blob attachment type — Inline base64 data support for image inputs
- Agent selection API — session.setModel() with mid-session model switching and reasoningEffort parameter
- Session metadata — session.getMetadata() exposes context, filtering, and context_changed events
- Custom system prompts — Fine-grained customize mode for system prompt overrides
- Per-session GitHub auth — GitHubToken option for session-level authentication
Fixed
- JSON-RPC pipe reads >64KB — Now handles short reads correctly across all SDKs
- Go session event handler unsubscription — Reliable cleanup and data race fixes
- Windows subprocess resolution — .cmd/.bat CLI executables now resolve properly
- Python E2E test flakiness — Added pytest-timeout and fixed race conditions
- .NET SDK package — Ensured no auto-update behavior
- MCP environment variables — Send envValueMode direct across all SDKs
- CallToolResult handling — Structured tool results now passed via RPC instead of stringified
- ObjectDisposedException — Fixed when disposing session after client.StopAsync()
- CLI console window — Hidden on Windows across all SDKs
- Timeout issues — Fixed CLI download and startup timeout handling
Breaking Changes
- Permission handler required — PermissionHandler must be provided on session creation; deny all permissions by default
- Tool execution event renamed — tool.execution_end renamed to tool.execution_complete
- Python minimum version bumped — Now requires Python 3.11+ (was 3.9+)
- autoRestart feature removed — Removed across all SDKs
- Python CopilotClient signature changed — __init__ now takes config objects instead of individual parameters
- Python session methods updated — send() and send_and_wait() signatures changed; create_session() and resume_session() now take parameters
- Go interface{} to any — Modernized Go type syntax
- Literal model type removed — Python SessionConfig now uses string instead of Literal
- copilot.types removed — Python no longer exports copilot.types module
Update via: npm install @github/copilot-sdk@0.3.0-preview.1 (Node.js), pip install github-copilot-sdk==0.3.0.preview1 (Python), go get github.com/github/copilot-sdk-go@v0.3.0-preview.1 (Go), or dotnet add package GitHub.Copilot --version 0.3.0-preview.1 (.NET)
Source: Copilot SDK