Copilot SDK v0.3.0: Session Auth, Agent Tools, MCP Utils
Copilot SDK v0.3.0 ships per-session auth, agent-level tool control, MCP utilities, and a comprehensive naming cleanup across all four SDKs. 39 param renames, 27 result renames, 63 event type renames — breaking changes ahead of GA.
TL;DR
- Per-session GitHub authentication — different users/quotas on same CLI server
- Agent-level tool visibility and skill control for orchestrator patterns
- Massive naming cleanup across all four SDKs ahead of GA (39 param renames, 27 result renames, 63 event type renames)
- Breaking: `githubToken` → `gitHubToken`, `*Params` → `*Request`, session event types restructured
New
- Per-session GitHub authentication — Sessions now carry their own GitHub identity independent of client-level auth, enabling different users and quota limits on the same CLI server.
- Per-agent tool visibility — New `defaultAgent.excludedTools` option hides tools from the default agent while keeping them available to sub-agents for orchestrator patterns.
- Per-agent skills — Custom agents can declare `skills: string[]` to eagerly inject specific skills at startup; opt-in and non-inherited.
- Sub-agent streaming content — `assistant.message_delta` and `assistant.reasoning_delta` events now delivered for sub-agents with `agentId` field; filter by agent or disable with `includeSubAgentStreamingEvents: false`.
- Session idle timeout — New `sessionIdleTimeoutSeconds` client option configures automatic cleanup after inactivity (previously hardcoded to 30 minutes).
- Custom HTTP headers for BYOK providers — Provider headers and per-message `requestHeaders` now passable through `createSession`, `resumeSession`, and `send`.
- MCP CallToolResult conversion — New `convertMcpCallToolResult()` utility converts MCP tool results to SDK `ToolResultObject` format for easy MCP server integration.
- ProviderConfig exported — `ProviderConfig` now re-exported from Node.js and Python entry points, eliminating need to duplicate types locally.
- New RPC methods — Low-level access to skills config, MCP management, permissions, instructions, usage metrics, and session naming via `session.rpc.*`.
Changed
- Scoped permission approvals — Permission handlers can now return `"approve-for-session"` (session-scoped rules) or `"approve-for-location"` (workspace-persisted). Approval vocabulary clarified: `"approved"` → `"approve-once"`, `"denied-interactively-by-user"` → `"reject"`, `"denied-no-approval-rule-and-could-not-request-from-user"` → `"user-not-available"`.
- Dedicated session event types — Each session event now has individually named `*Event` interface and `*Data` type for direct import; runtime JSON shape unchanged.
- MCP server config types renamed — `MCPLocalServerConfig` → `MCPStdioServerConfig`, `MCPRemoteServerConfig` → `MCPHTTPServerConfig`; `type` field changes from `"local"`/`"remote"` to `"stdio"`/`"http"`.
- SessionFs provider API improved — Now uses idiomatic interface with plain arguments and error-throwing instead of RPC-shaped parameter objects; supply via `createSessionFsHandler` callback.
- githubToken casing corrected — `githubToken`/`GithubToken` → `gitHubToken`/`GitHubToken` across all SDKs for GitHub branding consistency.
- Sub-agent streaming deltas now default-on — Streaming sessions receive sub-agent deltas by default; filter by `event.agentId` or set `includeSubAgentStreamingEvents: false` to suppress.
- Model capabilities normalization — Models omitting `supports` or `limits` fields no longer cause runtime errors.
- .NET richer typing — `integer` → `long`, `date-time` → `DateTimeOffset`, `uuid` → `Guid`, `duration` → `TimeSpan`; data annotations added.
- .NET deprecated APIs annotated — `[Obsolete]` attributes with descriptive messages.
Breaking Changes
- Type naming overhaul — 39 `*Params` types renamed to `*Request`, 27 result types simplified (e.g., `SessionSkillsListResult` → `SkillList`), 63 session event sub-types flattened and prefixed consistently. If your code imports these types by name or uses `Parameters<>` / `ReturnType<>`, update references. Structural access unaffected.
- Empty types removed — 32 empty `{}` types (void params/results) eliminated from Node.js; Go, Python, and .NET had additional void result types also removed.
- Sub-agent streaming deltas now included by default — If your code renders all deltas without checking source, sub-agent content will interleave with main agent output. Filter by `event.agentId` or disable with `includeSubAgentStreamingEvents: false`.
- SessionFs provider interface changed — Old RPC-shaped interface with parameter objects and error-result returns replaced with idiomatic interface using plain arguments and error-throwing.
Update via npm install @github/copilot-sdk@0.3.0 (Node.js), pip install github-copilot-sdk==0.3.0 (Python), or equivalent for Go/.NET. SDK status now public preview.
Source: Copilot SDK