Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# ---------------------------------------------------------------
# To update the sha:
# https://github.com/github/gh-base-image/pkgs/container/gh-base-image%2Fgh-base-noble
FROM ghcr.io/github/gh-base-image/gh-base-noble:20260625-083609-gedf42de01@sha256:bf0a2f43957531d73dcb2abceabf2228560f1f67d14e23f5bb0c0ccbabd77dee AS base
FROM ghcr.io/github/gh-base-image/gh-base-noble:20260630-205522-g4a33dc6bb@sha256:2b8edd7da1718e2e9c25b98fd31dae58e57e756ef19842eac212255765cf4ada AS base

# Install curl for Node install and determining the early access branch
# Install git for cloning docs-early-access & translations repos
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ Each paid plan includes the following:

Your base credits are used first. If you go beyond your base credits, the flex allotment is applied automatically at the same rates across your IDE, {% data variables.product.prodname_dotcom_the_website %}, and {% data variables.copilot.copilot_cli_short %}. No additional setup is required. Your usage dashboard shows your available allowance and what you've used.

Included {% data variables.product.prodname_ai_credits_short %} do not carry over between months. Unused credits are forfeited, and your allowance resets to the full monthly amount at 00:00:00 UTC on the first day of each calendar month. This reset date is fixed and does not change based on your subscription billing date. See [AUTOTITLE](/billing/concepts/billing-cycles#billing-cycles-for-metered-products).

### {% data variables.product.prodname_ai_credits %} allowance by plan

The following table shows what's included with each paid plan.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ A user's included {% data variables.product.prodname_ai_credits_short %} are poo

Adding licenses mid-cycle increases the pool immediately. Removing licenses mid-cycle doesn't shrink the pool: the decrease is reflected at the start of the next billing cycle.

Included {% data variables.product.prodname_ai_credits_short %} do not carry over between months. Unused credits are forfeited, and the pool resets to the full monthly amount at 00:00:00 UTC on the first day of each calendar month. This reset date is fixed and does not change based on when licenses are added, removed, or billed. See [AUTOTITLE](/billing/concepts/billing-cycles#billing-cycles-for-metered-products).

<!-- expires 2026-09-01 -->

### Promotional amounts for existing customers
Expand Down
4 changes: 2 additions & 2 deletions content/copilot/concepts/context/repository-indexing.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ Once an index has been created for a repository, it can be used by:

> [!TIP] There is no limit to how many repositories you can index.

## Semantic indexing for non-GitHub repositories
## Semantic indexing for non-{% data variables.product.github %} repositories

{% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %} can use semantic indexing for workspace files from repositories hosted outside {% data variables.product.github %}, such as GitLab and local repositories.
{% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %} can use semantic indexing for workspace files from repositories hosted outside {% data variables.product.github %}, such as GitLab and local repositories. This feature uploads your data to {% data variables.product.github %} to make it searchable.

This feature is controlled by policy and is disabled by default. For organizations and enterprises with {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %}, an enterprise owner or organization owner must explicitly set the `Semantic indexing for non-GitHub repositories` policy to **Enabled** before members can use it. If the policy remains **Unconfigured**, the feature stays unavailable. See:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ Use the /frontend-design skill to create a responsive navigation bar in React.

* **Remove skills:** to remove a skill that you have added directly—not via a plugin—use the command `/skills remove SKILL-DIRECTORY`. To remove skills added as part of a plugin you must manage the plugin itself. Use the `info` subcommand to find out which plugin a skill came from.

The `/skills` commands above run inside an interactive session. The same list, add, and remove operations are also available from the terminal command line by using the `copilot skill` subcommand. This is useful for scripting or for setting up skills before you start a session. For example, run `copilot skill list` to list your skills, or `copilot skill add <FILE | URL | DIRECTORY>` to add one. For the full set of subcommands for {% data variables.copilot.copilot_cli_short %}, see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference).

{% data reusables.copilot.skills-compared %}

To learn more about how skills differ from other customization features, see [AUTOTITLE](/copilot/concepts/agents/copilot-cli/comparing-cli-features).
4 changes: 2 additions & 2 deletions content/copilot/how-tos/copilot-sdk/auth/byok.md
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ func main() {
Name: "My Custom Model",
Capabilities: copilot.ModelCapabilities{
Supports: copilot.ModelSupports{Vision: false, ReasoningEffort: false},
Limits: copilot.ModelLimits{MaxContextWindowTokens: 128000},
Limits: copilot.ModelLimits{MaxContextWindowTokens: copilot.Int(128000)},
},
},
}, nil
Expand Down Expand Up @@ -479,7 +479,7 @@ When using BYOK, be aware of these limitations:

