High Risk:This skill has significant security concerns. Review the findings below before installing.

copilot-sdk

Caution·Scanned 2/18/2026

Dangerous skill: Documents the GitHub Copilot SDK for building agents but permits powerful operations. It exposes execute shell commands, writes to ~/.copilot/ and .github/agents/, and references env vars such as $COPILOT_MCP_API_KEY and tools: ["*"].

by intellectronica·v6c81c34·22.0 KB·118 installs
Scanned from main at 6c81c34 · Transparency log ↗
$ vett add intellectronica/agent-skills/copilot-sdkReview security findings before installing

GitHub Copilot SDK

Overview

The GitHub Copilot SDK is a multi-platform agent runtime that embeds Copilot's agentic workflows into applications. It exposes the same engine behind Copilot CLI, enabling programmatic invocation without requiring custom orchestration development.

Status: Technical Preview (suitable for development and testing)

Supported Languages: TypeScript/Node.js, Python, Go, .NET

Primary Documentation

Language-Specific SDK Docs

CLI and Configuration Docs


Prerequisites

  1. GitHub Copilot Subscription - Pro, Pro+, Business, or Enterprise
  2. GitHub Copilot CLI - Installed and authenticated (copilot --version)
  3. Runtime: Node.js 18+, Python 3.8+, Go 1.21+, or .NET 8.0+

Installation

LanguageCommand
TypeScript/Node.jsnpm install @github/copilot-sdk
Pythonpip install github-copilot-sdk
Gogo get github.com/github/copilot-sdk/go
.NETdotnet add package GitHub.Copilot.SDK

Architecture

Application → SDK Client → JSON-RPC → Copilot CLI (server mode)

The SDK manages CLI lifecycle automatically. External server connections supported via cliUrl / cli_url.


Quick Start (TypeScript)

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
await client.start();

const session = await client.createSession({ model: "gpt-5" });

// Register handler BEFORE send()
session.on((event) => {
  if (event.type === "assistant.message") {
    console.log(event.data.content);
  }
});

await session.send({ prompt: "What is 2 + 2?" });

await session.destroy();
await client.stop();

Critical: Register event handlers before calling send() to capture all events.

For complete examples in all languages, see references/working-examples.md.


Core Concepts

Client

Main entry point. Manages CLI server lifecycle and session creation.

Operations: start(), stop(), createSession(), resumeSession()

Config: cliPath, cliUrl, port, useStdio, autoStart, autoRestart

Session

Individual conversation context with message history.

Operations: send(), sendAndWait(), on(), abort(), getMessages(), destroy()

Config: model, streaming, tools, systemMessage

Events

Key events during processing:

EventPurpose
assistant.messageComplete response
assistant.message_deltaStreaming chunk
session.idleReady for next prompt
tool.execution_start/endTool invocations

For full event lifecycle and SessionEvent structure, see references/event-system.md.

Streaming

  • streaming: false (default) - Content arrives all at once
  • streaming: true - Content arrives incrementally via assistant.message_delta

Final assistant.message always fires regardless of streaming setting.


Available Models

See Supported AI Models for full list.

ProviderModel IDNotes
OpenAIgpt-4.1, gpt-5, gpt-5-miniIncluded
OpenAIgpt-5.1, gpt-5.1-codex, gpt-5.2Premium
Anthropicclaude-sonnet-4.5Premium (CLI default)
Anthropicclaude-opus-4.5Premium (3× multiplier)
Googlegemini-3-pro-previewPremium

Custom Tools

TypeScript (Zod):

const tool = defineTool("lookup_issue", {
  description: "Fetch issue details",
  parameters: z.object({ id: z.string() }),
  handler: async ({ id }) => fetchIssue(id),
});

Python (Pydantic):

@define_tool(description="Fetch issue details")
async def lookup_issue(params: IssueParams) -> dict:
    return fetch_issue(params.id)

For complete tool examples in all languages, see references/working-examples.md.


Language Conventions

ConceptTypeScriptPythonGo.NET
Create sessioncreateSession()create_session()CreateSession()CreateSessionAsync()
Delta contentdeltaContentdelta_contentDeltaContentDeltaContent

For full conventions table, see references/event-system.md.


CLI Configuration

Config stored in ~/.copilot/:

  • config.json - General configuration
  • mcp-config.json - MCP server definitions

For custom agents and MCP setup, see references/cli-agents-mcp.md.


Troubleshooting

ProblemSolution
Events fire but content emptyUse event.data.content, not event.content
Handler never firesRegister before send()
Python enum issuesUse event.type.value
Go nil pointerCheck != nil before dereferencing

For debugging techniques, see references/troubleshooting.md.


Skill References

Detailed documentation in this skill:

  • references/working-examples.md - Complete examples for all languages, custom tools
  • references/event-system.md - Event lifecycle, SessionEvent structure, language conventions
  • references/troubleshooting.md - Common issues, debugging techniques
  • references/cli-agents-mcp.md - CLI configuration, custom agents, MCP server setup

Additional Resources