Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
dea514d
Fix timeout issue when downloading the exe file (#533)
MikeAlhayek Feb 23, 2026
eaf06cd
fix: replace execSync with execFileSync in docs validation (#505)
krukow Feb 23, 2026
0e6561d
Document Microsoft Foundry Local setup and usage (#461)
leestott Feb 23, 2026
99c7c52
fix: correct 'GithubToken' casing to 'GitHubToken' in .NET and Go (#541)
SteveSandersonMS Feb 23, 2026
5a9b475
chore(nodejs): bump @github/copilot from ^0.0.411 to ^0.0.414 (#542)
SteveSandersonMS Feb 23, 2026
f0909a7
[dotnet] Fix SendAndWaitAsync to throw OperationCanceledException on …
Copilot Feb 23, 2026
279f6c4
Require permission handler on session creation (#554)
SteveSandersonMS Feb 24, 2026
bce4de0
docs: fix inaccuracies in skills.md (#556)
patniko Feb 24, 2026
9d998fb
Add SDK support for agent selection and session compaction APIs (#544)
SteveSandersonMS Feb 25, 2026
388f2f3
Add permission checks for SDK-registered custom tools (#555)
SteveSandersonMS Feb 25, 2026
41c1068
Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.3.0 (#579)
dependabot[bot] Feb 25, 2026
f9144f1
Consolidate schedule for Dependabot updates (#582)
SteveSandersonMS Feb 25, 2026
20e5ce0
Python: remove hardcoded 30s default timeout from JsonRpcClient.reque…
SteveSandersonMS Feb 26, 2026
21a586d
docs: add missing context package in sample code (#566)
feici02 Feb 26, 2026
5a4f823
Fix Go client data races (#586)
chlowell Feb 27, 2026
35534c4
chore(python): Bump the oldest supported Python version to 3.11 (#561)
brettcannon Feb 27, 2026
9170468
chore(deps-dev): bump minimatch (#593)
dependabot[bot] Feb 27, 2026
4612a15
chore(deps-dev): bump hono (#595)
dependabot[bot] Feb 27, 2026
0e46b36
chore(deps): bump minimatch (#594)
dependabot[bot] Feb 27, 2026
8e61e9b
More e2e nodejs tests (#466)
friggeri Feb 27, 2026
23a9134
fix(python): use 'is not None' check for excluded_tools in session me…
patniko Feb 27, 2026
942a253
docs: Add OpenTelemetry instrumentation guide for Copilot SDK (#529)
tonybaloney Feb 27, 2026
fc63890
docs: fix OpenTelemetry guide to use correct SDK APIs (#597)
patniko Feb 27, 2026
9d942d4
feat(docs-validation): add hidden block directive and convert samples…
patniko Feb 27, 2026
d87af41
Restore package discovery for platform wheel builds (#601)
SteveSandersonMS Feb 27, 2026
117eaf8
Have `CopilotClient.stop()` raise an exception group instead of retur…
brettcannon Feb 27, 2026
58455ec
Add workflow to update @github/copilot dependency (#604)
patniko Feb 27, 2026
47cb899
Update @github/copilot to 0.0.420 (#605)
github-actions[bot] Feb 27, 2026
ed36a0a
chore: sync upstream main (28 commits)
github-actions[bot] Feb 27, 2026
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
25 changes: 11 additions & 14 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
@@ -1,34 +1,31 @@
version: 2
multi-ecosystem-groups:
all:
schedule:
interval: 'weekly'
updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
- package-ecosystem: 'devcontainers'
directory: '/'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
# Node.js dependencies
- package-ecosystem: 'npm'
directory: '/nodejs'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
- package-ecosystem: 'npm'
directory: '/test/harness'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
# Python dependencies
- package-ecosystem: 'pip'
directory: '/python'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
# Go dependencies
- package-ecosystem: 'gomod'
directory: '/go'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
# .NET dependencies
- package-ecosystem: 'nuget'
directory: '/dotnet'
schedule:
interval: 'weekly'
multi-ecosystem-group: 'all'
4 changes: 3 additions & 1 deletion .github/workflows/python-sdk-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
# Test the oldest supported Python version to make sure compatibility is maintained.
python-version: ["3.11"]
runs-on: ${{ matrix.os }}
defaults:
run:
Expand All @@ -46,7 +48,7 @@ jobs:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-python@v6
with:
python-version: "3.12"
python-version: ${{ matrix.python-version }}
- uses: actions/setup-node@v6
with:
node-version: "22"
Expand Down
117 changes: 117 additions & 0 deletions .github/workflows/update-copilot-dependency.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: "Update @github/copilot Dependency"

on:
workflow_dispatch:
inputs:
version:
description: 'Target version of @github/copilot (e.g. 0.0.420)'
required: true
type: string

permissions:
contents: write
pull-requests: write

jobs:
update:
name: "Update @github/copilot to ${{ inputs.version }}"
runs-on: ubuntu-latest
steps:
- name: Validate version input
env:
VERSION: ${{ inputs.version }}
run: |
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9._-]+)?$ ]]; then
echo "::error::Invalid version format '$VERSION'. Expected semver (e.g. 0.0.420)."
exit 1
fi

- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- uses: actions/setup-go@v5
with:
go-version: '1.22'

- uses: actions/setup-dotnet@v5
with:
dotnet-version: "8.0.x"

- name: Update @github/copilot in nodejs
env:
VERSION: ${{ inputs.version }}
working-directory: ./nodejs
run: npm install "@github/copilot@$VERSION"

- name: Update @github/copilot in test harness
env:
VERSION: ${{ inputs.version }}
working-directory: ./test/harness
run: npm install "@github/copilot@$VERSION"

- name: Refresh nodejs/samples lockfile
working-directory: ./nodejs/samples
run: npm install

- name: Install codegen dependencies
working-directory: ./scripts/codegen
run: npm ci

- name: Run codegen
working-directory: ./scripts/codegen
run: npm run generate

- name: Format generated code
run: |
cd nodejs && npx prettier --write "src/generated/**/*.ts"
cd ../dotnet && dotnet format src/GitHub.Copilot.SDK.csproj

- name: Create pull request
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ inputs.version }}
run: |
BRANCH="update-copilot-$VERSION"
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

if git rev-parse --verify "origin/$BRANCH" >/dev/null 2>&1; then
git checkout "$BRANCH"
git reset --hard HEAD
else
git checkout -b "$BRANCH"
fi

git add -A

if git diff --cached --quiet; then
echo "No changes detected; skipping commit and PR creation."
exit 0
fi

git commit -m "Update @github/copilot to $VERSION

- Updated nodejs and test harness dependencies
- Re-ran code generators
- Formatted generated code"
git push origin "$BRANCH" --force-with-lease

if gh pr view "$BRANCH" >/dev/null 2>&1; then
echo "Pull request for branch '$BRANCH' already exists; updated branch only."
else
gh pr create \
--title "Update @github/copilot to $VERSION" \
--body "Automated update of \`@github/copilot\` to version \`$VERSION\`.

### Changes
- Updated \`@github/copilot\` in \`nodejs/package.json\` and \`test/harness/package.json\`
- Re-ran all code generators (\`scripts/codegen\`)
- Formatted generated output

> Created by the **Update @github/copilot Dependency** workflow." \
--base main \
--head "$BRANCH"
fi
48 changes: 48 additions & 0 deletions docs/auth/byok.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ BYOK allows you to use the Copilot SDK with your own API keys from model provide
| Azure OpenAI / Azure AI Foundry | `"azure"` | Azure-hosted models |
| Anthropic | `"anthropic"` | Claude models |
| Ollama | `"openai"` | Local models via OpenAI-compatible API |
| Microsoft Foundry Local | `"openai"` | Run AI models locally on your device via OpenAI-compatible API |
| Other OpenAI-compatible | `"openai"` | vLLM, LiteLLM, etc. |

## Quick Start: Azure AI Foundry
Expand Down Expand Up @@ -250,6 +251,37 @@ provider: {
}
```

### Microsoft Foundry Local

[Microsoft Foundry Local](https://foundrylocal.ai) lets you run AI models locally on your own device with an OpenAI-compatible API. Install it via the Foundry Local CLI, then point the SDK at your local endpoint:

```typescript
provider: {
type: "openai",
baseUrl: "http://localhost:<PORT>/v1",
// No apiKey needed for local Foundry Local
}
```

> **Note:** Foundry Local starts on a **dynamic port** — the port is not fixed. Use `foundry service status` to confirm the port the service is currently listening on, then use that port in your `baseUrl`.
To get started with Foundry Local:

```bash
# Windows: Install Foundry Local CLI (requires winget)
winget install Microsoft.FoundryLocal

# macOS / Linux: see https://foundrylocal.ai for installation instructions
# List available models
foundry model list

# Run a model (starts the local server automatically)
foundry model run phi-4-mini

# Check the port the service is running on
foundry service status
```

### Anthropic

```typescript
Expand Down Expand Up @@ -305,6 +337,7 @@ Some Copilot features may behave differently with BYOK:
|----------|-------------|
| Azure AI Foundry | No Entra ID auth; must use API keys |
| Ollama | No API key; local only; model support varies |
| [Microsoft Foundry Local](https://foundrylocal.ai) | Local only; model availability depends on device hardware; no API key required |
| OpenAI | Subject to OpenAI rate limits and quotas |

## Troubleshooting
Expand Down Expand Up @@ -368,6 +401,21 @@ curl http://localhost:11434/v1/models
ollama serve
```

### Connection Refused (Foundry Local)

Foundry Local uses a dynamic port that may change between restarts. Confirm the active port:

```bash
# Check the service status and port
foundry service status
```

Update your `baseUrl` to match the port shown in the output. If the service is not running, start a model to launch it:

```bash
foundry model run phi-4-mini
```

### Authentication Failed

1. Verify your API key is correct and not expired
Expand Down
Loading
Loading