### Identity limitations

BYOK authentication uses **static credentials only**.
BYOK authentication uses **static credentials only**.

You must use an API key or static bearer token that you manage yourself.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
title: Cloud sessions
shortTitle: Cloud Sessions
intro: >-
Run Copilot sessions on GitHub-hosted compute through Mission Control instead
of local CLI sessions.
Cloud sessions run Copilot work on GitHub-hosted compute through Mission
Control. Use them when your app should create a session that executes remotely
instead of starting a local Copilot CLI session on the user's machine or your
server.
versions:
fpt: '*'
ghec: '*'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ title: Custom agents and sub-agent orchestration
shortTitle: Custom Agents
intro: >-
Define specialized agents with scoped tools and prompts, then let Copilot
orchestrate them as sub-agents within a single session.
orchestrate them as sub-agents within a single session. For dispatching
multiple sub-agents in parallel, see [AUTOTITLE](/copilot/how-tos/copilot-sdk/features/fleet-mode).
versions:
fpt: '*'
ghec: '*'
Expand Down
13 changes: 9 additions & 4 deletions content/copilot/how-tos/copilot-sdk/features/fleet-mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@
title: Fleet mode
shortTitle: Fleet Mode
intro: >-
Use fleet mode to split work across multiple sub-agents and combine their
results in one parent session.
Fleet mode is Copilot's parallel orchestration pattern for work that can be
split across independent sub-agents. In the runtime research notes, fleet mode
is described as "the runtime's built-in pattern for dispatching multiple
sub-agents in parallel via the `task` tool, with SQL todos as the shared
coordination state." Use it when one parent session should coordinate several
workers, collect their results, and continue the conversation with the
combined context.
versions:
fpt: '*'
ghec: '*'
Expand Down Expand Up @@ -59,7 +64,7 @@ if (result.started) {
{% codetab python %}

```python
from copilot.generated.rpc import FleetStartRequest
from copilot.rpc import FleetStartRequest

result = await session.rpc.fleet.start(
FleetStartRequest(
Expand Down Expand Up @@ -151,7 +156,7 @@ if (result.Started)
{% codetab rust %}

```rust
use github_copilot_sdk::generated::api_types::FleetStartRequest;
use github_copilot_sdk::rpc::FleetStartRequest;

let result = session
.rpc()
Expand Down
4 changes: 2 additions & 2 deletions content/copilot/how-tos/copilot-sdk/features/image-input.md
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ func main() {
Prompt: "Describe what you see in this image",
Attachments: []copilot.Attachment{
&copilot.AttachmentBlob{
Data: base64ImageData,
Data: &base64ImageData,
MIMEType: mimeType,
DisplayName: &displayName,
},
Expand All @@ -342,7 +342,7 @@ session.Send(ctx, copilot.MessageOptions{
Prompt: "Describe what you see in this image",
Attachments: []copilot.Attachment{
&copilot.AttachmentBlob{
Data: base64ImageData, // base64-encoded string
Data: &base64ImageData, // base64-encoded string
MIMEType: mimeType,
DisplayName: &displayName,
},
Expand Down
2 changes: 1 addition & 1 deletion content/copilot/how-tos/copilot-sdk/features/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ func main() {
"my-local-server": copilot.MCPStdioServerConfig{
Command: "node",
Args: []string{"./mcp-server.js"},
Tools: &[]string{"*"},
Tools: []string{"*"},
},
},
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
title: Plugin directories
shortTitle: Plugin Directories
intro: >-
Use plugin directories to load skills, hooks, MCP servers, custom agents, and
LSP settings from a single manifest.
A **plugin** is a directory that bundles SDK extensions — skills, hooks, MCP
servers, custom agents, and LSP configuration — behind a single manifest.
Pointing the SDK at a plugin directory loads everything the plugin
contributes, so you can ship reusable capability packs without writing
per-extension wiring in every host application.
versions:
fpt: '*'
ghec: '*'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ session.on("assistant.message_delta", (event) => {

```python
from copilot import CopilotClient
from copilot.generated.session_events import SessionEventType
from copilot.session_events import SessionEventType

client = CopilotClient()

Expand All @@ -79,7 +79,7 @@ def handle(event):
```

```python
from copilot.generated.session_events import SessionEventType
from copilot.session_events import SessionEventType

def handle(event):
if event.type == SessionEventType.ASSISTANT_MESSAGE_DELTA:
Expand Down
33 changes: 19 additions & 14 deletions content/copilot/how-tos/copilot-sdk/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Copilot: In Tokyo it's 75°F and sunny. Great day to be outside!

Before you begin, make sure you have:

* **GitHub Copilot CLI** installed and authenticated (the Node.js, Python, and .NET SDKs bundle the CLI automatically—see [AUTOTITLE](/copilot/how-tos/copilot-sdk/setup/bundled-cli). Required for Go, Java, and Rust unless using their application-level CLI bundling features.)
* **GitHub Copilot CLI** installed and authenticated (the Node.js, Python, and .NET SDKs provide the CLI automatically—see [AUTOTITLE](/copilot/how-tos/copilot-sdk/setup/bundled-cli). Required for Go, Java, and Rust unless using their application-level CLI bundling features.)
* Your preferred language runtime:
* **Node.js** 20+ or **Python** 3.11+ or **Go** 1.24+ or **Rust** 1.94+ or **Java** 17+ or **.NET** 8.0+

Expand Down Expand Up @@ -408,7 +408,7 @@ import asyncio
import sys
from copilot import CopilotClient
from copilot.session import PermissionHandler
from copilot.generated.session_events import SessionEventType
from copilot.session_events import SessionEventType

async def main():
client = CopilotClient()
Expand Down Expand Up @@ -652,7 +652,7 @@ unsubscribeIdle();

```python
from copilot import CopilotClient, PermissionDecisionApproveOnce
from copilot.generated.session_events import SessionEvent, SessionEventType
from copilot.session_events import SessionEvent, SessionEventType

client = CopilotClient()

Expand Down Expand Up @@ -920,7 +920,7 @@ import sys
from copilot import CopilotClient
from copilot.session import PermissionHandler
from copilot.tools import define_tool
from copilot.generated.session_events import SessionEventType
from copilot.session_events import SessionEventType
from pydantic import BaseModel, Field

# Define the parameters for the tool using Pydantic
Expand Down Expand Up @@ -1336,7 +1336,7 @@ import sys
from copilot import CopilotClient
from copilot.session import PermissionHandler
from copilot.tools import define_tool
from copilot.generated.session_events import SessionEventType
from copilot.session_events import SessionEventType
from pydantic import BaseModel, Field

class GetWeatherParams(BaseModel):
Expand Down Expand Up @@ -1870,11 +1870,13 @@ const session = await client.createSession({
});
```

Available section IDs: `identity`, `tone`, `tool_efficiency`, `environment_context`, `code_change_rules`, `guidelines`, `safety`, `tool_instructions`, `custom_instructions`, `runtime_instructions`, `last_instructions`.
Available section IDs: `preamble`, `identity`, `tone`, `tool_efficiency`, `environment_context`, `code_change_rules`, `guidelines`, `safety`, `tool_instructions`, `custom_instructions`, `runtime_instructions`, `last_instructions`.

Each override supports four actions: `replace`, `remove`, `append`, and `prepend`. Unknown section IDs are handled gracefully—content is appended to additional instructions and a warning is emitted; `remove` on unknown sections is silently ignored.
`identity` and `tool_instructions` are section *groups*: they target a collection of related sub-sections as a unit. Use `preamble` to target just the identity preamble without affecting its sibling sub-sections.

See the language-specific SDK READMEs for examples in [TypeScript](https://github.com/github/copilot-sdk/tree/main/nodejs/README.md?utm_source=docs-copilot-sdk-typescript-readme&utm_medium=docs&utm_campaign=msbuild-2026), [Python](https://github.com/github/copilot-sdk/tree/main/python/README.md?utm_source=docs-copilot-sdk-python-readme&utm_medium=docs&utm_campaign=msbuild-2026), [Go](https://github.com/github/copilot-sdk/tree/main/go/README.md?utm_source=docs-copilot-sdk-go-readme&utm_medium=docs&utm_campaign=msbuild-2026), [Rust](https://github.com/github/copilot-sdk/tree/main/rust/README.md?utm_source=docs-copilot-sdk-rust-readme&utm_medium=docs&utm_campaign=msbuild-2026), [Java](https://github.com/github/copilot-sdk/tree/main/java/README.md?utm_source=docs-copilot-sdk-java-readme&utm_medium=docs&utm_campaign=msbuild-2026), and [C#](https://github.com/github/copilot-sdk/tree/main/dotnet/README.md?utm_source=docs-copilot-sdk-csharp-readme&utm_medium=docs&utm_campaign=msbuild-2026).
Each override supports five actions: `replace`, `remove`, `append`, `prepend`, and `preserve`. The `preserve` action is a no-op that opts an individually-addressable section out of a group-level `remove` (for example, keep `tone` when removing the `identity` group). Unknown section IDs are handled gracefully: content from `replace`/`append`/`prepend` overrides is appended to additional instructions, and `remove` overrides are silently ignored.

See the language-specific SDK READMEs for examples in [TypeScript](https://github.com/github/copilot-sdk/tree/main/nodejs/README.md), [Python](https://github.com/github/copilot-sdk/tree/main/python/README.md), [Go](https://github.com/github/copilot-sdk/tree/main/go/README.md), [Rust](https://github.com/github/copilot-sdk/tree/main/rust/README.md), [Java](https://github.com/github/copilot-sdk/tree/main/java/README.md), and [C#](https://github.com/github/copilot-sdk/tree/main/dotnet/README.md).

## Connecting to an external CLI server

Expand Down Expand Up @@ -2172,11 +2174,14 @@ Dependency: `io.opentelemetry:opentelemetry-api`
| Option | Node.js | Python | Go | Rust | Java | .NET | Description |
|---|---|---|---|---|---|---|---|
| OTLP endpoint | `otlpEndpoint` | `otlp_endpoint` | `OTLPEndpoint` | `otlp_endpoint` | `otlpEndpoint` | `OtlpEndpoint` | OTLP HTTP endpoint URL |
| OTLP protocol | `otlpProtocol` | `otlp_protocol` | `OTLPProtocol` | `otlp_protocol` | `otlpProtocol` | `OtlpProtocol` | OTLP HTTP protocol for all signals: `"http/json"` or `"http/protobuf"` |
| File path | `filePath` | `file_path` | `FilePath` | `file_path` | `filePath` | `FilePath` | File path for JSON-lines trace output |
| Exporter type | `exporterType` | `exporter_type` | `ExporterType` | `exporter_type` | `exporterType` | `ExporterType` | `"otlp-http"` or `"file"` |
| Source name | `sourceName` | `source_name` | `SourceName` | `source_name` | `sourceName` | `SourceName` | Instrumentation scope name |
| Capture content | `captureContent` | `capture_content` | `CaptureContent` | `capture_content` | `captureContent` | `CaptureContent` | Whether to capture message content |

The OTLP protocol field configures the CLI's `"otlp-http"` exporter for all signals. Leave it unset to use the CLI default, or set it to `"http/protobuf"` to export protobuf over HTTP.

### File export

To write traces to a local file instead of an OTLP endpoint:
Expand Down Expand Up @@ -2205,12 +2210,12 @@ Trace context is propagated automatically—no manual instrumentation is needed:

* [AUTOTITLE](/copilot/how-tos/copilot-sdk/auth/authenticate) - GitHub OAuth, environment variables, and BYOK
* [AUTOTITLE](/copilot/how-tos/copilot-sdk/auth/byok) - Use your own API keys from Azure AI Foundry, OpenAI, etc.
* [Node.js SDK Reference](https://github.com/github/copilot-sdk/tree/main/nodejs/README.md?utm_source=docs-copilot-sdk-nodejs-reference&utm_medium=docs&utm_campaign=msbuild-2026)
* [Python SDK Reference](https://github.com/github/copilot-sdk/tree/main/python/README.md?utm_source=docs-copilot-sdk-python-reference&utm_medium=docs&utm_campaign=msbuild-2026)
* [Go SDK Reference](https://github.com/github/copilot-sdk/tree/main/go/README.md?utm_source=docs-copilot-sdk-go-reference&utm_medium=docs&utm_campaign=msbuild-2026)
* [Rust SDK Reference](https://github.com/github/copilot-sdk/tree/main/rust/README.md?utm_source=docs-copilot-sdk-rust-reference&utm_medium=docs&utm_campaign=msbuild-2026)
* [.NET SDK Reference](https://github.com/github/copilot-sdk/tree/main/dotnet/README.md?utm_source=docs-copilot-sdk-dotnet-reference&utm_medium=docs&utm_campaign=msbuild-2026)
* [Java SDK Reference](https://github.com/github/copilot-sdk/tree/main/java/README.md?utm_source=docs-copilot-sdk-java-reference&utm_medium=docs&utm_campaign=msbuild-2026)
* [Node.js SDK Reference](https://github.com/github/copilot-sdk/tree/main/nodejs/README.md)
* [Python SDK Reference](https://github.com/github/copilot-sdk/tree/main/python/README.md)
* [Go SDK Reference](https://github.com/github/copilot-sdk/tree/main/go/README.md)
* [Rust SDK Reference](https://github.com/github/copilot-sdk/tree/main/rust/README.md)
* [.NET SDK Reference](https://github.com/github/copilot-sdk/tree/main/dotnet/README.md)
* [Java SDK Reference](https://github.com/github/copilot-sdk/tree/main/java/README.md)
* [AUTOTITLE](/copilot/how-tos/copilot-sdk/features/mcp) - Integrate external tools via Model Context Protocol
* [GitHub MCP Server Documentation](https://github.com/github/github-mcp-server)
* [MCP Servers Directory](https://github.com/modelcontextprotocol/servers) - Explore more MCP servers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,14 @@ let client = Client::start(ClientOptions::new()
| Option | Node.js | Python | Go | .NET | Java | Rust | Description |
|---|---|---|---|---|---|---|---|
| OTLP endpoint | `otlpEndpoint` | `otlp_endpoint` | `OTLPEndpoint` | `OtlpEndpoint` | `otlpEndpoint` | `otlp_endpoint` | OTLP HTTP endpoint URL |
| OTLP protocol | `otlpProtocol` | `otlp_protocol` | `OTLPProtocol` | `OtlpProtocol` | `otlpProtocol` | `otlp_protocol` | OTLP HTTP protocol for all signals: `"http/json"` or `"http/protobuf"` |
| File path | `filePath` | `file_path` | `FilePath` | `FilePath` | `filePath` | `file_path` | File path for JSON-lines trace output |
| Exporter type | `exporterType` | `exporter_type` | `ExporterType` | `ExporterType` | `exporterType` | `exporter_type` | `"otlp-http"` or `"file"` |
| Source name | `sourceName` | `source_name` | `SourceName` | `SourceName` | `sourceName` | `source_name` | Instrumentation scope name |
| Capture content | `captureContent` | `capture_content` | `CaptureContent` | `CaptureContent` | `captureContent` | `capture_content` | Whether to capture message content |

The OTLP protocol field configures the CLI's `"otlp-http"` exporter for all signals. Leave it unset to use the CLI default, or set it to `"http/protobuf"` to export protobuf over HTTP.

### Trace context propagation

> **Most users don't need this.** The `TelemetryConfig` above is all you need to collect traces from the CLI. The trace context propagation described in this section is an **advanced feature** for applications that create their own OpenTelemetry spans and want them to appear in the **same distributed trace** as the CLI's spans.
Expand Down
Loading
Loading